VS2017中调用gdal(C#版)的方法二(含gdal下载地址,配置过程,代码测试,超详细!!)
VS2017中gdal(C#)版的配置与测试
上次记录了直接在VS2017中下载并应用gdal的方法,这次来记录一下网上下载的安装包配置与测试的方法。
一、环境、版本及下载地址
win10,vs2017社区版,gdal2.4.4
还是像之前在Unity中应用gdal一样,最好是下载已经编译好的C#版的gdal,不然自己配置真的很容易出错,我就是这样的,下面提供不同版本的gdal下载地址:
1.GDAL2.4.4(C#版、64位): https://download.csdn.net/download/chengbaola/12672938
2.GDAL2.4.4(C#版、32位): https://download.csdn.net/download/chengbaola/12672920
3.GDAL3.0.4(C#版、64位): https://download.csdn.net/download/chengbaola/12672954
4.GDAL3.0.4(C#版、32位): https://download.csdn.net/download/chengbaola/12672947
本次选择GDAL2.4.4(C#版、64位)
二、gdal配置
1.下载后的gdal文件结构
(这个1是我从我的Unity那篇文章copy过来的,勿喷)
64位的2.4.4版本的gdal,下载之后如下:
解压之后,文件夹中文件的结构如下:
所需要的dll在bin文件夹、bin/gdal/csharp文件夹,有时也会用到bin/gdal-data文件夹,但是本次并未涉及。
2.环境配置
首先,新建一个名为GDALTextTwo的窗体应用程序;
将项目的Any CPU改成x64,这是因为gdal是64位的,要一一对应;
找到项目所在文件夹下的项目所在文件夹\GDALTestTwo\bin\x64\Debug文件夹;
找到GDAL所在文件夹\release-1911-x64-gdal-2-4-4-mapserver-7-4-3\bin\gdal\csharp文件夹下的 gdal_csharp.dll、gdal_wrap.dll、gdalconst_chsarp.dll、gdalconst_wrap.dll、ogr_csharp.dll、ogr_wrap.dll、osr_chsarp.dll、osr_wrap.dll 8个dll文件;
将这8个dll文件复制到Debug文件夹下;
找到GDAL所在文件夹\release-1911-x64-gdal-2-4-4-mapserver-7-4-3\bin文件夹;
将此文件夹内所有的dll文件,全部复制到Debug文件夹下,这是因为之前复制的那8个dll,对此bin文件夹内的dll有依赖关系。
回到创建的项目,在引用上右击——添加引用——浏览,找到项目的Debug文件夹,将复制过去的 gdal_csharp.dll、gdalconst_chsarp.dll、ogr_csharp.dll、osr_chsarp.dll
三、代码测试
代码如下:
在using OSGeo.GDAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GDALTestTwo
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
Gdal.AllRegister();
Dataset ds = Gdal.Open(@"C:\Users\Administrator\Desktop\WCC\tin_TinRaste11.tif", Access.GA_ReadOnly);
int w = ds.RasterXSize;
int h = ds.RasterYSize;
MessageBox.Show("image width=" + w + ",height=" + h);
}
}
}
运行,出现如下结果,说明配置成功。
以上便是VS2017配置、应用gdal的第二个方法。
上一篇: Unity的Transform组件
下一篇: exit()和return的含义及区别