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.1src
  PROJ_LIBRARY = C:proj-4.9.1srcproj_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()删除重复定义

  gdaland.cs文件L17  BandUpcast改为Band_SWIGUpcast

  gdalDataset.cs文件L17   DatasetUpcast改为Dataset_SWIGUpcast

  gdalDriver.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","");  

------------------------------------------------------------------------------------------

目前发生了问题,采用上面的语句能够解决矢量字段中的中文问题,但是属性表中的中文就变成了乱码……研究中~

原文地址:https://www.cnblogs.com/lovesumer/p/4409675.html