
GDAL
文章平均质量分 71
箜_Kong
2008年毕业于中国矿业大学地理信息系统专业。长期从事遥感图像处理算法和软件的编写工作。对于遥感图像的常用处理软件有很深入的了解。同时对GDAL有着较深入的理解。长期承接各种遥感图像处理算法程序的编写。
展开
-
GDAL编译Windows平台下64位的方式
最近写的项目需要在64位的服务器上,结果32位下编译的不能用,只好重新编译一套64位的。在编译GDAL时,出现了连接错误,如下: LINK : error LNK2001: unresolved external symbol > _OCTNewCoordinateTransformation at 8 LINK : error LNK2001: unresolved external symbol _vbSafeArrayToPtr at 16 LINK : error LNK2001:原创 2011-01-16 17:57:00 · 10945 阅读 · 11 评论 -
关于GDAL180中文路径不能打开的问题分析与解决
GDAL1.8.0发布很久了,一直没有将自己的工程中的版本更新到1.80。今天将其更新到1.80发现含有中文路径的文件都不能打开了,影像和矢量文件都是。仔细对比了GDAL1.72和GDAL1.80的代码,终于发现了问题的所在之处,详细代码在GDAL_HOME\port\cpl_v原创 2011-07-16 09:29:00 · 14612 阅读 · 27 评论 -
GDAL更新至1.8.1后,通过属性查询矢量出错问题的解决方式
在将GDAL更新至1.8.1之后,发现之前写的代码有些不能用了,前几天发现不能打开带有汉字的路径文件,并将其修改,详细参见我的优快云博客,今天又发现在使用OGR_L_SetAttributeFilter的时候,之前可以进行过滤,现在err一直返回5,并且提示“语法错误”,代码如原创 2011-07-19 21:23:21 · 4028 阅读 · 9 评论 -
GDAL源码剖析(四)之命令行程序说明一
一、GDAL工具通用命令下面的工具主要参考的GDAL官方网站中提供的帮助文档说明,此外还有我的一些经验,GDAL官方具体地址为:http://gdal.org/gdal_utilities.html。在所有的GDAL工具集中都会支持下面的通用命令行参数,其形式一般是以两个减号(--)开始,下面详细介绍:1. –version输出GDAL的版本信息,即版本号。原创 2011-11-16 20:59:51 · 16015 阅读 · 32 评论 -
GDAL源码剖析(一)
前言:一直在使用和研究GDAL的相关东西,发现网上对GDAL的内容倒是不少,但是很少有系统的介绍说明,以及内部的一些结构说明,基于这些原因,将本人的一些粗浅的理解放在此处,形成一个系列,暂时名为《GDAL源码剖析》(名称有点大言不惭,欢迎大家口水吐之,板砖拍之),供大家交流参考,有什么错误之处,望大家不吝指正,本系列对于GDAL的使用均是在Windows平台下,对于Linux平台下的不在此系列讨论原创 2011-11-03 22:02:41 · 42407 阅读 · 52 评论 -
GDAL源码剖析(二)之编译说明
一、简单的编译1、使用VisualStudio IDE编译首先进入GDAL的源代码目录,可以看到有几个sln为后缀的文件名,比如makegdal10.sln,makegdal80.sln,makegdal71.sln,makegdal90.sln 。这些文件是VisualStudio的工程文件,后面的数字对应的VS的版本号,71表示的VS2003,80表示VS2005,90表示VS2008原创 2011-11-04 21:22:12 · 37820 阅读 · 164 评论 -
GDAL源码剖析(六)之GDAL开发及其调试
写在开头:最近工作太忙,没时间更新,今天抽空更新一篇,上篇博客是四,这篇是六,中间还有一篇第五篇,主要将GDAL中的Python工具集,尽快给大家更新。一、简单的调用关于GDAL的使用,网上的资料都很多,主要还是要熟悉GDAL的组织结构,类以及类的函数等,熟悉了,使用GDAL就不在话下了。最常用的就是动态库的GDAL,当然你也可以使用静态库,这里只是简单的介绍使用动态GDAL库来做开发。原创 2011-12-14 21:58:55 · 22763 阅读 · 77 评论 -
GDAL源码剖析(四)之命令行程序说明二
接博客GDAL源码剖析(四)之命令行程序说明一http://blog.youkuaiyun.com/liminlu0314/article/details/6978589其中有个nearblack,gdalbuildvrt工具,没有做说明,以后加上,里面可能有很多不足,望大家批评指正,谢谢。1. gdalwarp 图像纠正用法:gdalwarp [--help-general]原创 2012-01-29 21:49:10 · 12380 阅读 · 11 评论 -
GDAL源码剖析(五)之Python命令行程序
一、 GDAL Python工具本文主要介绍的是GDAL工具集中的Python脚本命令,需要的环境必须是有Python环境和GDAL的Python版本。这是必须的,否则这些工具都不能用。对于已经安装ArcGIS的同学来说,Python都已经安装好了,可以直接下载GDAL的Python版本,然后就可以使用下面这些工具。1. rgb2pct.py 转换24位RGB图为8位图用法:rgb原创 2012-01-29 21:52:14 · 6858 阅读 · 2 评论 -
使用GDAL的MEM内存文件保存临时文件
在使用GDAL编写算法的时候,经常会将计算的中间结果存在一个临时的图像文件中,然后使用完再将其删除,如果临时文件就一个的话,创建一个也无所谓,但是当一个复杂的算法中可能会出现很多个临时文件的时候(我在编写Hariss角点自动匹配算法的时候有4个临时文件),这种情况下总觉得临时文件很不爽,此外第一个不爽的地方;第二个图像太大的时候,临时文件也会占用很大的空间,假如空间不足或者给定的临时文件路径不可写原创 2011-12-30 21:51:30 · 8760 阅读 · 15 评论 -
GDAL算法进度条使用说明
在调用GDAL算法的时候,希望能够显示其处理进度信息,其实在GDAL的算法API中,一般最后两个参数就是进度信息的指针。下面分别实现两种进度条信息,一种是在控制台中的进度条,一种是基于QT界面的进度条(你可以参考写一个MFC的)。 对于GDAL来说,本身就实现了一个基于控制台的进度条函数,名字叫GDALTermProgress,其函数说明参考这里 ,调用这个进度函数后,会在控制台中显示一原创 2012-02-20 21:08:40 · 15145 阅读 · 13 评论 -
如何使用GDAL重采样图像
在编写重采样图像时,可以使用GDAL来读写图像,然后自己编写重采样算法(最邻近像元法,双线性内插法,三次立方卷积法等)【关于这采样算法有时间我会单独写一篇文章来说明原理的】将计算的结果写入图像中来实现。 在GDAL的算法中,已经提供了五种重采样算法,其定义如下(位置gdalwarper.h 的46行):/*! Warp Resampling Algorithm */typedef原创 2011-01-11 23:11:00 · 26312 阅读 · 77 评论 -
使用GDAL创建Erdas格式的金字塔
在使用Erdas或者ArcGIS打开栅格图像的时候,会创建一个后缀名为rrd的金字塔文件,用于快速显示图像。那么在使用GDAL编写自己的图像算法后,像快速的在Erdas或者ArcGIS中显示,就需要自己创建rrd格式的金字塔文件,这样在打开该图像文件时,打开速度会非常快,在我的电脑上一个2G的img不到一秒钟可以全部加载进来。 查看GDAL中,有个gdaladdo的工具,就是一个专门用于原创 2011-01-10 20:21:00 · 22208 阅读 · 107 评论 -
GDAL的python版本安装使用
首先,编译Python版本的GDAL,具体编译可以参考之前的博客GDAL之Swig编译里面的内容,网址是:http://blog.youkuaiyun.com/liminlu0314/article/details/6945452。或者下载别人编译好的版本。 然后将下载下来的文件,全部复制到Python的安装目录下的 Lib\site-packages文件夹中,即可,如下图:原创 2012-03-01 20:45:50 · 10693 阅读 · 9 评论 -
GDAL/OGR 1.9.0获取shp文件中中文字段值和属性值乱码文件解决
GDAL/OGR 1.9.0又一个新的版本发布,但是又发现了一个对中文支持的问题,在之前的1.8.1版本开始,GDAL开始逐渐加入了对宽字节的支持,或者说是对各种编码的支持,GDAL在默认处理中,将所有的路径字串当作UTF-8编码进行处理,这就是为什么在1.8.0版本开始,如果使用默认编译出来的不支持中文路径了。具体解释参考之前的博客http://blog.youkuaiyun.com/liminlu0314原创 2012-03-07 19:17:23 · 15501 阅读 · 19 评论 -
多线程写图像文件的一点小测试
在处理遥感图像中,发现往往比较耗时的是在数据的IO中,尤其是在O(写入)的时候更加耗时。GDAL可以支持图像的多线程写入,下面结合实例进行简单的测试,看看实际效果会不会提高。 在这里我使用的是boost库的thread库来进行多线程创建。下面先使用计算PI来对boost的thread有个简单的说明。这里的计时使用的是boost的progress_timer。下面是使用多线程计算PI原创 2012-04-01 21:45:43 · 5361 阅读 · 8 评论 -
使用GDAL构造OpenCV的图像格式
OpenCV提供了大量的函数,但是OpenCV支持的图像数据格式太少,同时,对于GDAL可以支持很多的图像格式,但是GDAL又不没有像OpenCV那么多的算法函数。这两者真的是鱼和熊掌不能兼得,为了结束这种纠结的状态,既想支持多种图像格式,又想 用OpenCV丰富的函数,那么请往下看:基本原理就是,使用GDAL打开图像,然后读取图像数据,将图像数据重新构建一个OpenCV的IplImage类型,然原创 2012-04-06 22:48:50 · 9375 阅读 · 13 评论 -
GDAL的一个BUG
之前写了一个自动生成图像的落图文件的批处理程序,昨天测试部测试,发现程序居然崩溃了,这让我情何以堪啊。仔细询问测试过程,居然输入了一个含有100多个img数据的文件夹,好吧,测试部果然够厉害。 在那个发文件夹筛选了N久,才找出那个出错的文件,结果看到这个文件,我有种欲哭无泪的感觉。测试部的姐姐们,可能觉得img的文件太大,把ige文件删了,然后用记事本写了个50保存了个ige文件原创 2012-04-02 19:30:31 · 4774 阅读 · 6 评论 -
新编译的GDAL1.9 C/C++ C# Python版本
基于GDAL1.90版本编译使用VS2008 SP1编译集成GEOS,PROJ,HDF4,HDF5集成SQLite,LibPQ包含C++版本,C#版本,Python版本包含GDAL官网帮助文档优快云资源地址为:http://download.youkuaiyun.com/detail/liminlu0314/4256179 不要积分的,或者直接Q我,我发给你注意,原创 2012-04-25 21:03:59 · 5346 阅读 · 14 评论 -
如何使用GDAL进行图像镶嵌
相信看过和用过gdalwarp工具的同学都会对gdalwarp这个工具的强悍功能所震惊。今天主要就是用gdalwarp来进行图像镶嵌,当然这个镶嵌是比较简单的镶嵌,就是上层的图像会覆盖下层的图像。对于gdalwarp的介绍,我还要搬过来一下,见下面: The gdalwarp utility is an imagemosaicing, reprojection and warp原创 2012-05-04 21:27:50 · 12578 阅读 · 47 评论 -
GDAL源码剖析(十三)之GDAL网格插值说明
一、简介英文网址:http://www.gdal.org/grid_tutorial.html。网格插值的意思就是从离散的数据点创建一个栅格图像的过程。通常情况下,你有一系列研究区域的离散点,如果你想将这些点转换为规则的网格数据来进行进一步的处理,或者和其他网格数据进行合并等处理。下图是网格插值的一个示意图: 网格插值示意图使用数据插值和逼近算法可以用来解决这个问题,但是插值的原创 2012-06-11 22:40:30 · 12125 阅读 · 9 评论 -
GDAL源码剖析(九)之GDAL体系架构
在GDAL库中包含栅格数据的读写,矢量数据的读写,以及栅格和矢量数据的相关算法。下面主要对GDAL中栅格数据和矢量数据的体系架构做一个简单的说明。本人英文很烂,有些部分写出来的东西自己都看不懂,如果不懂,可以看英文。一、GDAL体系架构 参考GDAL官方文档:http://www.gdal.org/gdal_datamodel.html。 GDAL使用抽象数原创 2012-05-22 22:57:43 · 6778 阅读 · 10 评论 -
GDAL源码剖析(十一)之OGR投影说明
一、简介本文参考英文地址:http://www.gdal.org/ogr/osr_tutorial.html。OGRSpatialReference类和OGRCoordinateTransformation类主要用来提供定义坐标系统(投影和水准面)和转换坐标。这两个类都基于OpenGIS的坐标转换说明,并且使用Well Known Text格式来进行表述坐标系统。一些关于OpenG原创 2012-05-24 21:40:20 · 17652 阅读 · 43 评论 -
GDAL源码剖析(十)之编写自己的扩展格式
一、简介该节内容参考GDAL的英文原文:http://www.gdal.org/gdal_drivertut.html。通常,可以通过从GDALDataset和GDALRasterBand继承来实现GDAL对新的数据格式支持。同时,还需要为这种格式创建一个GDALDriver的实例,让后通过GDALDriverManager将该新的驱动注册给GDAL系统。该教程将为JDEM数据格式原创 2012-05-24 21:31:59 · 6788 阅读 · 4 评论 -
GDAL源码剖析(十二)之GDAL Warp API使用说明
一、简介本文原文地址:http://www.gdal.org/warptut.htmlGDAL Warp API(在文件gdalwarper.h中定义)是一个高效的进行图像变换的接口。主要由几何变换函数(GDALTransformerFunc),多种图像重采样方式,掩码操作选项等组成。这个接口可以对很大的图像进行处理。下面说明示例让你如何在程序中使用变换API。首先假定你已经熟悉了GD原创 2012-05-25 20:14:05 · 12649 阅读 · 45 评论 -
GDAL源码剖析(七)之GDAL RasterIO使用说明
一、关于RasterIO在GDAL中读写图像是最基本的操作,那么RasterIO也就是最基本的函数了,关于RasterIO有很多方式,这个函数的功能相当强大,下面慢慢说明。RasterIO一共有两个,一个是GDALRasterBand::RasterIO,另一个是GDALDataset::RasterIO,这两个RasterIO都可以对图像数据来进行读写,大多数情况下是一样的,但是还是有一些区原创 2011-12-14 22:59:04 · 53646 阅读 · 199 评论 -
使用GDAL打开裸数据(RAW)
使用GDAL打开裸数据首先需要指定裸数据的大小,即波段数,长度,宽度,以及裸数据之间的排列方式等。我们可以使用GDAL提供的虚拟文件格式来进行对裸数据的读取。首先,需要创建一个叫vrt的xml格式的文件,内容如下: Test.RAW 0 1 12000 MSB 对上面的几个字段做一个简单的说明,如下:1:图像的大小(宽度和原创 2012-07-16 23:00:19 · 9156 阅读 · 65 评论 -
使用OGR创建dxf格式矢量数据
使用OGR库创建DXF格式的数据和创建Shp格式的数据基本一样,代码除了注册驱动不一样之外,其他的完全一样。 需要注意的是,OGR创建DXF格式需要data文件夹下的head.dxf,所以首先要设置GDAL_DATA的目录。使用下面代码进行设置,也可以直接设置环境变量,但是比较麻烦,还是用代码设置比较方便:CPLSetConfigOption("GDAL_DATA","E:\原创 2012-07-24 23:14:31 · 7179 阅读 · 27 评论 -
使用GDAL获取网络数据
GDAL中提供了一个访问网络数据的接口,具体的帮助文档可以访问这里(http://gdal.org/cpl__http_8h.html)。不过前提是GDAL需要依赖一个第三方的开源库libcurl,libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当封装了的sockPHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)。, libcurl当前支持http, ht原创 2012-08-18 18:03:47 · 5496 阅读 · 9 评论 -
使用GDAL下载并转换SRTM的DEM数据(一)
有时候需要用到DEM数据,常用的免费的DEM数据就是SRTM的DEM数据。 SRTM数据主要是由美国太空总署(NASA)和国防部国家测绘局(NIMA)联合测量的,SRTM的全称是Shuttle Radar Topography Mission,即航天飞机雷达地形测绘使命,2000年2月11日上午11时44分,美国“奋进”号航天飞机在佛罗里达州卡那维拉尔角的航天发射中心发射升空,“原创 2012-10-14 00:50:51 · 15515 阅读 · 20 评论 -
GDAL C# “OSGeo.GDAL.GdalPINVOKE”的类型初始值设定项引发异常 解决方法
在使用C#版本的GDAL开发的时候,编译正常,启动的时候就会提示:“OSGeo.GDAL.GdalPINVOKE”的类型初始值设定项引发异常。“ 对于这个问题,原因主要就是没有找到dll导致的,在使用的时候不但要把C#的那八个dll拷贝到exe所在目录,还需要把gdal19.dll及其依赖的dll都拷贝过去,很多同学以为只要有了那八个C#版本的dll就ok了,其实是不对的,C#版原创 2012-04-25 21:21:08 · 15295 阅读 · 20 评论 -
GDAL\OGR读取数据示例 C#版本
首先创建一个Windows窗体应用程序,然后拖几个按钮和文本框,如下图所示。第一行用来显示栅格数据的路径,点击浏览找到一个栅格文件,将路径显示在文本框中,然后点击读取,将图像的基本信息显示在最下方的富文本框中;第二行的类似,显示的是矢量数据的信息。1、添加GDALC#版本的引用,注意只添加后面是_csharp.dll的四个文件。如下图所示。2、添加浏览按钮的事件,代码如原创 2012-10-16 21:39:12 · 13114 阅读 · 25 评论 -
GDAL\OGR C#中文路径不支持的问题解决方法
昨天的博客里面使用GDAL、OGR库写了一个用C#读取图像和矢量信息的一个小Demo。忘记测试中文路径了,今天测试了一下,发现中文路径果然不支持。如下图所示:出现这个问题很奇怪,我自己编译的GDAL库中我已经修改GDAL的源代码,把里面的UTF8设置为NO了,怎么还是会出现这个问题呢?为了验证我的GDAL库版本是不是支持中文路径,使用gdalinfo.exe工具来进行验证,在命令行中输入“原创 2012-10-17 20:20:34 · 8528 阅读 · 5 评论 -
GDAL插值使用示例
之前写的博客《GDAL源码剖析(十三)之GDAL网格插值说明》里面大致说明了GDAL插值的一些方法和原理,今天使用一部分示例数据进行说明。首先准备插值用的点数据,这里使用的数据大概是126个点组成的,排列按照X、Y、Z顺序。内容如下:53414.28,31421.88,39.55553387.8,31425.02,36.877453359.06,31426.62,31.22553原创 2012-11-01 20:22:24 · 9136 阅读 · 35 评论 -
代码的核心定义文件
之前的博客里面的很多代码,有一些自己定义的数据类型,很多人很迷糊,下面把我的代码定义的公用部分贴出来,方便大家查看代码。/***************************************************************************** Time: 2009-09-21* Project: 遥感平台* Purpose: 核心库文件* Autho原创 2012-11-26 20:58:03 · 4221 阅读 · 2 评论 -
使用GDAL工具对OrbView-3数据进行正射校正
本文原文地址:http://gis-lab.info/qa/orbview3-ortho-gdal.html,借助于Google Translate工具翻译整理了一下。下文中的命令行截图是我本机测试的截图。一、简介本文将探讨使用GDAL来对OrbView-3卫星影像进行正射校正。卫星图像来自免费的OrbView-3航天器,可以通过OrbView-3来了解更多信息。然而,在最原始的数据中翻译 2012-11-17 12:28:11 · 7767 阅读 · 11 评论 -
使用GDAL工具对卫星数据进行影像配准
一、 简介 本文将探讨使用GDAL来对卫星影像进行影像配准,依然以Orb-View3数据为例(选择北京市中心附近的影像为例)。其实按照文章中的方法,对任何影像都可以进行配准,不仅仅局限于卫星影像,只要能够提供图像行列号和真实的地理坐标就可以进行处理。 卫星图像来自免费的OrbView-3航天器,可以通过OrbView-3来了解更多信息。然而,在最原始的数据中,卫星图像是用没有地理位置原创 2012-12-08 12:32:48 · 11225 阅读 · 4 评论 -
使用GDAL下载并转换SRTM的DEM数据(二)
之前写了一篇使用GDAL下载SRTM的数据,只是大概说明了下怎么下载,文章后面说要写代码实现一下,最近太慢,一直拖着,这事肯定不会忘记的,呵呵。今天就把上次剩下的尾巴处理一下。之前的博客地址:http://blog.youkuaiyun.com/liminlu0314/article/details/8068715。 在上篇博客中大概分析了一下,首先要通过代码构造一个VRT文件。函数代码如下:int Crea原创 2012-12-08 13:22:12 · 5195 阅读 · 2 评论 -
GDAL源码剖析(七)之GDAL RasterIO使用说明(续)
之前写了一篇 《GDAL RasterIO使用说明》http://blog.youkuaiyun.com/liminlu0314/article/details/7072224,很多人对于RasterIO这个函数的用法还是有很多的不明白,可能之前的那篇文章没有写的很清楚,下面再对这个函数进行说明。 在进入主题之前,我们先了解一下图像的基本存储方式。所谓的图像,先用单波段图像说明,图像就是一个很大原创 2012-12-16 14:37:14 · 12969 阅读 · 53 评论 -
基于GDAL的一个通用的3×3模板函数
在进行遥感图像处理时,经常会用到很多的模板算子,比如平滑锐化等,拉普拉斯算子,索伯尔算子等等。其实这些算法都一样,用一个模板窗口在图像上移动,然后把计算的结果写入图像中。 在查看GDAL源代码的时候,有个gdaldem的工具,里面有一个类似3×3的模板函数,我改造了一下,可以支持任意的3×3的模板运算。/*** @brief 3*3模板计算处理函数* @param hSrcBand原创 2012-12-18 21:40:30 · 8248 阅读 · 16 评论