• 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#:下载
  • 相关阅读:
    Springboot源码 bean的注册
    Vue源码之 watch
    Vue源码之 slot
    Vue computed 的嵌套
    Vue的子组件绑定的方法中传入自定义参数
    Vue源码之 Vue的生命周期
    Vue源码之-----computed
    Vue源码之----为什么Vue中Array的pop,push等方法可以reactive,而Array[0]='a'这样的方法不会reactive?
    ReSharper 8.1支持Visual Studio 2013的特色——超强滚动条
    Python开发环境Wing IDE使用教程:部分调试功能介绍
  • 原文地址:https://www.cnblogs.com/danni5678/p/1796545.html
Copyright © 2020-2023  润新知