将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的源代码目录后,依次敲入下面的命令行后回车,等待编译结束即可。
- 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放在一个文件夹里就可以引用了。