• GDAL初学说明


    1、编译加使用:http://blog.csdn.net/gisblog/archive/2008/10/06/3021933.aspx 
    如何在CSharp中使用GDAL?收藏 
        GDAL库的简洁、高效深受开发人员的喜爱,很多开源的GIS软件甚至是商业GIS软件都使用了这个库。GDAL使用C++,在Visual studio环境下开发,对C,C++的支持当然不会有什么问题。但对于C#、Python、Java来说,过程就相对繁琐一些,对初学者造成了不少的麻烦。本文以GDAL1.50为例,详细说明在CSharpe语言中使用GDAL的环境配置问题,至于Python的环境配置问题,在另一篇文章“如何在CSharpe中使用GDAL”中另行讨论。希望对初用GDAL的人员有所帮助。 
        GDAL从1.4.1开始添加了swig,以支持.NET环境下的C#语言。在swig文件夹中包含了C#源代码。以下是主要的处理步骤: 

    1、准备一个C++编译器。建议使用Visual studio2005。 

    2、下载源代码。 

    地址:http://download.osgeo.org/gdal/gdal150.zip。 

    3、把gdal150.zip解压至“C:\gdal-1.5.0”,当然放在其它文件夹也可以。 

    4、修改源代码中的错误。源文件“C:\gdal-1.5.0\frmts\leveller\levellerdataset.cpp”的第171行的内容如下: 

    { "?, kPI / 180.0, UNITLABEL_DEGREE }, 

    在?号后面加上双引呈",改成如下形式: 

    { "?", kPI / 180.0, UNITLABEL_DEGREE }, 

    你可以使用任何一种文本文件的编辑工具来进行修改。笔者尝试过下载GDAL1.52的版本,存在同样的问题,真想不到GDAL库也会犯如此低级的错误。 

    5、创建安装的目标文件夹“C:\gdal-runtime”,稍后的编译配置中,我们将配置GDAL把编译后将会安装到这个文件夹内。 

    6、修改编译配置文件夹“C:\gdal-1.5.0\nmake.opt”。以下是第41至第43行的内容: 

    !IFNDEF GDAL_HOME 

    GDAL_HOME = "C:\warmerda\bld" 

    !ENDIF 

    默认的情况下,GDAL将会安装到"C:\warmerda\bld"文件夹内,为了更好地了解安装过程,我们把第42行修改成如下内容: 

    GDAL_HOME = "C:\gdal-runtime" 

    7、编译源文件。使用“Visual Studio 2005 命令提示”工具来进行,(该工具位于“开始\程序\Microsoft Visual Studio 2005\Visual Studio Tools”内)。 

    打开“Visual Studio 2005 命令提示”工具,键入"cd C:\gdal-1.5.0",进入源文件所在的文件夹,再键入"nmake /f makefile.vc"执行编译。编译过程可能需要一些时间,主要取决于机器的性能。 

    如果没有第4步的修改,将会出现大量的编译错误,累积至100个后,VS2005将自动停止编译。 

    8、安装文件。 

    键入“nmake /f makefile.vc install”,执行完毕后,"C:\gdal-runtime"文件夹下增加了bin,data,及html文件夹。 

    键入“nmake /f makefile.vc devinstall”执行完毕后,"C:\gdal-runtime"文件夹下增加了lib,include文件夹。这两个文件夹主要用于C及C++的开发。 

    在"C:\gdal-runtime\bin"文件夹内已经生成了gdal15.dll文件,这是GDAL库的核心,不管采用何种开发方式,最终都由这个DLL文件来执行实质性的操作。 

    9、编译C#源文件。 

    键入“cd C:\gdal-1.5.0\swig\csharp”,进入C#源文件所在的文件夹。 

    键入“nmake /f makefile.vc”,编译完毕后生成8个DLL文件:gdal_csharp.dll、gdalconst_csharp.dll、ogr_csharp.dll、osr_csharp.dll和gdal_wrap.dll、gdalconst_wrap.dll、ogr_wrap.dll、osr_wrap.dll。前面4个文件名中都含有"csharp",用法与另外4个稍有不同,稍后详细讨论。 

    10、把8个DLL文件复制到安装文件夹"C:\gdal-runtime\bin"。 

    11、创建环境变量。 

    把路径C:\gdal-runtime\bin添加到系统变量Path,如果没有该变量,则应新建一个。如果你使用的是windows2003,添加后不必重启,修改即时生效;如果你不能确定是否已经生效,可以在doc窗口内输入“echo %path%”,如果显示的内容中包含了"C:\gdal-runtime\bin",则表示修改已经生效。如果你还是无法确定,那就重启吧,这是最安全的方式。 

    12、在VS2005 CSharp项目中添加对GDAL的引用。新建一个CShapr应用程序项目,然后添加对C:\gdal-runtime\bin中4个含有"csharp"的DLL文件的引用。至此我们就可以使用GDAL的功能了。为了测试GDAL是否可以运行,我们为窗体的Load事件增加如下的代码: 

    private void Form1_Load(object sender, EventArgs e) 

    try 

    OSGeo.GDAL.Gdal.AllRegister(); 
    OSGeo.GDAL.Dataset dataSet = OSGeo.GDAL.Gdal.Open(@"C:\F-49-32-(10).tif", Access.GA_ReadOnly); 
    int w = dataSet.RasterXSize; 
    int h = dataSet.RasterYSize; 
    MessageBox.Show("image width=" + w + ",height=" + h); 

    catch (Exception err) 

    Console.WriteLine(err.Message); 

    }为了运行程序,Open方法的第一个参数@"C:\F-49-32-(10).tif"应改成你本机上图像文件所在的路径。如果运行正常的话将弹出一个对话框,显示图像的宽度和高度。 

    关于其它一些问题的讨论: 

    1、关于GDAL_DATA系统变量。GDAL建议创建这个系统变量,从上面的讨论中,我们已经知道,这个系统变量并非必须的,但是如果你想使用一些GDAL提供的例子,那就很有必要,因为样例中的某些方法需要访问这个系统变量。 

    2、我们已经提到过,创建安装文件夹并非必须的;如果使用默认的方式来编译,将安装到C:\warmerda\bld文件夹内。无论使用何种方式,要想使用GDAL,你的C#程序必须能访问到这些DLL文件:包括上面提到的8个DLL文件,以及C:\gdal-runtime\bin\gdal15.dll文件。我们可以用一句话来概括:C#环境下使用GDAL的问题核心,实质上就是如何保证C#程序能够访问到这9个DLL文件。 

    在此,我们回顾一下Windows搜索DLL文件的基本规则: 

    1)执行文件所在的文件夹。 

    2)windows系统安装文件夹,即安装了windows的文件夹,GetWindowsDirectory( )函数可提供该目录的路径名。 

    3)Windows系统目录,即System32子目录;调用GetSystemDiretory( )函数可获得这个目录的路径名。 

    4)在系统变量Path中配置的文件夹,或用dos的path命令指定的文件夹。 

    5)网络中映象的目录列表中的全部目录。 

    在需要调用DLL文件时,windows将按以上的顺序,逐一查找各个文件夹,如果找不到相应的文件,将返回异常信息。 

    根据以上的规则,系统变量path中不必包含GDAL的安装路径,我们只要把这9个DLL文件复制到执行文件所有的位置,同样可以运行。例如把文件复制到bin/debug或bin/release文件夹内,这样程序的运行就不再依赖于任何系统变量了。这种方式非常适合于发布和打包最终的应用程序。在程序开发期间,我们仍然提倡使用系统变量指向GDAL安装路径的方式,开发时将更加有灵活性。

    2、GDALGeospatial Data Abstraction Library)从1.4.1版本开始支持.NET环境下的C#语言。基本的编译步骤参照《如何在CSharp中使用GDAL》(http://blog.csdn.net/gisblog/archive/2008/10/06/3021933.aspx),博主把步骤写的很详细,一路参照编译顺利,只是把自己遇到的几个问题总结如下:

    a)下载地址:http://download.osgeo.org/gdal/,自己使用的时候还只是1.6.1,现在最新的版本已是1.6.2O(_)O~每天都有新事物。

    bGDAL的底层是用C++写的,所以要用C++编译器才会编译成功。

    c)生成的九个dll中,gdal16.dll才是GDAL库的实现核心。

         

    d)在C#中使用时,需要引用四个有_csharp后缀的dll

    e)在开发过程,最好把编译的GDALbin文件夹加入到系统环境变量中。

    f)在打包和用于发布的应用程序中,需要把9dll文件全部拷贝到程序目录中。

    注意了上面的细节,就可以顺利使用啦↖(^ω^)↗

    http://www.cnblogs.com/zhangjun1130/archive/2009/11/13/1602340.html

  • 相关阅读:
    PAT B1021 个位数统计 (15)
    PAT B1006 换个格式输出整数 (15)
    PAT A1058 A+B in Hogwarts (20)
    PAT A1027 Colors in Mars (20)
    PAT A1019 General Palindromic Number (20 分)
    PAT B1022 D进制的A+B
    J2EE
    MVC
    数据库长连接短连接
    twisted
  • 原文地址:https://www.cnblogs.com/bigbigtree/p/2256368.html
Copyright © 2020-2023  润新知