GISer们在实际学习与研究中经常会遇到这样一个需求:基于C#开发程序界面(WinForm或者WPF),使用GDAL来实现读写GroTiff、地理空间信息获取、地理坐标系转换、地图投影定义等功能。要想达到这一步,就必须首先打通C/C++编写的GDAL与C#语言之间的连接通道,也即不仅要将GDAL的C/C+源代码编译为应用程序扩展(.DLL)文件,同时还需将Proj4的功能集成到GDAL中一起编译。本文中,小编将整个编译过程分为“4个准备工作阶段”+“3个编译阶段”+“1个应用示例阶段”,向大家讲解如何使用Visual Studio 2017来实现这一目标。
小编的编译结果
如下图,图1为编译好的GDAL目录,默认编译到"C:\warmerda\bld"目录下,图2为C#程序所需的GDAL引用,共10个DLL文件。当然这10个DLL文件不是默认就是这样位于某个目录的,而是小编经将默认位于下文将讲到的proj-5.0.2\src目录下的proj.dll,上文所说的"C:\warmerda\bld\bin"下的gdal202.dll以及位于"C:\warmerda\bld\csharp"的8个DLL程序复制到了您当前所看到的目录。
准备工作——下载源码与程序
下载GDAL源码
小编这里下载的是GDAL2.2.0版本,当然你也可以从网址:https://trac.osgeo.org/gdal/wiki/DownloadSource下载其他版本,小编一开是下载的是最新版本2.3.1,但是发现在./swig/gdal、./swig/ogr、./swig/osr等目录下缺少很多C#源码文件(*.cs)(其实这可能是需要你自行编译),这会导致后边只能编译C/C++可用的GDAL,而无法编译C#版本的GDAL。
下载Proj4源码
从网址https://proj4.org/download.html下载tar.gz压缩格式的Proj4源码文件,小编这里下载的是最新版5.2.0版本。若是进入官网首页https://proj4.org,则点击左侧的“Download”链接即可进入下载页面。
下载swig程序
从网址http://www.swig.org/download.html下载swig程序的压缩文件(解压即可使用),小编这里下载的是3.0.12。若是进入swig官网首页http://www.swig.org/,则点击左侧的“Download”链接,然后在加载出来的页面http://www.swig.org/survey.html依次勾选“C#”和“Windows”,然后点击Submit,在加载出来的页面https://oligarchy.co.uk/swigsurveyresponse.cgi点击“Download area”即可进入最终的下载页面http://www.swig.org/download.html
准备工作——解压源码文件与程序
如下图,您需要将下载的GDAL源码文件、Proj4源码文件和Swig程序文件都解压到一个您自己新建的目录里( 稍微注意下小编这里对GDAL解压的目录处理 )。具体的步骤和所需下载的文件版本,请务必详细阅看下文。(这里, 小编在桌面上新建了一个名为“compile_gdal_csharp2”文件夹,然后,将所需的文件都解压到了里面 ,最终的目录结构如下。)
准备工作——修改nmakep.opt文件 中的4个地方
打开gdal2.2.0根目录下的nmake.opt文件(可使用记事本、vs code、notepad++等软件),需要修改的4个