环境说明:
1、Win10企业版、64位;
2、VS2012旗舰版;
3、GDAL1.9.2
GADL编译
1、解压GDAL压缩包至F:GDALgdal-1.9.2;
2、设置GDAL编译后安装目录:打开解压目录下的nmake.opt文件,修改GDAL的安装目录GDAL_HOME为F:GDALgdal-1.9.2uild
3、设置GDAL编译为64位版本:打开解压目录下的nmake.opt文件,修改WIN64项目信息,将#WIN64=YES修改为WIN64=YES
4、以管理员身份运行cmd
①切换到VS2012的VC安装目录D:Program Files (x86)Microsoft Visual Studio 11.0VCin
②执行vcvars32.bat命令
5、编译GDAL
①切换到GDAL解压目录
②运行命令:nmake /f makefile.vc
完成编译大概需要十来分钟吧,配置好的机器可能三五分钟能编译完。
6、安装GDAL
①运行命令:nmake /f makefile.vc install
②运行命令:nmake /f makefile.vc devinstall
编译的结果在第2步设置的GDAL_HOME目录下
不支持中文路径的解决办法
GDAL从1.8版本起,默认不支持中文路径。原因在VSIWin32FilesystemHandler类(位于GDAL_HOMEportcpl_vsil_win32.cpp文件)中,在函数中添加了一个CPLGetConfigOption( "GDAL_FILENAME_IS_UTF8", "YES" ),指定的默认值UTF8编码,系统将含有中文路径的字符串以UTF8编码来进行转换,结果导致汉字内容乱码。
解决办法有如下三种
方法一:不改变GDAL源代码,在调用GDALRegisterAll()和OGRAllRegiser()函数后,加上下面一句即可:CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO"); 这样的优点是,不用改动GDAL的源代码,但是如果自己的工程中经常打开图像的话,每次都要加,比较麻烦。
方法二:修改GDAL源代码,将下面一句CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO"); 分别添加到GDALAllRegister()函数(位于GDAL_HOMEfrmtsgdalallregister.cpp文件第73行左右)和OGRRegisterAll()函数(位于GDAL_HOMEogrogrsf_frmtsgenericogrregisterall.cpp文件第38行左右)中,然后重新编译GDAL即可。这样的方式就和使用以前版本的GDAL一样了,不用改动自己的代码,推荐使用这种方式。
方法三:修改GDAL源代码,GDAL_HOMEportcpl_vsil_win32.cpp文件中的全部去掉CPLGetConfigOption全部去掉,或者将后面的YES改为NO,但是该工作量巨大,而且有好多地方,这种方式不推荐。
GDAL使用示例
1、Shapefile转GeoJson
ogr2ogr -f "GeoJSON" output.json input.shp
~