注意问题:

1.GDAL 使用官网生成好的dll,必须把Bin目录下的dll一并加到执行目录下去,否则会出错。

 2. 用环境变量设置引用路径可以避免一大堆dll放一起。代码如下:

 /// <summary>/// Function to determine which platform we're on/// </summary>private static string GetPlatform(){return IntPtr.Size == 4 ? "x86" : "x64";}/// <summary>/// Construction of Gdal/Ogr/// </summary>public static void Gdal_Configuration(){var executingAssemblyFile = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase).LocalPath;var executingDirectory = Path.GetDirectoryName(executingAssemblyFile);if (string.IsNullOrEmpty(executingDirectory))throw new InvalidOperationException("cannot get executing directory");var gdalPath = Path.Combine(executingDirectory, "gdal");var nativePath = Path.Combine(gdalPath, GetPlatform());// Prepend native path to environment path, to ensure the// right libs are being used.var path = Environment.GetEnvironmentVariable("PATH");path = nativePath + ";" ;Environment.SetEnvironmentVariable("PATH", path);Gdal.AllRegister();}

3.最好使用自己手动编译的dll,会少很多没使用到的dll,只用9个dll。

4.用GDAL的用户控件,第二次拖动控件进窗体后会造成“未能加载工具箱项,将从列表中移除”的问题,建议代码手动添加吧,是非托管dll的问题。

编译步骤如下:

首先,下载GDAL源码,官网下即可。

打开D:\gdal\nmake.opt

修改54行: GDAL_HOME = "D:\GDAL"。(编译生成文件的保存路径)

83行: SWIG = D:\swigwin-2.0.4\swig.exe(必须是swigwin.exe的完整路径)。

153行: "#WIN64=YES",去掉#。注意保存。

675行:"SYM_PREFIX=_",去掉最后面的下划线。

打开D:\gdal\makefile.vc,修改23~26行,将“_”改为$(SYM_PREFIX)。如图:

打开D:\1.10.1\swig\csharp\AssemblyInfo.cs文件,将94行代码注释掉,解决安全透明代码无法调用的问题。

打开 D:\1.10.1\swig\csharp\gdal\GdalPINVOKE.cs

D:\1.10.1\swig\csharp\ogr\OgrPINVOKE.cs

D:\1.10.1\swig\csharp\osr\OsrPINVOKE.cs

修改188~193行:将重复的代码注释掉,解决接口重定义的问题。

打开D:\1.10.1\swig\csharp\gdal\Band.cs|Dataset.cs|Driver.cs,修改第17行,解决接口成员名错误问题。

public Band(IntPtr cPtr, bool cMemoryOwn, object parent) : base(GdalPINVOKE.Band_SWIGUpcast(cPtr), cMemoryOwn, parent)

public Dataset(IntPtr cPtr, bool cMemoryOwn, object parent) : base(GdalPINVOKE.Dataset_SWIGUpcast(cPtr), cMemoryOwn, parent)

public Driver(IntPtr cPtr, bool cMemoryOwn, object parent) : base(GdalPINVOKE.Driver_SWIGUpcast(cPtr), cMemoryOwn, parent) {

3、编译

开始—所有程序—Microsoft Visual Studio 2010—Visual Studio Tools—Visual Studio x64兼容工具命令提示(2010)

打开命令行工具,cd d:\gdal-1.10.1

然后执行 nmake /f makefile.vc

nmake /f makefile.vc install

nmake /f makefile.vc devinstall

注:编译可能要费一些时间,不要着急。

以上是完成了C++的编译,要再进入csharp编译。

执行         cd swig\csharp

nmake /f makefile.vc

(运行这一步有问题的话,加以下两句:namke /f makefile.vc clear 、nmake /f makefile.vc interface)

nmake /f makefile.vc install

正常情况下可以编译成功。

命令参数说明:

使用命令:nmake -f makefile.vc MSVC_VER=1600 DEBUG=1 ANALYZE=1 WITH_PDB=1 可以设置使用的c++版本
MSVC_VER:VC++的版本,下面是对应关系
1900 = 14.0(2015)
1800 = 12.0(2013)
1700 = 11.0(2012)
1600 = 10.0(2010)
1500 = 9.0 (2008)
1400 = 8.0 (2005) - specific compilation flags, different from older VC++
1310 = 7.1 (2003)
1300 = 7.0 (2002)
1200 = 6.0
DEBUG:bebug版本标识,不使用此参数,默认为Release
ANALYZE=1:对GDAL代码进行分析,这个一般不用
WITH_PDB=1:标识生成调试信息

c# 使用GDAL处理大图相关推荐

  1. Python gdal 拼图

    1.这些就可以将小图拼接成大图 import PIL.Image as Image import os import numpy as np# IMAGES_PATH = 'D:\lppyqtdata ...

  2. arcgis合并tif影像_微图影像地图导出拼接大图的参数说明

    1. 概述 微图是一款集地图下载与GIS功能于一体的轻量级GIS产品,相较于X3版本的万能地图下载器,它有更丰富的地图数据和更专业的GIS功能. 尽管微图的软件界面已经足够简洁明了,但为了让新用户能更 ...

  3. JAVA IDEA集成geotools gt-mif gdal读取.MIF

    JAVA IDEA集成geotools gt-mif gdal读取.MIF 1. 结论 2. 问题1:gdal maven下载不下来 3. geotools,gt-mif maven配置 4. 源码 ...

  4. Java gdal .mif/.mid文件读取

    上一篇研究了 Windows10 64位 Python读取.mif/.mid文件并转成txt 今天研究一下Java读取MIF. 俩种解决办法: (1)Python程序读取.mif/.mid转成txt, ...

  5. C# GDAL 学习一

    最近一直琢磨如何用C#+GDAL读取栅格数据(.tif或.img),运气不错的在GDAL 的官网上找到一部分源码.经过本人测试,效果还不错.学习还将继续深入下去. 参考网址:http://trac.o ...

  6. 使GDAL库支持中文路径或中文文件名的处理方法

    之前生成的gdal 2.1.1动态库,在通过命令行执行时,遇到有中文路径或中文图像名时,GDALOpen函数不能正确的被调用,如下图: 解决方法: 1.      在所有使用GDALAllRegist ...

  7. GDAL库简介以及在Windows下编译过程

    GDAL(Geospatial Data Abstraction Library,地理空间数据抽象库)是一个在X/MIT许可协议下的开源栅格空间数据转换库.官网http://www.gdal.org/ ...

  8. php帝国系统调出图片内空,帝国CMS图集字段的大图,小图,说明的调用方法

    本文实例讲述了帝国CMS图集字段的大图,小图,说明的调用方法.分享给大家供大家参考.具体方法如下: 复制代码代码如下: $arr = array(); $arr = $navinfor['morepi ...

  9. gdal 1.9+python 2.7开发环境配置

    最近项目使用Cesium平台基于WegGl做web地球,其中关于地形数据有一种支持格式为terrain的地形数据.这种格式可以通过一个python工具切dem来得到. 下面记录下配置gdal+pyth ...

最新文章

  1. DevOps,到底是开发还是运维?
  2. tensorflow2 目标检测_基于光流的视频目标检测系列文章解读
  3. WPF 中设置Combox下拉框Text 显示值
  4. 内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解
  5. UIImage 图片处理:截图,缩放,设定大小,存储
  6. AJAX ControlToolkit学习日志-AnimationExtender控件(3)
  7. 数字货币交易系统_区块链交易所开发,数字货币平台功能与安全
  8. python ffmpeg剪辑视频_FFmpeg精准时间切割视频文件
  9. 钢琴家以前是学计算机的,奇特的钢琴家——裘元朴
  10. 初学太极拳须知--吴公仪
  11. ElementUI之el-pagination样式修改(小三角、“前往”、页码数)
  12. darknet训练时Couldn‘t open file的问题解决
  13. mac文件反选_【PS反选键是什么?】Photoshop该如何进行反向选择?
  14. 视频教程-Ajax+jquery从入门到精通2017视频教程-JavaScript
  15. python freshman day2
  16. 蓝桥杯---Cowboys---DP
  17. 2020牛客暑期多校训练营(第八场)题解
  18. 很火的微信聊天界面个性签名设置方法,除了好看更重要的是...
  19. linux上jira安装
  20. 神奇的cyclegan!

热门文章

  1. Nmap流量特征修改(NTA、IDS、IPS、流量审计)
  2. CSS进阶(十)position:relative
  3. 百度阿里网易大疆等大小厂前端校招面筋 | 掘金技术征文
  4. Can you answer these queries II
  5. Codeforces Round #402 D String Game(二分)
  6. MHA环境搭建【4】manager相关依赖的解决
  7. 服务器 发布 WebService 错误
  8. 为什么 Java 在 25 年之后依旧如此年轻:一个架构师的看法
  9. 面试官:缓存一致性问题怎么解决?
  10. Java基础夺命连环16问