windows编译GDAL1.11.2/geos3.4.2/proj4.9.1
机器环境:Win7 64位
编译工具:VS 2010 X86命令提示
1.编译proj,参看其路径下Readme文件
nmake /f makefile.vc
nmake /f makefile.vc install-all
2.编译geos,参看其路径下Readme文件
nmake /f makefile.vc MSVC_VER=1600
3.编译gdal
1)c++版本
-->修改nmake.opt文件
L45:MSVC_VER=1600
添加Proj支持:
PROJ_FLAGS = -DPROJ_STATIC
PROJ_INCLUDE = -IC:\proj-4.9.1\src
PROJ_LIBRARY = C:\proj-4.9.1\src\proj_i.lib
添加Geos支持:
GEOS_DIR=C:\geos-3.4.2
GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOS
GEOS_LIB = $(GEOS_DIR)/src/geos_c_i.lib
-->编译Gdal1.11.2
nmake /f makefile.vc
nmake /f makefile.vc install
nmake /f makefile.vc devinstall
2)c#版本
-->定位文件夹 cd swig/csharp
-->修改文件
GdalPINVOKE.cs、OgrPINVOKE.cs、OsrPINVOKE.cs(有两个)文件中L188行static ***PINVOKE()删除重复定义
gdal\band.cs文件L17 BandUpcast改为Band_SWIGUpcast
gdal\Dataset.cs文件L17 DatasetUpcast改为Dataset_SWIGUpcast
gdal\Driver.cs文件L17 DriverUpcast改为Driver_SWIGUpcast
-->编译
nmake /f makefile.vc
4.使用GDAL
将gdal111.dll及C#的8个dll,还有proj.dll,geos.dll,geos_c.dll拷贝在起共同使用。此版本不再考虑中文路径问题,貌似GDAL官方对此问题进行了解决,目前使用此版本进行数据读取时,均可以正常运行,只是在Datasource.GetName()和Layer.GetName()时出现的还是乱码,不清楚这个会不会对以后造成影响。
对于矢量字段中的中文问题,参考李民录大神的博客:
// 注册所有的驱动
Ogr.RegisterAll();
// 为了支持shp属性表字段支持中文,请添加下面这句
OSGeo.GDAL.Gdal.SetConfigOption("SHAPE_ENCODING","");
------------------------------------------------------------------------------------------
目前发生了问题,采用上面的语句能够解决矢量字段中的中文问题,但是属性表中的中文就变成了乱码……研究中~