众所周知,中文环境下(VS2010 C++工程编码为多字节编码),在使用1.8.0版本以后的GDAL打开中文路径下的影像文件(如GeoTiff文件)时,

需对中文文件路径做特殊处理,有2种方法:(我使用的GDAL库添加了HDF4、HDF5格式支持)

(1)临时设置GDAL为本机编码环境

GDALAllRegister();
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");//设置为非UTF-8编码
GDALDataset* modisDataset = (GDALDataset*) GDALOpen("D:\\bigData\\hdf\\天天\\MOD04_L2.A2012001.0320.051.2012001212607.hdf", GA_ReadOnly);
/*Open HDF Success*/

(2)将多字节编码的中文路径转为UTF-8编码,再传给GDAL

char* pszHDFSource = local_to_utf8("D:\\bigData\\hdf\\天天\\MOD04_L2.A2012001.0320.051.2012001212607.hdf");
//UTF8 encoding pszHDFSource is D:\bigData\hdf\澶╁ぉ\MOD04_L2.A2012001.0320.051.2012001212607.hdf
GDALAllRegister();
GDALDataset* modisDataset = (GDALDataset*) GDALOpen(pszHDFSource, GA_ReadOnly);
/*Open HDF Failed*/

今天写了一个从MODIS HDF格式数据中提取子数据集到GeoTiff文件的小工具,在打开中文路径下的HDF文件时遇到一个比较奇怪的问题:

p1.使用第一种方法时,可以打开中文路径下的GeoTiff、HDF数据文件,也可以向中文路径下写出GeoTiff数据文件;

p2.使用第二种方法时,可以打开中文路径下的GeoTiff数据文件,也可以向中文路径下写出GeoTiff数据文件,但是无法打开中文路径下的HDF数据文件;

现象1说明上述两种中文路径解决方法不等价;现象2说明我们自己写的local_to_utf8()函数是没有问题的,问题可能出在GDAL与HDF库的交互过程中。

原因猜测:GDAL在调用HDF库时,是否对路径编码做了改变?或者HDF库接收到非本机编码的路径后,是否又将其转为了本机编码或者其他格式的编码?

又或者在编码转换过程中出现了什么差错?

由于我并没有去看HDF的源码,因此上述猜测可能并不准确,希望有人遇到这样问题的人可以细致分析和研究一下。

GDAL打开HDF格式时遇到的中文路径问题(未解决)的更多相关文章

  1. svn不支持中文路径问题的解决

    作者:朱金灿 来源:http://blog.csdn.net/clever101 svn的授权文件authz默认是不支持中文路径的,因此在精确控制中文文件夹的授权时往往会出错.要解决这个问题,需要用U ...

  2. [GDAL]读取HDF格式的calipso数据

    探测地球云层分布的CloudSat和CALIPSO卫星 http://www.nasa.gov/mission_pages/calipso/main/index.html http://www.nas ...

  3. python2含有中文路径报错解决办法[\xe4\xbf\xa1\xe6\x81\xaf]

    如图所示 百度的解决办法大多数是针对python3版本的,在脚本开头加# -*- coding:utf-8 -*-,但是python2版本加了编码格式,还是报错,具体解决办法是:path =unico ...

  4. GDAL打开mdb文件失败解决方法

    使用GDAL打开mdb文件时提示下面错误信息: ERROR 1: Unable to initialize ODBC connection to DSN for DRIVER=Microsoft Ac ...

  5. 使用C#版本的gdal库打开hdf文件

    作者:朱金灿 来源:http://blog.csdn.net/clever101 最近应同事的请求帮忙研究下使用C#版的gdal库读取hdf文件,今天算是有一点成果,特地做一些记录. 首先是编译C#版 ...

  6. gdal中文路径无法打开问题

    在C#中使用OGR读写矢量数据时,需要引用“using OSGeo.OGR;”. 同时为了处理中文路径和中文字段,需要在开始设置下面两个属性,代码如下: //为了支持中文路径,请添加下面这句代码(大多 ...

  7. QGis、Gdal本地中文路径问题

    编译qgis完整项目后,由于Gdal库的原因,中文路径下通过添加矢量数据中数据库中是没有OGR的Oracle数据库功能的: 最开始打算通过重新编译gadl库从内部支持中文的(有成功的麻烦也请告诉我), ...

  8. 浅析GDAL库C#版本支持中文路径问题

    GDAL库对于C#的支持问题还是蛮多的,对于中文路径的支持就是其中之一(另一个就是通过OGR库获取图形的坐标信息). 关于C#支持中文路径,看过我之前博客的应该都不陌生,如果使用的是我修改过的GDAL ...

  9. GDAL添加ECW格式支持

    目录 GDAL添加ECW格式支持 ECW 下载ECW JPEG SDK 在Unix平台构建支持ECW的GDAL 二进制ECW SDK和GCC >= 5.1 在Linux上构建的教程 在Windo ...

随机推荐

  1. [Umbraco] 熟悉管理页面

    登录到umbraco管理界面后,发现其后台管理页很简洁 首页看到左侧部分是一个Content和Sections,右侧是管理区域 介绍各个Sections代表的含义: "Content&quo ...

  2. oracle 异常关闭操作 导致数据库无法正常关闭 也无法启动

    场景描述: 在关闭数据库的时候,命令没有打全,导致数据库没有正常关闭 解决办法: 重新建立个连接,然后切换到oracle用户 执行强制关闭数据库: OK 问题解决,不过生产环境 还是不推荐 shutd ...

  3. Linux下dmesg命令处理故障和收集系统信息的7种用法

    目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...

  4. JavaScript初探一

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  5. scala-02-基本数据类型-string-分支循环

    一, 基本数据类型 1, scala的数据类型和java类似, 不同的是scala中所有的类型都是引用类型的 Byte Short Int Long Char Float Double String ...

  6. Conditional特性用法

    说明:根据预处理标识符执行方法.Conditional 特性是 ConditionalAttribute 的别名,可应用于方法或属性类.相对于#if和#endif,更灵活更简洁和不易出错. 例如: # ...

  7. Python虚拟环境工具-Virtualenv 介绍及部署记录

    在开发Python应用程序时,系统默认的Python版本可能会不兼容这个应用程序, 如果同时开发多个应用程序, 可能会用到好几个版本的python环境, 这种情况下,每个应用可能需要各自拥有一套&qu ...

  8. Golang数组Array

    数组Array 定义数组的格式:var [n], n>0 package main import ( "fmt" ) func main() { //数组的长度也是类型的一部 ...

  9. Direct2D教程I——简介及首个例子

    在博客园里,系统的Direct2D的教程比较少,只有“万一”写了一个关于Direct2D的系列(Delphi 2009).于是,仿照其系列,写一个在VS下的Direct2D系列教程. 博客园中的高手还 ...

  10. 干货 unity小贴士

    3.以Y轴为依据进行Sprite排序对于2D游戏,将Transparency Sort Mode (Edit > Project Settings > Graphics ) 设置为Cust ...