将GDAL编译成C#可用的DLL
GDAL在C#中如何编译、安装以及使用简介
GDAL在C#中如何编译、安装以及使⽤简介编译准备……1.Gdal压缩包;2.修改。
修改Gdal中的bug,gdal\frmts\leveller\levellerdataset.cpp⽂件171⾏{ “?, kPI / 180.0, UNITLABEL_DEGREE },将“ “? ”修改为“ ”? “ ”,保存;修改Gdal根⽬录下的nmake.opt⽂件:MSVC_VER=1500(即选择VS2008);GDAL_HOME=“YourDir”,YourDir为你⾃⼰建⽴的⽤于存放编译⽣成的⽂件的地⽅,⾃⾏定义;修改部分结束修改完毕,编译真正开始…1.打开VS 2008命令⾏,定位到Gdal所在的⽂件夹; (或者cmd,到vc⽬录下运⾏vcvars32.bat)2.到gdal⽬录下,运⾏nmake /f makefile.vc;3.下⾯是:nmake /f makefile.vc install;4.接着:nmake /f makefile.vc devinstall,这步完成后GDAL_HOME处⽣成⼀系列的⽂件,其bin⽬录下会有gdal16.dll,视gdal版本⽽定。
5. 定位到gdal⽬录下的csharp⽂件夹。
6.敲⼊nmake /f makefile.vc,这步完成后会在csharp⽬录下⽣成8个dll⽂件。
将这8个⽂件拷贝到gdal16.dll 所在位置(见第4步)。
将四个*_CSharp.dll在项⽬中“添加引⽤”添加进来,其余gdal16.dll和另外四个编译C#时⽣成的dll⽂件拷贝到项⽬的debug下。
即可。
如果不把dll⽂件拷贝到debug下,将出现下⾯错误:“OSGeo.OGR.Ogr”的类型初始值设定项引发异常这样的问题。
这个问题是dll不全造成的,除了要引⽤的4个dll外,还有5个dll也要放到Debug⽬录下。
在编译C#下的gdal时,总共⽣成了9个dll,在编译的本机上,程序是通过环境变量path找到另外的⼏个dll的。
gdal_with_poppler编译方法
GDAL with libpopplerfor GeoPDFCompile Method苦恼许久,google/baidu许久,终成正果。
1.文件下载1)liblcms-1.lib在[2]下载kdewin-installer-gui-latest.exe。
下载后运行下载lcms-1.lib,详细方法参见[3]。
2)freetype在[4]下载ft246.zip。
3)poppler在[5]下载poppler-0.16.0.tar.gz。
注:由于GDAL1.8对poppler的版本要求,不可选择最新版本,见[1]。
4)gdal在[6]下载gdal-1.8.0.tar.gz。
5)CMake在[7]下载CMake 2.8.5,可直接下载运行文件cmake-2.8.5-win32-x86.zip。
2.freetype246 Compile参考[8]编译freetype246,本例仅调整动态库生成相关宏定义,未删除模块。
最终编译Release Multithreaded Win32版本,生成文件freetype246MT.lib、freetype246MT.dll,将此二文件与.\freetype-2.4.6\inculde整个文件夹拷贝至某处,留待后用。
3.libpoppler Compile由于poppler自1.2X版本之后就没有相应的makefile.vc文件,因此选用CMake进行跨平台编译,本例在VS2010 SP1环境下编译。
3.1使用cmake-gui.exe生成解决方案运行cmake-gui.exe,”Browse Source…”,依序选择解压后poppler源码所在文件夹(CMakeLists.txt所在路径)、生成解决方案文件夹。
点击Configure,选择编译器后Finish。
待CMake分析完毕,中部列表内显示poppler库编译所需设置的选项。
如图所示,根据需求选择要生成的解决方案中所含工程,有如下几处必须设置:1)ENALBE_LIBOPENJPEG:NO。
c语言gdal案例
c语言gdal案例【原创版】目录1.介绍 GDAL 库2.GDAL 库与 C 语言的结合3.C 语言 GDAL 案例的应用领域4.一个具体的 C 语言 GDAL 案例5.总结正文一、介绍 GDAL 库GDAL(Geospatial Data Abstraction Library)是一个开源的地理空间数据处理库,它提供了对各种地理空间数据格式的支持,包括栅格和矢量数据。
GDAL 库广泛应用于遥感图像处理、地图制作、地理信息系统等领域。
GDAL 库支持多种编程语言,如 C、C++、Python 等,其中 C 语言是一种使用较为广泛的编程语言。
二、GDAL 库与 C 语言的结合C 语言是一种运行速度快、性能高的编程语言,它具有丰富的函数库和广泛的应用领域。
将 GDAL 库与 C 语言结合,可以充分利用 C 语言的性能优势,进行高效的地理空间数据处理。
此外,C 语言的语法结构较为简单,易于上手,对于初学者而言,通过 C 语言学习 GDAL 库是一种不错的选择。
三、C 语言 GDAL 案例的应用领域C 语言 GDAL 案例的应用领域非常广泛,主要包括:1.遥感图像处理:利用 GDAL 库对遥感图像进行打开、读取、显示、保存、增强等操作,以满足遥感应用需求。
2.地图制作:通过 GDAL 库对地理空间数据进行处理,生成各种地图产品,如地形图、卫星图像地图、交通地图等。
3.地理信息系统:利用 GDAL 库对地理空间数据进行编辑、查询、分析等操作,为地理信息系统提供数据支持。
4.其他领域:如城市规划、环境保护、资源调查等,都需要用到 C 语言 GDAL 案例进行地理空间数据的处理。
四、一个具体的 C 语言 GDAL 案例假设我们需要将一个遥感图像(如 Landsat 8 图像)进行辐射定标,具体操作步骤如下:1.安装 GDAL 库,并配置相应的环境变量。
2.编写 C 语言程序,使用 GDAL 库打开 Landsat 8 图像文件。
gdal库的学习和使用
gdal库的学习和使⽤1、windows下的编译 1.1、解压后打开nmake.opt,设置GDAL_HOME 1.2、进⼊vs的command promot,进⼊正常的那个即可,64位的没试过,可以参考gdal官⽹ 1.3、nmake /f makefile.vc 1.4、nmake /f makefile.vc install 1.5、nmake /f makefile.vc devinstall2、编译proj #PROJ_FLAGS =-DPROJ_STATIC #PROJ_INCLUDE =-Id:\projects\proj.4\src #PROJ_LIBRARY =d:\projects\proj.4\src\proj_i.lib 修改为: #PROJ_FLAGS =-DPROJ_STATIC PROJ_INCLUDE =-IF:\Work\3rdPart\proj-4.7.0\src PROJ_LIBRARY =F:\Work\3rdPart\proj-4.7.0\src\proj_i.lib 最上⾯的PROJ_FLAGS的作⽤经试验表明是这样⼦: 如果取消注释,那么运⾏的时候会主动提⽰确实proj.dll;如果加上注释,那么会输出Unable to load PROJ.4 library (proj.dll) (太假了)2、打开⽂件#include "gdal_priv.h"#include "cpl_conv.h"// for CPLMalloc()int main(){GDALDataset *poDataset;GDALAllRegister();poDataset = (GDALDataset *) GDALOpen( pszFilename, GA_ReadOnly );if( poDataset == NULL ){...;}gdal中⽂路径的问题不改变GDAL源代码,在⾃⼰调⽤GDALRegisterAll()和OGRAllRegiser()函数后,加上下⾯⼀句即可。
GDAL、Prj.4和GEOS库的编译与引用
GDAL的编译官方网站:/下载地址:/gdal/编译版本:GDAL1.8.0编译平台:Window XP(32位)+Visual Studio2008编译步骤:1、解压下载文件gdal180.zip到C:\gdal-1.8.0。
2、点击“开始—运行”,输入“cmd”,进入控制台界面。
3、编译C++版本gdal,依次输入以下命令:1)C:\Program Files\Microsoft Visual Studio9.0\VC\bin\vcvars32.bat2)cd C:\gdal-1.8.03)nmake/f makefile.vc4)nmake/f makefile.vc install5)nmake/f makefile.vc devinstall4、如需编译C#版本gdal,接着输入以下命令:1)cd C:\gdal-1.8.1\swig\csharp2)nmake/f makefile.vc工程引用:1、C++工程引用GDAL1)从C:\warmerda\bld\lib目录下复制gdal_i.lib文件,从C:\warmerda\bld\bin目录下复制gdal18.dll文件,以及复制C:\warmerda\bld\include整个文件夹到C++工程目录下。
2)以Visual C++6.0为例,点击“Project-Settings”菜单,在C/C++页面,在[Category]项选择[Preprocessor]选项,在[Additional include directories]项下添加“include”值,即将编译的gdal的头文件目录添加到工程中。
转到Link页面,在[Object/library modules]选项下添加“gdal_i.lib”3)在需要使用gdal的时候添加相应的头文件。
2、C#工程引用GDAL1)从C:\gdal-1.8.0\swig\csharp目录下复制gdal_csharp.dll、gdal_wrap.dll、gdalconst_csharp.dll、gdalconst_wrap.dll、ogr_csharp.dll、ogr_wrap.dll、osr_csharp.dll、osr_wrap.dll,以及从C:\warmerda\bld\bin目录下复制gdal18.dll共9个文件到C#工程中。
osgEarth编译总结
首先在osg的编译上有一点记录一下:1 我们下载的第三方依赖3rdParty_x86_x64 这个文件对于VS2008和VS2010来说可能VS2008的提供库要全一些。
2 对于3rdParty_x86_x64文件夹下的x86和x64来说我们的系统如果是32位的应该就只能选x86 对于x64来说我们两个包都是可以选择的,据说在64位的系统上的32位程序是模拟运行的。
如果我们编译时选择直接编译。
那最好是选x86那个包。
在这次的选择中选择x64包结果编译到osgDB库的时候出现了错误。
如果想编译出来的程序只是用于x64 那么可以尝试在x64包的基础上对VS进行相关的设置,应该是不会有很大问题的。
下面主要是对osgEarth进行编译由于osgEarth没有对第三方依赖进行打包,所以我们就不得不自己进行配置相关的依赖。
首先下载源码包,我们进入官网/wiki/Downloads下载源码简单明了。
接下来我们下载第三方依赖:1 GDAL下载:/gdal/wiki/DownloadSource在这里我们选择1.8.1版本,因为在1.9.0版本使用中出现了编译不能通过的情况。
当然我们也可以自己将编译过程中出现的问题解决。
在这里我们只是为了编译GDAL“不节外生枝”下面我们来对这个库进行编译:对于这个版本有两种方法可以编译1 它里面有两个.sln,使用其中之一编译就行2 下载完GDAL的源码后,还需要先运行makegdal_gen.bat这个文件,然后打开X:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT,X代表你VS的安装盘.打开后用cd命令切换到你GDAL的目录下执行命令,nmake /f makefile.vc MSVC_VER=1500 BUILD_DEBUG=YES,其中1500代表VS版本2008,当然你也可以进入nmake配置文件修改.文件编译完成后我们有两种不同的处理方法方法一将生成的lib dll 包括: gdal_i.lib gdal.lib cpl.lib(port目录下) ogr.lib(ogr目录下), 以及gdal17.dll 拷贝到E:\OSG\GDAL\apps下,这一种在后面的使用中会直接将这个作为cmake的应用目录(在工程中添加包含目录时会很麻烦,不推荐采用)方法二GDAL编译完成后的文件存放于C0:\warmerda\bld,包含文件include,lib,data,bin,可将它们拷贝到GDAL文件夹下,置于OSG目录下。
GDAL编译与功能介绍
} delete poSlopeDS; return 0;
}
• • • • • • • • • • • • • • ( const char * pszFilename, int nXSize, int nYSize, int nBands, GDALDataType eType, char ** papszOptions ) pszFilename为储存影像路径 nXSize为影像的行值 nYSize为影像的列值 nBands为波段数 eType为影像数据类型 papszOptions为一些特殊的控制参数,通常为NULL
GDAL编译与功能介绍
王健 2011-11-16
• GDAL(Geospatial Data Abstraction Library)是一个开源栅格空间数据转换库。 它利用抽象数据模型来表达所支持的各种 文件格式。并有一系列命令行工具来进行 数据转换和处理。
• 使用GDAL开发的软件:
• • • • • • • • ESRI ArcGIS 9.2+ Google Earth ERDAS ER Viewer OpenEV MapServer FWTools IDRISI …….
• • • • • • • • • • • • • • • • • • • • • •
else
{
dx = ((win[0] + win[3] + win[3] + win[6]) (win[2] + win[5] + win[5] + win[8])); dy = ((win[6] + win[7] + win[7] + win[8]) (win[0] + win[1] + win[1] + win[2])); // // // // // SOBEL算子为3X3的矩阵, 如下所示为下标 0 3 6 1 4 7 2 5 8
将GDAL编译成C#可用的DLL
将GDAL编译成C#可用的DLL目的:将GDAL编译成C#可用的DLL环境GDAL-1.10.1.net framework 4.0vs 2010swigwin-2.0.11代码错误记录1、函数名称错误....\GDAL\gdal-1.10.1\swig\csharp\gdal文件夹中的Band.cs、Dataset.cs、Driver.cs三个文件中BandUpcast、DatasetUpcast、DriverUpcast函数名称应分别改为Band_SWIGUpcast、Dataset_SWIGUpcast、Driver_SWIGUpcast。
2、重复定义....\GDAL\gdal-1.10.1\swig\csharp\ogr文件夹中OgrPINVOK.cs、OsrPINVOK.cs中第188行有名称为static OgrPINVOKE() { }、static OsrPINVOKE() {}的函数,此函数重复定义,将重复定义的代码删除。
类似的将....\GDAL\gdal-1.10.1\swig\csharp\osr文件夹中OsrPINVOK.cs的代码也改过来。
3、安全透明代码的问题猜测是.net framework 版本过高引起的....\GDAL\gdal-1.10.1\swig\csharp\gdal中有很多cs文件,在需要使用到的cs文件中加入using System.Security;[SecuritySafeCritical]要注意的是Dataset.cs第52行的Dispose()函数被override了,要在此函数上面,即51行也要写入[SecuritySafeCritical]然后就可以编译了XD编译用vs命令提示(2010)进入....\GDAL\gdal-1.10.1\分别执行nmake /f makefile.vcnmake /f makefie.vc installnmake /f makefile.vc devinstall进入....\GDAL\gdal-1.10.1\swig\csharp\执行nmake /f makefile.vcnmake /f makefie.vc install在C:\warmerda\bld\csharp中有8个dll。
GDAL库介绍、安装与使用介绍
1.GDAL介绍GDAL是一个转换各种栅格数据格式的库。
包括读取、写入、转换、处理各种栅格数据格式(有些特定的格式对一些操作如写入等不支持)。
它使用了一个单一的抽象数据模型就支持了大多数的栅格数据(GIS对栅格,矢量,3D数据模型的抽象能力实在令人叹服)。
当然除了栅格操作,这个库还同时包括了操作矢量数据的另一个有名的库ogr(转换矢量GIS数据),这样这个库就同时具备了操作栅格和矢量数据的能力,目前ogr能够支持的数据格式包括:Arc/Info Binary Coverage、DWG、ESRI Personal GeoDatabase、ArcSDE、ESRIShapefile、GML、GRASS、Mapinfo File、Microstation DGN、ODBC、Oracle Spatial和PostgreSQL等。
应该说,这就基本包括了我们平常用到的所有矢量型GIS文件格式了。
Gdal支持的栅格数据格式参阅/formats_list.html2.GDAL安装(1)下载gdal的安装文件,/gdal/gdal142.zip,解压到某目录下,如C:\gdalsrc下。
这里我们假定VC6的安装在默认目录C:\Program Files\Microsoft Visual Studio8下。
(2)启动cmd,即打开控制台窗口。
进入VC6的安装目录下,如cd C:\ProgramFiles\MicrosoftVisual Studio8\VC\bin\,在此目录下有个文件VCVARS32.BAT,执行一下这个文件,然后重新回到C:\gdalsrc下。
运行命令nmake /f makefile.vc。
编译完成后,用记事本打开文件C:\gdalsrc\nmake.opt,根据自己的情况修改GDAL_HOME = 这一行,这个指的是最终GDAL的安装目录,比如说我们安装在C:\GDAL,那么这一行就是GDAL_HOME = "C:\GDAL",在C:\gdalsrc下执行nmake /f makefile.vc install,然后是nmake /f makefile.vc devinstall,然后我们需要的东西就安装到了C:\GDAL下。
使用C#vs2008编译GDAL1.8.1
一、简单的编译1、使用VisualStudio IDE编译首先进入GDAL的源代码目录,可以看到有几个sln为后缀的文件名,比如makegdal10.sln,makegdal80.sln,makegdal71.sln,makegdal90.sln 。
这些文件是VisualStudio的工程文件,后面的数字对应的VS的版本号,71表示的VS2003,80表示VS2005,90表示VS2008,还有10表示VS2010等。
根据自己电脑安装的VS 版本,打开对应的文件,如下图所示(使用VS2008SP1版本,打开makegdal90.sln文件):图3 VS2008打开编译GDAL1.8.1然后在左侧解决方案右键,弹出菜单中选择“生成”或者“重新生成”命令,然后GDAL就会开始编译,等待输出窗口中提示,执行完成,生成成功等信息后,就表示GDAL已经完成编译。
同时会在GDAL的源代码目录中会出现gdal.lib,gdal_i.lib,gdal18.dll等文件,如果你没有修改GDAL中的nmake.opt文件的话,那么同时会在你的C盘中会出现一个叫“C:\warmerda\bld”的文件夹,里面会包含三个文件夹,分别是bin,data和html。
其中bin文件夹中存放的是编译出来的GDAL的可执行程序,包括GDAL提供的十几个工具集;data文件夹就是在第一节中的介绍的data文件夹;html文件夹中存放的是各种数据格式的说明文档。
2、使用cmd命令行编译使用cmd命令行编译,首先在“开始菜单\所有程序\Microsoft Visual Studio 2008\Visual Studio Tools\ Visual Studio 2008命令提示”,点击“Visual Studio 2008 命令提示”会弹出下面的界面:然后使用cd命令,切换到GDAL的源代码目录,如下图所示:切换到GDAL的源代码目录后,依次敲入下面的命令行后回车,等待编译结束即可。
CSharp编译GDAL总结(本人亲自编译总结-编译正常可用)
如何在CSharp中使用GDAL许多人觉得CSharp下编译GDAL存在较多疑问,编译时出现很多问题。
经过多次测试,发现其实并不麻烦,现总结如下,供大家借鉴.GDAL库的简洁、高效深受开发人员的喜爱,很多开源的GIS软件甚至是商业GIS软件都使用了这个库。
GDAL使用C++,在Visual studio环境下开发,对C,C++的支持当然不会有什么问题。
但对于C#、Python、Java来说,过程就相对繁琐一些,对初学者造成了不少的麻烦。
本文以GDAL1.50为例,详细说明在CSharpe语言中使用GDAL的环境配置问题,至于Python的环境配置问题,在另一篇文章“如何在CSharpe中使用GDAL”中另行讨论。
希望对初用GDAL的人员有所帮助。
基于VS下安装:GDAL从1.4.1开始添加了swig,以支持.NET环境下的C#语言。
在swig文件夹中包含了C#源代码。
以下是主要的处理步骤:第一步:VS命令提示符或者cmd下安装。
(和在安装VC版的一样操作)(1)下载gdal的安装文件,/gdal/gdal142.zip,解压到某目录下,如C:\gdalsrc下。
这里我们假定VC6的安装在默认目录C:\Program Files\Microsoft Visual Studio8下。
(2)启动cmd,即打开控制台窗口。
进入VC6的安装目录下,如cd C:\Program Files\MicrosoftVisual Studio8\VC\bin\,在此目录下有个文件VCVARS32.BAT,执行一下这个文件,然后重新回到C:\gdalsrc下。
运行命令nmake /f makefile.vc。
编译完成后,用记事本打开文件C:\gdalsrc\nmake.opt,根据自己的情况修改GDAL_HOME = 这一行,这个指的是最终GDAL的安装目录,比如说我们安装在C:\GDAL,那么这一行就是GDAL_HOME = "C:\GDAL",在C:\gdalsrc下执行nmake /f makefile.vc install,然后是nmake /f makefile.vc devinstall,然后我们需要的东西就安装到了C:\GDAL下。
GDAL使用方法VC+C#
GDAL栅格图像操作GDAL是一个操作各种栅格和矢量(由ogr这个库实现)地理数据格式的开源库。
包括读取、写入、转换、处理各种栅格和矢量数据格式(有些特定的格式对一些操作如写入等不支持)。
即使不是进行地理遥感方面的应用研究,GDAL也是一个非常有用的库,因为它可以支持大量我们常见的图像数据,比如jpg,gif之类的。
完整的格式清单可以到此链接查看/formats_list.html。
而且已经有包括GoogleEarth在内的很多软件都是在使用GDAL作为后台库。
本文就以VC为开发平台介绍GDAL对栅格数据的操作方法。
Include目录是开发中需要的头文件,lib中是所需要的lib文件,在VC8中应当将其存放目录添加到目录列表中,选择菜单的“工具-选项-项目和解决方案-VC++目录”,分别在“包含文件”和“库文件”中将此两个目录添加进去。
在项目的属性页中,选择“配置属性-链接器-输入”,在“附加依赖项”中添加gdal_i-vc8.lib和gdal_id-vc8.lib两个使用GDAL中需要的静态库文件,或者在程序中添加以下两行代码也可以。
#pragma comment(lib, "gdal_i-vc8.lib")#pragma comment(lib, "gdal_id-vc8.lib")Bin目录下的动态链接库文件应当放置于程序能够访问的位置,比如windows\system32中。
此外,在程序中需要引入的头文件是gdal_priv.h。
现在开始用C++来对图像文件进行操作。
在打开文件之前需要首先注册所需要的驱动程序,一般来说我们可以默认注册所有支持的格式驱动,所使用的函数是GDALAllRegister()。
然后就是打开文件操作。
这里要说一个数据集的概念,也就是所谓的Dataset。
在GDAL中可以说数据的核心就是Dataset,简单来说可以将Dataset就理解为图像文件,比如说一个jpeg格式的文件就是一个数据集,当然其他一些文件格式可能在一个数据集中包含多于一个文件,比如可能除了图像数据文件外还可能会有一些附加信息文件等。
GDAL库安装
简单介绍:OGR是一个读取和处理GSI矢量数据的库。
这个库可以读取和处理多种流行的矢量数据,OGR是GDAL(/)的一个部分,只要你安装了GDAL库,就已经拥有了OGR库。
一、安装:1.先下载一个GDAL版本(C++)(/gdal/wiki/BuildHints)。
2.然后打开控制(DOS)台,找到.....\Microsoft Visual Studio .NET 2010\Vcbin\vcvars32.bat,注册VC编译环境。
进入VS安装目录执行VS目录下的VCV ARS32 文件3.然后把GDAL库放到一个目录下,如C:\gdal-1.9.1\gdal-1.9.1;用VS打开并打开文件夹下的nmake.opt修改GDAL_HOME = "C:\GDAL"把路径改到需要把gdal安装的地方。
cd进入刚才源文件的解压目录C:\gdal-1.9.1\gdal-1.9.1。
将gdal解压到C盘修改nmakecd进入解压目录4.然后在DOS中依次输入:nmake /f makefile.vcnmake /f makefile.vc installnmake /f makefile.vc devinstall中间等待编译处理。
处理完后系统将会把我们需要的文件拷贝到开始设定的安装目录,如刚才设置的C:\GDAL二、应用1.在新建项目下:属性->C/C++->常规->附加包含目录:"C:\GADL\include"。
属性->链接器->常规->附加库目录:"C:\GADL\lib".属性->连接器->输入->附加依赖项:gdal_i.lib.2. 将C:\GDAL\bin\gdal14.dll拷贝到vs新建项目的debug文件夹中。
(否则运行时会提示找不到gdal14.dll)添加所需的头文件就可以用了。
c++中调用GDAL设置方法
c++中调用GDAL设置方法(2010-04-23 18:38:40)转载▼
标签:gdal c 编程it 分类:GDAL
Visual C++.net环境下的设置跟VC6.0差不多,。
1、先要在“工具->选项->项目和解决方案->VC++目录”下分别选择包含文件和库文件下拉菜单添加include目录和lib目录;
2、在“项目->(工程名)属性->配置属性->链接器->输入”页面中的“附加依赖项”中添加gdal_i.lib;
3、添加完后需要在程序头文件添加引用#include "gdal_priv.h"和#include "gdal.h"
4. 将下载下来的压缩包bin目录下的所有dll文件(这些文件是GDAL相关的dll文件,是GDAL_Java的dll需要调用的)拷贝至正确的位置(首先编译一下GDAL的debug版本,将编译生成的文件,主要有gdal18.dll,gdal_i.exp,gdal_i.lib,gdal.lib,gdal18.pdb,gdal18.ilk,gdal18.exp等文件,将gdal18开头的文件拷贝到自己工程的生成目录的DEBUg目录中,然后调试自己的程序,在执行到GDALOpen函数(或者其他GDAL的函数)时按F11键,就会进入到GDAL的源代码中进行调试GDAL代码)。
编译C#版GDAL-1.11.1(含GEOS,PROJ,HDF)霍少峰
C#版GDAL-1.11.1编译(含GEOS,PROJ,HDF)——2014.11.25霍少峰这里选择的版本是:gdal-1.11.1.tar.gz、geos-3.4.2.tar.bz2、proj-4.8.0.tar.gz、swigwin-3.0.2、HDF4.2.6_win_x64.zip和HDF5-1.8.7_win_x64.zip。
本机为64位Win7操作系统。
首先在/gdal/wiki/DownloadSource下载/gdal/1.11.1/gdal-1.11.1.tar.gz - source as .tar.gz ( md5)然后解压,我将解压的文件放在了C盘,即C:\gdal-1.11.1。
这里我使用cmd命令行方法进行编译。
首先以管理员身份运行方式打开“Visual Studio x64兼容工具命令提示(2010)”命令,如下图:图1然后使用cd命令(没用过的请百度一下,挺有用的),切换到GDAL的源代码目录(C:\gdal-1.11.1),如下图:图2接着,依次输入下面的命令后回车,静候编译结束。
nmake –f makefile.vc(上面的意思是编译GDAL库)nmake –f makefile.vc install(上面的意思是编译GDAL库并安装,安装的意思是将生成的dll、exe等文件复制到C:\warmerda\bld目录)nmake –f makefile.vc devinstall(上面的意思是编译GDAL库并安装开发者模式,安装的意思同上,开发者模式意思是将开发用到的include文件夹中的头文件和lib文件一同复制到C:\warmerda\bld目录,此时会在C:\warmerda\bld目录中添加两个文件夹,分别是include和lib,分别存放GDAL的头文件和lib文件,用于调用GDAL库)通过以上的过程就完成了编译GDAL库。
而且会在C盘生成如下内容:图2.1下面集成GEOS和PROJ.4为了集成GEOS和PROJ.4,需要先在网上下载压缩包,然后解压,编译,编译好以后再修改gdal-1.11.1的nmake.opt文件重新编译一次gdal。
使用gdalC#封装库读取DEM数据
使用gdalC#封装库读取DEM数据系统环境操作系统: Win 7 64位家庭版Gdal版本: gdal 1.8.0Swig版本: swig 1.3.39用于编译C#封库库VS版本: VS2010准备文件编译好的gdal核心库gdal180.dll以及C#封装库gdal_wrap.dll、gdal_csharp.dll读取DEM数据步骤及说明1. 将gdal180.dll、gdal_wrap.dll、 gdal_csharp.dll拷贝到程序的生成目录,并在项目里添加对gdal_csharp.dll库的引用。
2. 在要使用gdal的文件头部加上如下命名空间的声明:using OSGeo.GDAL;3. 读取代码如下:Gdal.AllRegister(); // 初始化gdal库Dataset ds = Gdal.Open(path, Access.GA_ReadOnly); // 读取数据到gdal的dataset中int XSize = ds.RasterXSize;int YSize = ds.RasterYSize; // 获取栅格数据的长和宽int count = ds.RasterCount; // 获取栅格数据的点的数量Band demband = ds.GetRasterBand(1); // 获取第一个banddouble[] gt = new double[6];ds.GetGeoTransform(gt); // 获取屏幕坐标转换到实际地理坐标的参数int Xpixel = 100;int Yline = 100;double Xgeo = gt[0] + Xpixel*gt[1] + Yline*gt[2];double Ygeo = gt[3] + Xpixel*gt[4] + Yline*gt[5]; // 计算像素坐标为(100, 100)的点的实际地理坐标double nodatavalue;int hasval;demband.GetNoDataValue(out nodatavalue, out hasval); // 获取没有数据的点的值double[] databuf = new double[XSize * YSize];demband.ReadRaster(0, 0, ds.RasterXSize, ds.RasterYSize, databuf, ds.RasterXSize, ds.RasterYSize, 0, 0); // 读取数据到缓冲区中4. 主要函数说明。
gdal编译C#开发版本
gdal编译C#开发版本gdal的编译⽐较⿇烦,情况有很多种,今天我编译的gdal遇到的问题就和以前的有点不⼀样,仅供参考借鉴。
1、下载gdal源码gdal源码下载地址:已经编译好的gdal版本下载地址:我下载的是最新的gdal211,不知道为什么,后⾯编译出来的是gdal201的版本。
2、开始编译C++的开发版本gdal在window编译提供的⽅法:为了编译64位的gdal,我修改了nmake.opt⽂件189⾏处的代码将#WIN64=YES改成了WIN64=YES然后使⽤cmd设置编译环境:call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64然后进⼊到gdal⽬录,依次执⾏如下命令:1、C:\GDAL> nmake /f makefile.vc2、C:\GDAL> nmake /f makefile.vc install3、C:\GDAL> nmake /f makefile.vc devinstall编译完后会在C盘下⾯⽣成warmerda⽂件夹,⾥⾯的⽂件是⽤来提供C++编译的,如下图:注意:如果编译环境设置错误,第⼀步编译完后会提⽰如下错误:3、编译C#使⽤的版本编译C#使⽤的版本需要借助swig⼯具,下载地址如下:下载完后解压,打开nmake.opt,将swig=swig.exe修改成SWIG =E:\swigwin-3.0.10\swig.exe然后接着上⾯三句编译命令之后,进⼊到swig\csharp⽬录下,执⾏如下命令:1、nmake /f makefile.vc2、nmake /f makefile.vc install注意:在1编译过程中会出现如下问题:借鉴博客:问题1、接⼝重定义osr\OsrPINVOKE.cs(192,10): error CS0111: 类型“OSGeo.OSR.OsrPINVOKE”已定义了⼀个名为“OsrPINVOKE”的具有相同参数类型的成员osr\OsrPINVOKE.cs(188,10): (与前⼀个错误相关的符号位置) NMAKE : fatal error U1077: “C:\Windows\\Framework\v4.0.30319\csc.EXE”: 返回代码“0x1”解决办法:进⼊到..\gdal-1.9.2\swig\csharp\gdal|ogr|osr三个⽂件夹下,找到GdalPINVOKE.cs、OgrPINVOKE.cs、OsrPINVOKE.cs,将提⽰中重复的参数类型删除掉即可,错误⽰例如下图:问题2:接⼝成员名称调⽤错误,错误提⽰:gdal\Band.cs(17,79): error CS0117: “OSGeo.GDAL.GdalPINVOKE”并不包含“BandUpcast”的定义gdal\Dataset.cs(17,82): error CS0117: “OSGeo.GDAL.GdalPINVOKE”并不包含“DatasetUpcast”的定义gdal\Driver.cs(17,81): error CS0117: “OSGeo.GDAL.GdalPINVOKE”并不包含“DriverUpcast”的定义NMAKE : fatal error U1077: “C:\Windows\\Framework\v4.0.30319\csc.EXE”: 返回代码“0x1”GdalPINVOKE.cs定义接⼝如下:Band类(举⼀例)调⽤如下:将三个类中的接⼝修改⼀下即可:public Driver(IntPtr cPtr, bool cMemoryOwn, object parent) : base(GdalPINVOKE.Driver_SWIGUpcast(cPtr), cMemoryOwn, parent) { swigCPtr = new HandleRef(this, cPtr); public Dataset(IntPtr cPtr, bool cMemoryOwn, object parent) : base(GdalPINVOKE.Dataset_SWIGUpcast(cPtr), cMemoryOwn, parent) { swigCPtr = new HandleRef(this, cPtr); public Band(IntPtr cPtr, bool cMemoryOwn, object parent) : base(GdalPINVOKE.Band_SWIGUpcast(cPtr), cMemoryOwn, parent) { swigCPtr = new HandleRef(this, cPtr);修改完后即可编译成功,编译成功之后C:\warmerda\bld⽂件夹下会⽣成scharp⽂件,供C#编程使⽤。
c++中调用GDAL设置方法
c++中调用GDAL设置方法
c++中调用GDAL设置方法(2010-04-23 18:38:40)转载▼
标签:gdal c 编程it 分类:GDAL
Visual C++.net环境下的设置跟VC6.0差不多,。
1、先要在“工具->选项->项目和解决方案->VC++目录”下分别选择包含文件和库文件下拉菜单添加include目录和lib目录;
2、在“项目->(工程名)属性->配置属性->链接器->输入”页面中的“附加依赖项”中添加gdal_i.lib;
3、添加完后需要在程序头文件添加引用#include "gdal_priv.h"和#include "gdal.h"
4. 将下载下来的压缩包bin目录下的所有dll文件(这些文件是GDAL相关的dll文件,是GDAL_Java的dll需要调用的)拷贝至正确的位置(首先编译一下GDAL的debug版本,将编译生成的文件,主要有gdal18.dll,gdal_i.exp,gdal_i.lib,gdal.lib,gdal18.pdb,gdal18.ilk,gdal18.exp等文件,将gdal18开头的文件拷贝到自己工程的生成目录的DEBUg目录中,然后调试自己的程序,在执行到GDALOpen函数(或者其他GDAL的函数)时按F11键,就会进入到GDAL的源代码中进行调试GDAL代码)。
GDAL使用
step1 Edit nmake.opt file
Open G:/gdal/nmake.opt with notepad, and modify these lines:
1 GDAL_HOME = "../gdal"
The actual location of gdal package.
GDAL/OGR 1.6.0
与Gdal类似地,与Gdal库一起的OGR类库,提供了对矢量数据的相关操作。
详细资料请参考GDAL
流浪者N应用Gdal是为了用C#实现对HDF文件的操作。
下面为流浪者N编译支持HDF4、HDF5的Gdal库的操作,首先声明流浪者N这么编译出的Gdal仍然不支持HDF,这里写下一为记录;二为交流,
FWTools2.2.8,还是FWTools2.2.8存在bug,总之有异常,说是“OSGeo.GDAL.GdalPINVOKE的类型初始值设
gdal_gdal_csharp.dll
gdal_ogr_csharp.dll
gdal_osr_csharp.dll
gdal_gdalconst_csharp.dll
gdal_gdal_wrap.dll
gdal_ogr_wrap.dll
gdal_osr_wrap.dll
gdal_gdalconst_wrap.dll
(以下内容是网络搜索到的,当时忘记记录网址,所以对于出处没有表明,在此对原作者表示歉意。希望对需要的朋友有所帮助。)
GDAL编译时机器中必须装有VC。
2007-08-26 | How to compile GDAL/OGR C# interface
标签: GDAL OGR Csharp interface
gdal编译说明
GDAL库编译说明一、windows环境下编译1.下载gdal源码并且解压2.打开gdal文件夹下的nmake.opt修改GDAL_HOME = "C:\warmerda\bld"把路径改到需要把gdal安装的地方。
3.编译安装在vc控制台中进入gdal文件夹,后面就依次运行nmake /f makefile.vcnmake /f makefile.vc installnmake /f makefile.vc devinstallnmake /f makefile.vc clean4.如果编译出现出错如果是连接错误,肯定是lib环境变量没有设置对如果是语法错误,则可能是include没有设置好,或者源码对vc编译器有些不好,需要手工改改源码。
编译完成后在安装目录中可以找到gdal的动态库。
二、Linux环境下编译1.编译下载源程序,解压,运行以下三条命令./configuremakemake install对于64位操作系统编译会出现如下错误/usr/lib/libexpat.so: could not read symbols: File in wrong format是说expat是32位的不能在64位机器上。
解决办法如下:cd /usr/libmv libexpat.so libexpat.so.32ln –s /usr/lib64/libexpat.so libexpat.so然后再编译即可。
编译完成后在/usr/local/lib中可以找到gdal的动态库。
三、gdal java 编译1.windows环境进入<gdal-dir>\swig\java修改java.opt文件,指定jdk的路径,<gdal-dir>为gdal文件夹。
在vc控制台中进入<gdal-dir>\swignmake -f makefile.vc java将编译好的动态库放到需要使用它的地方:gdalconstjni.dllgdaljni.dllogrjni.dllosrjni.dllgdal.jar2.Linux环境进入<gdal-dir>\swig\java修改java.opt文件,指定jdk的路径,<gdal-dir>为gdal文件夹。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目的:将GDAL编译成C#可用的DLL
环境
GDAL-1.10.1
.net framework 4.0
vs 2010
swigwin-2.0.11
代码错误记录
1、函数名称错误
....\GDAL\gdal-1.10.1\swig\csharp\gdal文件夹中的Band.cs、Dataset.cs、Driver.cs三个文
件中BandUpcast、DatasetUpcast、DriverUpcast函数名称应分别改为Band_SWIGUpcast、Dataset_SWIGUpcast、Driver_SWIGUpcast。
2、重复定义
....\GDAL\gdal-1.10.1\swig\csharp\ogr文件夹中OgrPINVOK.cs、OsrPINVOK.cs中第188行
有名称为
static OgrPINVOKE() { }、static OsrPINVOKE() {}的函数,此函数重复定义,将重复定义的代码删除。
类似的将....\GDAL\gdal-1.10.1\swig\csharp\osr文件夹中OsrPINVOK.cs的代码也改过来。
3、安全透明代码的问题
猜测是.net framework 版本过高引起的
....\GDAL\gdal-1.10.1\swig\csharp\gdal中有很多cs文件,在需要使用到的cs文件中加入
using System.Security;
[SecuritySafeCritical]
要注意的是Dataset.cs第52行的Dispose()函数被override了,要在此函数上面,即51行也要写入
[SecuritySafeCritical]
然后就可以编译了XD
编译
用vs命令提示(2010)
进入....\GDAL\gdal-1.10.1\
分别执行
nmake /f makefile.vc
nmake /f makefie.vc install
nmake /f makefile.vc devinstall
进入....\GDAL\gdal-1.10.1\swig\csharp\
执行
nmake /f makefile.vc
nmake /f makefie.vc install
在C:\warmerda\bld\csharp中有8个dll。
在….\GDAL\gdal-1.10.1有Gdal110.dll
将这9个DLL放在一个文件夹里就可以引用了。