GDAL问题收集

GDAL相关网站:

  1. 官方网站:http://www.gdal.org/
  2. 

GDAL相关资料:

  1. http://www.cnblogs.com/enjoylives/archive/2010/01/19/1651343.html
  2. 

GDAL问题:

 

  1.问题描述:“OSGeo.OGR.Ogr”的类型初始值设定项引发异常。

   引用giswei的回答:这个问题是dll不全造成的,除了要引用的4个dll外,还有5个dll也要放到Debug目录下。在编译C#下的gdal时,总共生成了9个dll,在编译的本机上,程序是通过环境变量path找到另外的几个dll的。在没有编译过gdal的电脑上,反正就把这9个编译后的dll放到debug下面就一切Ok了。

  实际上如果你是将GDAL以类库项目的形式再次封装了一遍,不仅要在类库项目中将所有9个dll拷入debug(或release)文件夹中,在引用该类库的其他项目中同样要手动拷贝这9个dll,否则将同样报该错误。因为.NET项目对类库的引用,只会将该类库所引用的dll中“复制本地”属性为true的(如ogr_csharp.dll)拷贝到其他项目中,而不会自动拷贝其依赖(如ogr_wrap.dll)。

  

  2.OGR对ArcSDE的支持

  If you require a Windows based build, you should identify the location of your SDE client lib and header files and modify your gdal make.opt accordingly:

      

 

SDE_ENABLED = YES 
SDE_VERSION=92 
SDE_PLUGIN = YES 
SDE_SDK = C:\arcgis\arcsde 
SDE_INC = $(SDE_SDK)\include 
SDE_LIB =  $(SDE_SDK)\lib\pe$(SDE_VERSION).lib \ 
               $(SDE_SDK)\lib\sde$(SDE_VERSION).lib 
          $(SDE_SDK)\lib\sg$(SDE_VERSION).lib 

 

   

  In a Visual Studio command prompt you can do something like:
  

 

> cd [GDAL_DIR]\ogr\ogrsf_frmts\sde 
> nmake /f makefile.vc ogr_SDE.dll 
> cd [GDAL_DIR]\frmts\sde 
> nmake /f makefile.vc plugin 

 

  

  [2010-08-13 16:30更新]

  通过上述的命令,分别在{GDAL Root}\ogr\ogrsf_frmts\sde和{GDAL Root}\frmts\sde下产生ogr_SDE.dll和gdal_SDE.dll两个文件,将其拷贝至环境变量GDAL_DRIVER_PATH定义的路径下,然后尝试用C#代码连接SDE数据库,结果提示“126: 找不到指定的模块”的错误,错误描述如下:

System.ApplicationException: Can't load requested DLL: {GDAL_DRIVER_PATH}\ogr_SDE.dll
126: 找不到指定的模块。


 

  我想应该是ogr_SDE.dll是依赖于ArcSDE的SDK(见此文“The OGR ArcSDE driver depends on being built with the ESRI provided ArcSDE client libraries.”),因此我将nmake.opt文件中定义的pe.dll,se.dll和sde.dll都拷贝至GDAL bin文件夹下,依然报错。

  将ArcSDE SDK Bin文件夹中的所有dll文件均拷贝至GDAL文件夹中,依然报错…… -_-||

  更进一步,将ArcSDE SDK中Bin、lib、include文件夹中的所有文件都拷贝至GDAL文件夹中,问题依旧…… ||-_-||(为什么拷贝这三个文件夹的文件,见此文,我想既然都是client SDK,那就都引用进去吧)

   不知道如何能注册成功ESRI ArcSDE的驱动? 

    整体编译过程见:http://trac.osgeo.org/gdal/wiki/BuildingOnWindows

   [END 2010-08-13 16:30更新]

 

 

 

   注:gdal_sde.dll和ogr_sde.dll的编译需要ArcSDE SDK的支持(C API或Java API)

 

 

  3.利用批处理文件为GDAL添加环境变量

 

  利用批处理命令为GDAL设置path和GDAL_DRIVER_PATH环境变量,有利于系统部署时添加对GDAL的支持。  

 

  注:Windows Server 2003对setx命令默认支持,但在Windows XP系统下并不支持该命令,需安装WindowsXP支持工具(Windows XP SupportTools,可以在这里下载)。XP系统下通过批处理命令修改环境变量一般需要重启系统。

  关于Setx的命令参数说明可以参考:Windos下用setx.exe命令行模式下永久设置系统环境变量

 

@echo off
echo 设置GDAL环境变量
@setx path "%path%;%cd%\bin;" -m
@setx GDAL_DRIVER_PATH %cd%\bin\gdalplugins -m
echo 设置成功
pause

 

 

  Gdal 1.7 for C#: 下载

你可能感兴趣的:(GDAL问题收集)