8u 类型的 rgb 8u键盘rgb是什么意思思

【SYNCPOWERSPE6V8UFS26RGB ESD TVS电路保护二极管】价格_厂家_图片 -Hc360慧聪网
您是不是在找:
买家还在看:
商品数量:
广东省&深圳市
手机访问店铺
供应SYNCPOWERSPE6V8UFS26RGB ESD TVS电路保护二极管
买家正在看
相关商品推荐
&20.00/PCS
&100.00/个
商家等级:
所在地区:
广东省 深圳市
认证信息:
同参数产品
同参数产品
正在加载中........
慧聪网厂家深圳市星河微电子有限公司为您提供SYNCPOWERSPE6V8UFS26RGB ESD TVS电路保护二极管的详细产品价格、产品图片等产品介绍信息,您可以直接联系厂家获取SYNCPOWERSPE6V8UFS26RGB ESD TVS电路保护二极管的具体资料,联系时请说明是在慧聪网看到的。
热门商品推荐
我的浏览记录
其他二极管相关资源
其他二极管热门产品搜索
其他二极管相关热门专题
您在慧聪网上采购商品属于商业贸易行为。以上所展示的信息由卖家自行提供,内容的真实性、准确性和合法性由发布卖家负责,请意识到互联网交易中的风险是客观存在的。推荐使用,保障您的交易安全!
按字母分类 :
让慧聪网撮合专家为您解决采购难题
您采购的产品:
请输入采购产品
您的手机号码:
请输入手机号码
*采购产品:
请输入采购产品
*采购数量:
请输入采购数量
*采购截止日期:
请输入正确的手机号码
请输入验证码
*短信验证码:
<input id="valid_Code1" maxlength="6" placeholder="请输入验证码" name="VALIDCODE" class="codeInput" onkeyup="this.value=this.value.replace(/\D/g,'')" onkeypress="if(event.keyCode
57) event.returnValue =" type="text">
免费获取验证码
为了安全,请输入验证码,我们将优先处理您的需求!
请输入验证码
发送成功!
慧聪已收到您的需求,我们会尽快通知卖家联系您,同时会派出采购专员1对1为您提供服务,请您耐心等待!
电话:3 &&
联系人:张琼燕&经理
公司名称:深圳市星河微电子有限公司
请输入正确的手机号码
请输入验证码
*短信验证码:
免费获取验证码
为了安全,请输入验证码,我们将优先处理您的需求!
请输入验证码
每一份需求都会在24小时内得到行业多家优质供应商报价。
每一份需求的报价供应商工商信用资质都会经过专业人员检验,交易安全有保障。
免费咨询行业专家
免费咨询行业专家
服务主题:
筛选发货地
验证供应商真伪
提供其他优质供应商
采购数量:
用途描述:
成功加入采购单!
当前采购单共3种货品
成功加入采购单!
当前采购单共3种货品
不能购买自己发布的产品!
选中货品中含失效货品,无法完成下单,可能是:
1.货品库存不足
2.货品已过期,或被卖家删除
3.货品不支持在线交易
卖家暂时不在线,留下联系方式,卖家会主动联系您
*我要采购:
我的姓名:
留言内容:君,已阅读到文档的结尾了呢~~
IPP程序设计——所有资料文档均为本人悉心收集,全部是文档中的精品,绝对值得下载收藏!
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
IPP程序设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口6401人阅读
空间数据库(14)
一、GDAL简介
&&& GDAL官方网站http://www.gdal.org/,本文章中的基本内容都是参照官网中的信息,如有错误或者与官网中的内容冲突,以官网中的为正确。
在开始文章之前,我想先提出几个问题,什么是GDAL?GDAL能做什么?GDAL怎么使用?GDAL内部结构是怎么组织的?GDAL提供的算法原理是什么?对于上面的几个问题,希望大家看完该系列文章后能对上面的几个问题少点疑惑,希望能对感兴趣的童鞋们有所帮助。
什么是GDAL?这个问题比较简单,通俗的讲,GDAL是一个读写空间数据(这里的空间数据包括栅&#26684;数据和矢量数据)的开源库(但不仅限于此,此外还提供了一些非常常用的算法和工具)。严&#26684;的讲,大家可以参考GDAL首页上的介绍。
GDAL is a translator library for raster geospatial dataformats that isreleased under an X/MIT style Open Source license by the Open Source GeospatialFoundation. As alibrary, it presents a singleabstract data model to the callingapplication for
allsupported formats. It also comes with a variety ofusefulcommandline utilities fordata translation and processing. TheNEWSpagedescribes the July 2011 GDAL/OGR 1.8.1 release.
The related OGR library(which lives within the GDAL source tree) providesa similar capability forsimple features vector data.
二、GDAL目录结构
&&& 首先对于GDAL的目录结构进行一个简单的介绍。GDAL源代码下载地址:http://trac.osgeo.org/gdal/wiki/DownloadSource,或者安装svn从源代码服务器下载,svn地址是:http://svn.osgeo.org/gdal/trunk。
&&& 如果是使用下载的压缩包,其目录结构如下图:
图1 GDAL源码压缩包文件目录结构
&&& 如果使用svn下载的源代码,目录结构如下:
图2 GDAL SVN源码文件目录结构
从上面两张图中可以看出,GDAL的目录结构不管是用什么方式获取的源代码,它的目录结构都是一样的,下面就针对目录结构中的每个文件夹和文件做一个简单的说明。(按照字母顺序来进行说明)
下面先对文件夹进行说明:
1、alg文件夹:alg文件夹中存放的是GDAL库中提供的一些算法的源代码,这些算法包括但不限于:DEM生成等高线算法;图像纠正算法(几何纠正,TPS纠正,正射RPC纠正);栅&#26684;矢量化算法;矢量栅&#26684;化算法;&#26684;网计算算法;PCT和RGB互转算法;分类图的小碎斑块去除算法等。
2、apps文件夹:apps文件夹中存放的是GDAL库中提供的一些命令行工具集的源代码,这些工具集的介绍可以参考http://gdal.org/gdal_utilities.html,将来我会对这些工具做一个简单的说明。其中有些工具非常的有用,比如gdalinfo,可以使用该工具来查看图像的元数据信息等。
3、bridge文件夹:bridge文件夹中存放的是用来连接GDAL抽象类的定义以及GDAL自己的结构体定义和实现的源代码。具体到后面涉及到GDAL的实现原理时会对该文件夹作一个比较详细的介绍。
4、data文件夹:data文件夹中存放的是GDAL库中需要用到的一些“配置文件”(此处用配置文件可能不太准确),这些文件主要有ESRI的投影文件,ESPG的投影文件,PCI的投影和椭球体文件,autoCAD的头文件,以及其他的一些文件。在GDAL库中有很多时候会自动读取该文件夹中的文件,一般是通过环境变量来查找该文件夹,环境变量的名字叫GDAL_DATA,&#20540;就是data文件夹的路径,或者可以在你的程序中使用函数CPLSetConfigOption(&GDAL_DATA&,&C:\GDAL\data&);来进行设置该文件夹的目录,如果没有设置GDAL会自动从环境变量中查找,如果还是没有找到,那么GDAL可能会提示错误,比如如果不设置GDAL_DATA,那么在写如atuocad的dxf&#26684;式的时候就提示创建不成功,后面遇到的话会再进行说明。
5、doc文件夹:doc文件夹存放的是用来生产GDAL帮助文档的一些dox文件,dox文件是使用doxygen工具来进行生成的,后面会对doxygen工具作一个简单的介绍和说明,以及在自己的工程中怎么使用doxygen生成自己的程序的开发帮助文档等。总之一句话,这个文件夹就是用来生成GDAL库的帮助文档的一些东西。后面会告诉大家如何生成一份GDAL的帮助文档,当然你也可以把gdal.org整个网站抓下来,J
6、frmts文件夹:这个文件夹可以说是GDAL代码中东西最多的一个文件夹了,每次更新GDAL的版本后都会发现这个文件夹中会多出几个文件夹,同时GDAL也会中支持的文件&#26684;式中多出来几个新的文件&#26684;式。没错,这个文件夹存放的就是GDAL针对每种不同的特定的图像&#26684;式解析的源代码,可以举几个简单的例子,比如bmp文件夹就是解析BMP图像的,hfa文件夹就是用来解析Erdas的img图像&#26684;式,raw文件夹用来读取ENVI的hdr文件,还有pcidsk文件夹就是读取PCI的pix&#26684;式的等等。所以这个文件夹存放的是解析各个文件&#26684;式的源代码。
7、gcore文件夹:通过名字大家也应该知道这个文件夹是做什么的了,叫core的肯定都是很核心的东西了,这个文件夹就是GDAL的灵魂所在,主要存放的GDAL抽象类的数据集,波段,图像读写接口等都在这个里面实现的。如果要知道GDAL的抽象类是怎么对图像&#26684;式进行抽象的,可以看看这个里面的代码。
8、html文件夹:html文件夹如果使用压缩包的话,里面应该是空的,这个文件夹主要是用来存放GDAL的生成的帮助文档的地方,主要是使用前面介绍的doc文件夹中的dox脚本,使用doxygen工具生成的GDAL帮助文档会出现在这个文件夹中。后面会和doc文件夹一起进行一个详细介绍。
9、m4文件夹:m4文件夹存放的有好几个已m4为后缀名的文件,m4文件叫MacroProcessor Library,m4文件是编译基础中最核心的文件,这个文件主要是用autoconf来产生configure配置文件,继而自动生成Makefile文件。这个文件夹中Windows平台下貌&#20284;没什么作用,可能是我还不知道吧,在此略过。
10、man文件夹:man文件夹貌&#20284;是用来生成linux或者其他平台下的帮助文件,估计是可以使用linux下的man帮助吧。Windows平台下貌&#20284;也没什么用,略过。
11、ogr文件夹:用过GDAL的肯定知道ogr库吧,在很久很久以前,GDAL和OGR是两个库,GDAL专门负责读取栅&#26684;数据,OGR库负责读取矢量数据,然后可能是因为两个库分开有些不方便,比如GDAL的算法库中经常会用到矢量数据的读取,或者还有别的原因吧,现在将这两个库整合在了一起,目前OGR库就是GDAL库的一个子集。其实OGR库还是可以单独编译出来的。Ogr文件夹就是存放OGR库源代码的文件夹。这个文件夹里面也是有很多东西的,后面再详细进行介绍。
12、port文件夹:port文件夹中存放的是port库的东西,port库对于GDAL库来说是一个底层的支持库,port库中定义了一些字符串的操作,文件处理,网页请求,数据库连接,哈希表,字符加密文件压缩等基础的函数。比如GDAL中所有的导出函数符号CPL_DLL就是在这个port文件夹中定义的,还有frmts文件夹中,打开文件,打开数据库,打开网络路径等都是用的port库,以及字符串的处理等。
13、swig文件夹:swig文件夹主要是存放swig的脚本。Swig全称叫SimplifiedWrapper and Interface Generator,网址是www.swig.org,&&&&&&&&&swig的作用就是可以将C/C&#43;&#43;写的库封装为Python,C#,Java,Perl和 Ruby等其他语言的访问接口。网上GDAL的C#版本就是使用swig来编译出来实现的,很强大吧。后面有时间的话,会写一篇关于swig编译GDAL的文章。
14、vb6文件夹:这个文件夹中用来将GDAL编译成一个VB6的模块,对于里面具体的文件说明,以及如何编译参考文件夹中的readme.txt,由于我对VB6的使用,还是仅限于拖个按钮,写个单击事件的基础,对于模块之间的调用,实在是不太懂,所在就不说明了。想用VB6使用GDAL的可以自己研究一下,应该也不是很难。
15、wince文件夹:顾名思义,这个文件夹中的东西就是用来编译Windows CE平台下的GDAL库用的,具体编译请参考其中的说明文档。
文件夹介绍完了,下面对文件进行一个大概说明:
1、aclocal.m4:同上面的m4文件夹
2、autogen.sh:Linux平台下的shell文件,用来调用autoconf来产生configure配置文件的。
3、COMMITERS:该文件中的内容是GDAL开发人员的信息,姓名,联系邮箱以及各自负责开发的模块说明等。
4、config.guess,config.sub,configure,configure.in:这四个文件貌&#20284;都是linux平台下的配置文件,中Windows下没啥用,略过。
5、Doxyfile:Doxyfile就是前面doc文件夹中说明提到的doxygen的工程文件,用来生成帮助文档用的,后面在介绍doxygen的使用是会对该文件进行一个说明。
6、GDALmake.opt.in:这个文件是linux平台下的GDAL库编译配置文件,功能在后面的nmake.opt中介绍。
7、gdalnightlysvn.sh:Linux平台下调用svn获取GDAL源代码的一个shell脚本。
8、GNUmakefile:GNU的make文件。
9、HOWTO-RELEASE:GDAL发布版本的一些说明。
10、&&& install-sh:GDAL的安装shell脚本,Linux平台下。
11、&&& LICENSE.TXT:GDAL的许可说明文件。
12、&&& ltmain.sh:libtool的shell脚本,Linux平台下,Windows下貌&#20284;没用到。
13、&&& makefile.vc:GDAL的编译文件,用来将源代码编译成dll文件,后面会在GDAL编译中作一个介绍。
14、&&& makegdal_gen.bat:用来生成VS的工程文件的一个批处理文件,后面在GDAL编译中会对该文件的使用方式做一个说明。
15、&&& makegdal10.sln:文件夹中所有的sln文件都是VS的项目文件,文件名后的数字代表的是VS的版本号。
16、&&& makegdal10.vcxproj和makegdal71.vcproj:VS的工程文件,该文件可以由makegdal_gen.bat文件自动生成,后面详细介绍。
17、&&& mkbindist.sh,mkgdaldist.sh和mktestdist.sh:三个shell脚本文件,Windows下没用,略过。
18、&&& NEWS:GDAL的新增功能,以及修复的bug记录等。
19、&&& nmake.opt:GDAL编译选项配置文件,在编译GDAL中,可以指定GDAL绑定的其他库等都在这个里面进行设置。在后面的GDAL编译中会详细介绍说明。
20、&&& nmake-wince.opt:编译wince版本的编译选项配置文件。
21、&&& PROVENANCE.TXT:GDAL目录说明文件,如果上面说明的不够清楚,可以参考这个文件。
22、&&& submake.bat:一个编译的批处理文件,目前没啥用。
23、&&& svnkeywords.sh:又是svn的一个shell脚本。
24、&&& VERSION:GDAL版本信息。
一、简单的编译
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文件夹中存放的是各种数据&#26684;式的说明文档。
2、使用cmd命令行编译
使用cmd命令行编译,首先在“开始菜单\所有程序\Microsoft Visual Studio 2008\Visual Studio Tools\ Visual Studio 2008命令提示”,点击“Visual Studio 2008 命令提示”会弹出下面的界面:
然后使用cd命令,切换到GDAL的源代码目录,如下图所示:
切换到GDAL的源代码目录后,依次敲入下面的命令行后回车,等待编译结束即可。
nmake -f makefile.vc
nmake -f makefile.vc install
nmake -f makefile.vc devinstall
同时还有其他的命令,如:
nmake -f makefile.vc clean
nmake -f makefile.vc MSVC_VER=1400clean
nmake -f makefile.vc MSVC_VER=1400DEBUG=1
&&&&&& 上面六行的命令含义依次是:
编译GDAL库
编译GDAL库,并安装(这里安装的意思就是将生成的dll,exe等文件拷贝到C:\warmerda\bld目录),
编译GDAL库,并安装开发者模式(安装的意思同上,开发者模式意思是将开发用的include文件夹中的头文件和lib文件一同拷贝到C:\warmerda\bld目录,此时会在C:\warmerda\bld目录中多出来两个文件夹,分别是include和lib,分别存放的是GDAL的头文件和lib文件,用于调用GDAL库使用)。
清理GDAL库,同时会删除编译GDAL库所生成的临时文件,作用相当于在VS环境中的清理命令。
作用同上,但是添加了一个MSVC_VER=1400,表示使用VS2005编译。
编译GDAL库的debug模式,可以用来调试GDAL源码。
二、自定义编译
GDAL的强大之处不单单在于可以读取栅&#26684;和矢量数据,同时它的强大之处还在于下面几个方面,第一可以进行矢量图形之间的一些常用操作,比如:求交,求并,缓冲区等等。第二可以进行投影和坐标转换。如果使用GDAL默认的编译方式,那么上述的两个非常强大的功能您将不能使用,因为GDAL这两大功能是基于另外的两个开源库GEOS(Geometry Engine, Open Source)库和PROJ4库来实现的。下面对这两大库分别做一个简单的说明,以及如何修改编译文件,让GDAL能够拥有这两大功能。
1、集成GEOS
关于GEOS库的说明,网上有很多,同时在GEOS的官网http://geos.osgeo.org有详细的说明,简单的来说,GEOS提供了OGC规范中简单几何要素对象操作的C&#43;&#43;语言的实现。在地理信息系统领域,拓扑模型是重要的,其计算方法简单但是很难得以实现。使得GEOS不同于其他项目的也正是“空间谓词”与“空间操作”。空间谓词是比较两个空间对象并返回一个布尔变量&#20540;作为结果,它表明了存在于两个空间对象之间特殊的关系。比如典型的空间谓词有Contains(), Intersects(),
Touches(), andCrosses()函数等。GEOS项目中对该些函数的实现是异常强壮的,即使是奇异几何对象或是临时的坐标系统运算也不能使其运算不正常或计算错误。目前绝大多数的商业软件仍然在最基础的空间谓词处理上相对成熟,这正是GEOS项目的重要意义。“空间操作”则主要是对两个几何对象进行计算并且返回一个新的几何实体。比较典型的操作函数如Difference(), Union()以及Buffer()等。GEOS中的操作算法已经被广泛的经过了测试。GEOS类库被各类开源空间信息软件项目广泛应用,使用GEOS,它们可以基于最新的规范的几何实体来完成,同时也拥有了复杂空间方法的实现。
关于GEOS的说明和编译,后面会单独写一篇文件进行介绍,这里假设已经下载的是编译好的GEOS库。
首先使用记事本或者其他的文本编辑器打开GDAL源代码目录下的nmake.opt文件,找到“# Uncomment forGEOS support”这句,大概在405行左右,将下面三行代码:
#GEOS_DIR=C:/warmerda/geos
#GEOS_CFLAGS =-I$(GEOS_DIR)/capi -I$(GEOS_DIR)/source/headers -DHAVE_GEOS
#GEOS_LIB&&&& =$(GEOS_DIR)/source/geos_c_i.lib
GEOS_DIR=F:\Work\3rdPart\geos-3.2.2
GEOS_CFLAGS =-I$(GEOS_DIR)/capi -I$(GEOS_DIR)/source/headers -DHAVE_GEOS
GEOS_LIB&&&& = $(GEOS_DIR)/source/geos_c_i.lib
其中F:\Work\3rdPart\geos-3.2.2是我本机的GEOS存放的主目录,后面两行设置的是GEOS的头文件目录和lib文件路径。设置好后保存即可。对比结果如下图如下:
保存完nmake.opt之后,按照第一步中的编译方式进行编译即可。编译后的GDAL就将会支持图形之间的操作等处理。函数主要是在OGR库中,后面会在OGR库中进行详细的介绍说明。编译后,千万别忘记将geos_c.dll文件拷贝到gdal18.dll的同级目录下,否则会提示你找不到geos_c.dll文件。
2、集成Proj4
Proj4是一套开源的坐标投影转换类库,它可以完成在两套不同制图投影系统之间的转换,同样不同的椭球体或大地基准面之间也可以成功的完成转换。GDAL中用到的坐标转换,投影转换,几何纠正,正射纠正等算法,都离不开坐标转换,也就是说要使用这些算法,必须有proj4库的支持才行。同GEOS库的配置方法,在nmake.opt文件中,找到proj4库的位置,大概在352行左右。将下面的三行代码:
#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库存放的位置,第三行为proj库的lib文件所在路径。修改后保存即可,对比结果如下图如下:
同GEOS库一样,保存完nmake.opt之后,按照第一步中的编译方式进行编译即可。对于Proj库的使用后面会在有一篇文章对其做一个简单的介绍说明。编译后,同样千万别忘记将proj.dll文件拷贝到gdal18.dll的同级目录下,否则会提示你找不到proj.dll文件。
3、集成HDF数据读取
通过上面GEOS和PROJ库的介绍,相信对gdal的配置文件,nmake.opt有一个比较初步的了解了吧,那么下面对于使用GDAL支持hdf数据的读取也是同样,先下载好hdf4和hdf5的库,我用的是HDF4.2.6和HDF5-1.8.7两个库,在hdf的官方网上有编译好的库,直接下载编译好的库即可,对于hdf库的编译,我没有进行编译过,应该和其他的开源库都是差不多吧。同时官网提供了32位的库和64位的库,这里都是按照32位的库进行介绍,后面会有一个gdal的64位库的编译介绍。
将下载好的HDF4.2.6和HDF5-1.8.7两个库解压,然后修改nmake.opt文件中的278行左右,代码如下:
# Uncomment thefollowing and update to enable NCSA HDF Release 4 support.
#HDF4_PLUGIN = NO
#HDF4_DIR =&&&&&& D:\warmerda\HDF41r5
#HDF4_LIB =&&&&&&&/LIBPATH:$(HDF4_DIR)\lib Ws2_32.lib
# Uncomment thefollowing and update to enable NCSA HDF Release 5 support.
#HDF5_PLUGIN = NO
#HDF5_DIR =&&&&&&c:\warmerda\supportlibs\hdf5\5-164-win
#HDF5_LIB =&&&&&&&$(HDF5_DIR)\dll\hdf5dll.lib
修改为下面的代码:
# Uncomment thefollowing and update to enable NCSA HDF Release 4 support.
HDF4_PLUGIN = NO
HDF4_DIR =&&&&&&&&&F:\Work\3rdPart\HDF4.2.6_win_x86
HDF4_LIB =& $(HDF4_DIR)\dll\hd426m.lib$(HDF4_DIR)\dll\hm426m.lib \
$(HDF4_DIR)\lib\hd426.lib$(HDF4_DIR)\lib\hm426.lib Ws2_32.lib
# Uncomment thefollowing and update to enable NCSA HDF Release 5 support.
HDF5_PLUGIN = NO
HDF5_DIR =&&&&&&&&&F:\Work\3rdPart\HDF5-1.8.7_win_x86
HDF5_LIB = $(HDF5_DIR)\dll\hdf5dll.lib
对比代码如下图:
保存,然后编译gdal即可,同时将hdf库中的dll文件夹下的dll文件拷贝到gdal18.dll的同级目录下。
三、其他方面
1、makegdal_gen.bat使用
对于makegdal_gen.bat的作用,在上一篇文章中已经进行了介绍,下面对怎么使用该文件生成VS的工程文件做一个说明。
首先打开cmd命令行窗口,使用cd命令切换到GDAL源代码目录,然后输入makegdal_gen.bat回车,会得到该工具的一个简单实用帮助,如下图所示:
该工具的使用方法是带有命令行参数的一个批处理工具,(在后面对GDAL工具集的介绍中会对带有参数的命令行程序,以及编写带有命令行的程序有一个比较详细的说明)。通过上图可以看出该工具的基本语法是:
makegdal_gen 7.10 &makegdal71.vcproj
makegdal_gen 8.00 &makegdal80.vcproj
通过上面的示例可以看出,该工具的命令行参数分别是,首先是VS的版本号,具体版本号参考本文第一小节,然后跟一个大于号“&”,最后是输出的VS的工程的名字。那么现在我要使用该命令行生成一个VS2008版本的工程文件,我可以输入下面的命令,然后回车即可:
makegdal_gen 9.00 &makegdal90.vcproj
2、编译64位系统下的GDAL
对于GDAL的64位系统的编译,基本和32位系统的编译一样,首先在VS的工程中,打开配置管理器,然后再活动解决方案平台的下拉列表中选择新建,然后弹出,新建解决方案平台对话框,选择新平台为x64(需要在安装VS的时候安装64位的编译环境),然后点击确定即可。最后在VS中选择X64进行编译即可。如下图所示:
对于使用cmd命令行编译,基本同本文开始,不一样的只有,在开始菜单选择的不是“Visual Studio 2008 命令提示”而是“Visual Studio 2008 x64 兼容工具命令提示”,剩下的编译步骤跟前面的一样。
在编译开始之前,还需要打开nmake.opt文件,找到131行处的“#WIN64=YES”,将前面的“#”去掉,保存,然后开始编译。如果就这样编译过去的话,那么恭喜你,如果不能顺利编译过去的,那么需要按照下面的步骤进行一点点设置。
1:在GDAL目录下的nmake.opt文件中,找到SYM_PREFIX的定义,应该在438行左右
将SYM_PREFIX=_ 改为SYM_PREFIX= 就是将最后的下划线去掉
2:在GDAL目录下的makefile.vc文件中,找到46行左右的代码,如下:
BASE_INCLUDE =/INCLUDE:_GDALSimpleImageWarp@36 \
& /INCLUDE:_GDALReprojectImage@48 \
& /INCLUDE:_GDALComputeMedianCutPCT@32 \
& /INCLUDE:_GDALDitherRGB2PCT@28 \
& /INCLUDE:_OCTNewCoordinateTransformation@8$(VB6_SAFEARRAYSYM)
BASE_INCLUDE =/INCLUDE:$(SYM_PREFIX)GDALSimpleImageWarp \
& /INCLUDE:$(SYM_PREFIX)GDALReprojectImage \
& /INCLUDE:$(SYM_PREFIX)GDALComputeMedianCutPCT\
& /INCLUDE:$(SYM_PREFIX)GDALDitherRGB2PCT \
/INCLUDE:$(SYM_PREFIX)OCTNewCoordinateTransformation $(VB6_SAFEARRAYSYM)
就是将后面的@开始,后面的数字删除。现在开始编译吧
最近写的项目需要在64位的服务器上,结果32位下编译的不能用,只好重新编译一套64位的。在编译GDAL时,出现了连接错误,如下:
LINK : error LNK2001: unresolved external symbol &_OCTNewCoordinateTransformation at 8&
LINK : error LNK2001: unresolved external symbol _vbSafeArrayToPtr at16&
LINK : error LNK2001: unresolved external symbol _GDALDitherRGB2PCT at 28
LINK : error LNK2001: unresolved external symbol & &_GDALComputeMedianCutPCT at 32
LINK : error LNK2001: unresolved external symbol _GDALReprojectImage at 48
LINK : error LNK2001: unresolved external symbol _GDALSimpleImageWarp at36
LINK : error LNK2001: unresolved external symbol _OGRRegisterAll
LINK : error LNK2001: unresolved external symbol _OGR_G_GetPointCount
LINK : error LNK2001: unresolved external symbol _OPTGetProjectionMethods
LINK : error LNK2001: unresolved external symbol _OSRValidate
LINK : error LNK2001: unresolved external symbol_OGRFeatureStylePuller&
按照GDAL论坛中的方式(http://www.osgeo.org/pipermail/gdal-dev/2006-May/008885.html)不是很清楚。
以下是我编译的步骤,哥研究了很长时间滴:
1:在GDAL目录下的nmake.opt文件中,找到SYM_PREFIX的定义,应该在438行左右
将SYM_PREFIX=_ 改为SYM_PREFIX= 就是将最后的下划线去掉
2:在GDAL目录下的makefile.vc文件中,找到46行左右的代码,如下:
BASE_INCLUDE = /INCLUDE:_GDALSimpleImageWarp@36 \
/INCLUDE:_GDALReprojectImage@48 \
/INCLUDE:_GDALComputeMedianCutPCT@32 \
/INCLUDE:_GDALDitherRGB2PCT@28 \
/INCLUDE:_OCTNewCoordinateTransformation@8 $(VB6_SAFEARRAYSYM)
BASE_INCLUDE = /INCLUDE:$(SYM_PREFIX)GDALSimpleImageWarp \
/INCLUDE:$(SYM_PREFIX)GDALReprojectImage \
/INCLUDE:$(SYM_PREFIX)GDALComputeMedianCutPCT \
/INCLUDE:$(SYM_PREFIX)GDALDitherRGB2PCT \
/INCLUDE:$(SYM_PREFIX)OCTNewCoordinateTransformation $(VB6_SAFEARRAYSYM)
就是将后面的@开始,后面的数字删除。
最新版的GDAL1.73版本直接可以在VS2008中选择x64编译,是直接可以编译过去的。前提是需要修改nmake.opt大概第一百行左右中的,Win64 = yes
3、GDAL1.8后打开中文路径失败问题
GDAL1.8.0发布很久了,今天将其更新到1.80发现含有中文路径的文件都不能打开了,影像和矢量文件都是。仔细对比了GDAL1.72和GDAL1.80的代码,终于发现了问题的所在之处,详细代码在GDAL_HOME\port\cpl_vsil_win32.cpp文件中的类VSIWin32FilesystemHandler中,以Stat()函数为例(435行),其他函数类&#20284;。代码如下:
&&&&&& GDAL1.8.0代码(部分):
[cpp]&view plaincopyprint?
1.&&&&&&/************************************************************************/
2.&&&&&&/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Stat()&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
3.&&&&&&/************************************************************************/
4.&&&&&&int VSIWin32FilesystemHandler::Stat( constchar * pszFilename,&&&
5.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&VSIStatBufL * pStatBuf,&&
6.&&&&&&int nFlags )&&
7.&&&&&&{&&
8.&&&&&&&&& (void)nF&&
10.&&#if (defined(WIN32) && _MSC_VER&= 1310) || __MSVCRT_VERSION__ &= 0x0601
11.&&if( CSLTestBoolean(&&
12.&&&&&&&&&&&&&CPLGetConfigOption( &GDAL_FILENAME_IS_UTF8&, &YES& ) ))&&
13.&&&&& {&&
14.&&int nR&&
15.&&wchar_t *pwszFilename =&&&
16.&&&&&&&&&&&&&CPLRecodeToWChar( pszFilename, CPL_ENC_UTF8, CPL_ENC_UCS2 );&&
18.&&&&&&&&&nResult = _wstat64( pwszFilename, pStatBuf );&&
19.&&&&&&&&&CPLFree( pwszFilename );&&
21.&&return nR&&
22.&&&&& }&&
24.&&#endif
25.&&&&& {&&
26.&&return( VSI_STAT64( pszFilename, pStatBuf) );&&
27.&&&&& }&&
GDAL1.7.2代码(部分):
[cpp]&view plaincopyprint?
1.&&&&&&/************************************************************************/
2.&&&&&&/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Stat()&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
3.&&&&&&/************************************************************************/
4.&&&&&&int VSIWin32FilesystemHandler::Stat( constchar * pszFilename,&&&
5.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&VSIStatBufL * pStatBuf )&&
6.&&&&&&{&&
7.&&&&&&return( VSI_STAT64( pszFilename, pStatBuf) );&&
8.&&&&&&}&
&&&& 通过上面的代码对比,就会看到,原来在函数中添加了一个CPLGetConfigOption( &GDAL_FILENAME_IS_UTF8&, &YES& )判断,通过判断是否是UTF8的编码,而且指定的默认&#20540;还是UTF8编码,在含有中文路径的字符串大多数的编码应该是GBK的编码,这样,系统就将GBK的编码当做UTF8的编码来进行转换,结果就是汉字全部是乱码,导致的结果就是找不到文件,所以打不开。
&&&& 知道原因,那么解决的方式就知道了,大概有下面几种,各有优劣,供大家选择
&&&& 1:不改变GDAL源代码,在自己调用GDALRegisterAll()和OGRAllRegiser()函数后,加上下面一句即可。
&&&CPLSetConfigOption(&GDAL_FILENAME_IS_UTF8&,&NO&);
这样的优点是,不用改动GDAL的源代码,但是如果自己的工程中经常打开图像的话,每次都要加,比较麻烦。
&&& 2:修改GDAL源代码,将下面一句
&&&CPLSetConfigOption(&GDAL_FILENAME_IS_UTF8&,&NO&);
分别添加到GDALAllRegister()函数【GDAL_HOME\frmts\gdalallregister.cpp73行左右】和OGRRegisterAll()函数【GDAL_HOME\ogr\ogrsf_frmts\generic\ogrregisterall.cpp38行左右】中,然后重新编译GDAL即可。这样的方式就和使用以前版本的GDAL一样了,不用改动自己的代码,推荐使用这种方式。
3:修改GDAL源代码,GDAL_HOME\port\cpl_vsil_win32.cpp文件中的全部去掉CPLGetConfigOption全部去掉,或者将后面的YES改为NO,但是该工作量巨大,而且有好多地方,这种方式不推荐。
&&&&& 希望对那些还在为GDAL180中文路径乱码纠结的人们有所帮助。尤其是看到好多人在外面先把中文路径转成utf8的编码,然后再调用GDAL的函数。
一、Swig编译
1、Swig介绍
SWIG全称是Simplified Wrapper and Interface Generator,官方网站:http://www.swig.org/。SWIG是个帮助使用C或者C&#43;&#43;编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具。SWIG能应用于各种不同类型的语言包括常用脚本编译语言例如Perl, PHP, Python, Tcl, Ruby and PHP。支持语言列表中也包括非脚本编译语言,例如C#, Common Lisp (CLISP, Allegro CL,
CFFI, UFFI), Java, Modula-3, OCAML以及R,甚至是编译器或者汇编的计划应用(Guile, MzScheme, Chicken)。SWIG普遍应用于创建高级语言解析或汇编程序环境,用户接口,作为一种用来测试C/C&#43;&#43;或进行原型设计的工具。SWIG还能够导出XML或Lisp s-expressions&#26684;式的解析树。SWIG可以被自由使用,发布,修改用于商业或非商业中。[摘自SWIG官网http://www.swig.org/translations/chinese/index.html]。
下载安装Swig的时候注意下载Swigwin(我下的是swigwin-2.0.4.zip),不要下载源代码,否则不能在windwos下用。下载后解压,将swigwin-2.0.4的解压目录也添加到环境变量Path中去,否则会出现一些些该配置文件的麻烦。检验swig是否成功设置到环境变量Path中的最简单的方式就是在运行中输入swig后回车,如果提示windows找不到swig,那么说明没有设置成功;如果出现一个黑屏一闪而过,那么说明你设置成功了。
2、编译C#版本GDAL
首先,打开nmake.opt文件,找到SWIG=swig.exe这一句,假如没有将swig的目录添加到环境变量中,那么将这句后面的swig.exe修改为swig.exe的全路径,如F:\Work\3rdPart\swigwin-2.0.4\swig.exe。如果设置了环境变量,那么就不需要进行修改了。
然后按照第二篇中的使用cmd命令编译GDAL的方式来进行编译,打开“Visual Studio2008命令提示”并定位到GDAL源代码目录,然后依次执行下面三行命令:
[python]&view plaincopyprint?
nmake /f makefile.vc&& nmake /f makefile.vc install&& nmake /f makefile.vc devinstall&
执行完之后会在GDAL_HOME的目录下生成编译好的dll和exe文件以及include、lib等文件夹。接下来,使用cd命令,进入swig\csharp文件夹中:
[python]&view plaincopyprint?
cd swig\csharp&& #nmake /f makefile.vc interface&&&& #这句话暂时不需要 nmake /f makefile.vc&& nmake /f makefile.vc install&
执行完上面两句后,会在csharp文件夹下生成8个dll文件,并将这8个dll文件拷贝到GDAL输出目录下的csharp文件夹中。然后就可以在C#工程中引用这几个dll了,需要注意的是,在使用这几个dll的时候需要将gdal18.dll以及其依赖的其他dll都要拷贝到同一个目录中才能正常运行。
3、编译Java版本GDAL
首先需要JDK环境,没有的可以下载安装一个。然后打开nmake.opt文件,找到大概86行左右的位置:
[python]&view plaincopyprint?
JAVA_HOME = C:\Program Files\Java\jdk1.6.0_26
将后面的路径修改为JDK的目录后保存。在打开的命令行中使用cd命令定位到swig目录后,输入下面的命令即可:
[python]&view plaincopyprint?
nmake /f makefile.vc java&
4、编译Python版本GDAL
首先在编译Python版本之前,确保自己的电脑中安装了Python,相信大家都装ArcGIS了吧,那么恭喜你,你不用安装Python了,因为在安装ArcGIS的时候必须要安装Python的,同样,将Python的bin目录添加到环境变量Path中去。确保这步完成之后,接下来就是编译Python版本的GDAL。
打开nmake.opt文件,找到大概76行左右的:
[python]&view plaincopyprint?
PYDIR&& =&& &C:\Python26&
将后面的路径修改为Python的安装路径后保存。使用cd命令将命令行定位到swig\python目录后,依次输入:
[python]&view plaincopyprint?
python setup.py build&&&& python setup.py install&&&
执行完上述命令后,会在python的site-packages目录看到多了gdal和ogr的文件以及一个osgeo的文件夹。我本机的目录是C:\Python26\Lib\site-packages。然后将编译出来的gdal18.dll以及它依赖的所有的dll都拷贝到site-packages文件夹中的osgeo文件夹中,最后就可以在Python中使用imort gdal来使用GDAL了。测试Python版本的gdal是否安装成功,可以使用下面命令:
[python]&view plaincopyprint?
from osgeo import gdal&& from osgeo.gdalconst import *&& dataset=gdal.Open(&F:\Work\Data\envi.img&,GA_ReadOnly)&& dataset.GetDriver().ShortName&& #'ENVI' #图像&#26684;式 dataset.GetProjectionRef()&& #'PROJCS[&unnamed&,GEOGCS[&NAD83&,DATUM[&North_American_Datum_1983&,SPHEROID[&GRS 7,298.,AUTHORITY[&EPSG&,&7019&]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[&EPSG&,&6269&]],PRIMEM[&Greenwich&,0,AUTHORITY[&EPSG&,&8901&]],UNIT[&degree&,0.9433,AUTHORITY[&EPSG&,&9108&]],AUTHORITY[&EPSG&,&4269&]],PROJECTION[&Transverse_Mercator&],PARAMETER[&latitude_of_origin&,30],PARAMETER[&central_meridian&,-84.67],PARAMETER[&scale_factor&,0.9999],PARAMETER[&false_easting&,509186],PARAMETER[&false_northing&,0],UNIT[&Foot
(International)&,0.3048]]' #图像投影信息
注意,上面命令中开头为#号的表示的是Python输出的。如果能输出上面的信息,那么GDAL for Python就安装成功了。
二、开发帮助文档生成
1、Doxygen介绍
以下内容摘自维基百科,地址http://zh.wikipedia.org/wiki/Doxygen。&
Doxygen 是一个 C&#43;&#43;, C, Java,Objective-C、Python、IDL (CORBA 和 Microsoft flavors)、Fortran、VHDL、PHP、C#和D语言的文档生成器。可以运行在大多数类Unix系统,以及Mac OS X操作系统和Microsoft Windows 。 初始版本的Doxygen借鉴了一些老版本DOC&#43;&#43;的代码;随后,Doxygen源代码由Dimitri van Heesch重写。
Doxygen是一个编写软件参考文档的工具。 该文档是直接写在代码中,因此比较容易保持更新。 Doxygen 可以交叉引用文档和代码,使文件的读者可以很容易地引用实际的代码。
KDE 使用Doxygen作为其部分文档且 KDevelop 具有内置的支持。 Doxygen的发布遵守GNU General Public License,并且是自由软件。
需要注意的是在使用doxygen的时候,会自动生成一些类图,以及函数调用关系图,如果要生成这些图,还需要另外一个很牛叉的开源库Graphviz。Graphviz (Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。它也提供了供其它软件使用的库。Graphviz是一个自由软件,其授权为Common Public License。其Mac版本曾经获得2004年的苹果设计奖。更多关于Graphviz的介绍参考其官方网站:http://www.graphviz.org/。
2、生成GDAL开发帮助文档
首先下载安装Doxygen和Graphviz,安装完之后最好将Doxygen和Graphviz的bin目录添加到系统环境变量Path中去。负责要设置一些参数,比较麻烦,还是放到Path中方便。
安装完Doxygen后,会在开始菜单中有个doxywizard.exe的程序,打开,然后在File-&Open…菜单中选择GDAL源代码目录下的Doxyfile文件,然后,切换到Run标签,点击Run Doxygen按钮,接下来就会自动提取源代码中的注释生成一份gdal的帮助文档,默认的输出目录是GDAL目录下的html目录。等待生成结束后,点击左下角的Show Html Output后会打开生成的帮助文档。如下图:
再次,基本上GDAL的帮助文档生成完成,打开后会发现和GDAL的官方网站一模一样。但是还有个问题,这里只是生成的是GDAL的帮助文档,没有OGR的帮助文档,同样按照上面的步骤,打开GDAL目录下的OGR文件夹下的Doxyfile。然后点击生成,生成的目录默认为ogr文件夹下有个html文件夹,将该文件夹重命名为ogr,然后整个拷贝到上一层的html中,同时将GDAL目录中的doc文件夹中的文件除dox文件以外的文件全部拷贝到html文件夹中。
最后,还记得编译GDAL后生成的html文件夹吗?将这两个文件夹中的内容进行合并,然后你就得到了一份完完整整的GDAL的帮助文档。首页是html文件夹下的index.html。如下图:
3、Doxygen脚本配置以及代码注释书写规范
对于Doxygen的脚本配置,可以打开doxywizard后,在Wizard和Expert 标签中在每一项中,鼠标移动到上面,在左下角的试图区域会显示很详细的帮助信息(英文的,不是很难),这里有篇说明文档《 Doxygen配置使用指南》,/downloads151/doc/653112/Doxygen_Using_Manual.pdf。文档中包含了所有的东西,很不错的东西
一、GDAL工具通用命令
下面的工具主要参考的GDAL官方网站中提供的帮助文档说明,此外还有我的一些经验,GDAL官方具体地址为:http://gdal.org/gdal_utilities.html。
在所有的GDAL工具集中都会支持下面的通用命令行参数,其形式一般是以两个减号(--)开始,下面详细介绍:
1.&&&&&&&&&&&&–version
输出GDAL的版本信息,即版本号。
2.&&&&&&&&&&&&--formats
输出GDAL支持的所有图像&#26684;式说明。包括只读和读写。&#26684;式支持描述如下:“ro”是只读驱动;“rw”是读写驱动(比如支持CreateCopy方法);“rw&#43;”是读写和更新驱动(比如支持Create方法),支持所有的读写更新操作。
3.&&&&&&&&&&&&--format&format
输出GDAL单个&#26684;式驱动的细节信息。&#26684;式名需要是在--formats 后列出所要输出的&#26684;式名。比如GTiff,HFA,PCISK等。
4.&&&&&&&&&&&&--optfile&file
读取指定名称的文件并把其中的内容当成参数传入命令行列表。如果行首以#开头的行将被忽略。多字组成的参数(即中间有空&#26684;隔开的参数)需要用双引号来保正其为单一的参数。
5.&&&&&&&&&&&&--config&key value
设置配置,把指定键设置为某个&#20540;,从而不必把他们设置为环境变量。一些命令参数键是GDAL_CACHEMAX(用于缓存的内存有多少M)以及GDAL_DATA(gdal的数据路径)。比如在GDAL1.8之后,经常会发现打不开中文路径的文件,那么可以用这个来设置,具体为“—configGDAL_FILENAME_IS_UTF8 NO”。同时对于每一种驱动都会有各自的配置,具体参考各个驱动的说明。更多的配置选项参考该网址:http://trac.osgeo.org/gdal/wiki/ConfigOptions。
6.&&&&&&&&&&&&--debug&value
控制调试信息的打印输出。ON&#20540;表示允许调试信息输出,OFF&#20540;表示不要输出调试信息。
7.&&&&&&&&&&&&--help-general
输出各个工具的命令行参数帮助信息。不同的命令输出的内容不同。
下面还有一些通用的命令,是用来创建文件来使用的。创建不同的&#26684;式需要的参数都是不相同的,尤其是在特殊的情况下,比如创建的Erdas的img&#26684;式需不需要使用压缩等特殊的需求。这些参数一般使用一个减号(-)开始。下面对这些参数进行一个简单的说明。
8.&&&&&&&&&&&&-of&format
选择要创建新的文件的&#26684;式。这个&#26684;式被指定为类&#20284;GTiff(GeoTIFF&#26684;式)或者HFA(ERDAS&#26684;式)。所有的支持&#26684;式列表可以用--formats 参数列出来。但是只有&#26684;式列表“(rw)”可以被写入和创建。许多工具如果没有指定,默认是创建GeoTIFF&#26684;式的文件。文件扩展名不会自动添加,如果没有指定文件名的后缀名,gdal一般不会添加任何扩展名。各个工具的命令行参数帮助信息。不同的命令输出的内容不同。
9.&&&&&&&&&&&&-co&NAME=VALUE
创建文件选项,许多&#26684;式会有一个或者更多的创建参数来控制文件创建的细节。比如GeoTIFF或者Erdas的img&#26684;式可以用创建参数控制压缩,或者控制是否用分片还是分带来进行存储。
可以使用的创建参数根据&#26684;式驱动不同而不同。而一些简单的&#26684;式根本就没有创建参数。虽然某个&#26684;式可以用&--format&format&&参数列出所有可用的参数列表,但是更详细的信息可以在&#26684;式介绍网页中查到。对于不同的文件&#26684;式,请参考对应文件&#26684;式说明网页。
10.&&&&&& -a_srs&SRS
指定输出文件的投影信息(坐标系统)。输出各个工具的命令行参数帮助信息。不同的命令输出的内容不同。有几个工具(如gdal_translate、gdalwarp)可以在命令行中通过类&#20284;-a_srs(分配输出SRS)、-s_srs(源SRS)、-t_srs(目标SRS)来指定坐标系统。这些工具允许以一系列&#26684;式定义坐标系统(SRS就是空间参考系统spatial referencesystem)。SRS通常可以使用下面几种方式来指定:
NAD27/NAD83/WGS84/WGS72:这些常见的地理坐标系统可以通过名字来直接使用。 EPSG:n:坐标系统(投影或者地理坐标)可以通过EPSG码来选择。例如EPSG 27700是英国国家网&#26684;。更多的EPSG坐标系统可以在GDAL数据文件gcs.csv和pcs.csv中找到(位于GDAL目录中的data文件夹中)。
PROJ.4定义:一个PROJ4定义字符串可以用作坐标系统定义。例如“&#43;proj=utm &#43;zone=11 &#43;datum=WGS84”。注意在命令行中要保持Proj4字符串在一起作为一个单独的参数(一般用双引号引起来)。
OpenGIS WKT字符串:&OpenGIS标准定义了一个文本&#26684;式来描述坐标系统作为简单要素规范的一个部分。这个&#26684;式是gdal中使用的坐标系统的内部工作&#26684;式。包含wkt坐标系统描述的文件的文件名可以被用来作为坐标系统参数,或者坐标系统元素本身也可以被用来作为命令行参数。
ESRI WKT字符串:ESRI 在他们的ArcGIS产品(ArcGIS中的.prj文件)中使用了一种经过精简OGC WKT的&#26684;式,而且这个&#26684;式被用在一个和wkt相&#20284;的风&#26684;的文件中。但是文件名要被加以ESRI::前缀。比如&ESRI::NAD 1927 StatePlane Wyoming West FIPS 4904.prj&。
空间参考网址URLs:可以使用一个空间参考的网址来指定,如:http://spatialreference.org/ref/user/north-pacific-albers-conic-equal-area/。
文件名:可以使用一个包含WKT、Proj.4的字符串,或者XML/GML&#26684;式的坐标系统定义的文件。
二、GDAL工具说明
1.&&&&&&&&&&&&gdalinfo 输出文件信息
gdalinfo[--help-general] [-mm] [-stats] [-hist] [-nogcp] [-nomd]
&&&&&&&& [-noct] [-nofl][-checksum] [-proj4][-mdd domain]*
&&&&&&& [-sd subdataset] datasetname
参数说明:
gdalinfo程序输出gdal支持的栅&#26684;&#26684;式的一系列信息。
强制计算栅&#26684;每个波段的最大最小&#20540;。
读取和现实图像统计信息,如果指定该参数,将强制计算图像的统计信息,如各个波段的最大&#20540;、最小&#20540;、均&#20540;、标准差等。
输出所有波段的直方图信息。
禁止地面控制点(GCP)列表打印。这可能对大量的GCP的数据集来说是十分有用的。比如L1B AVHRR或者hdf4MODIS数据,这些数据包含了成千上万的地面控制点。
禁止元数据打印,一些数据集可能包含极多的元数据字符串。
禁止输出颜色表。
强制计算数据集中所有波段的checksum。
-mdd domain
输出指定区域的元数据信息。
仅显示文件列表中的第一个文件信息。GDAL1.9.0开始支持该参数。
-sd&subdataset
如果输入的数据集包含几个子数据集,那么将使用指定的数字来替代(从1开始)完整的子数据集名称。GDAL1.9.0开始支持该参数。
输出文件的坐标系统按照PROJ.4类型的字符串输出。GDAL1.9.0开始支持该参数。
gdalinfo同时会输出如下的信息(如果有的话):
当前文件的&#26684;式驱动信息 栅&#26684;数据大小(行列数) 文件的坐标系统(OGC WKT形式) 图像关联到地理的转换参数(当前不包含旋转系数) 地理上的边界坐标,如果可能的话还有基于经纬度的完整的地理转换参数(如果是GCPs就没有) 地面控制点(GCPs) 所有的(包括子栅&#26684;的元数据)文件元数据 波段数据类型 波段颜色信息(RGB,Gray等) 波段颜色表信息 波段瓦片大小(文件块大小) 波段描述 波段最大最小&#20540;(已经经过计算的) 波段CheckSum&#20540;(已经经过计算的) 波段无意义&#20540;(NODATA&#20540;) 波段可获得的略缩图分辨率 波段单位类型(如:波段的高程是米制还是英制) 波段的假颜色列表
gdalinfoF:/Work/Data/utm.tif
Driver:GTiff/GeoTIFF
Sizeis 512, 512
CoordinateSystem is:
PROJCS[&NAD27/ UTM zone 11N&,
&&& GEOGCS[&NAD27&,
&&&&&&DATUM[&North_American_Datum_1927&,
&&&&&&&&&&&SPHEROID[&Clarke6.4,294.]],
&&&&&&& PRIMEM[&Greenwich&,0],
&&&&&&UNIT[&degree&,0.9433]],
&& PROJECTION[&Transverse_Mercator&],
&& PARAMETER[&latitude_of_origin&,0],
&& PARAMETER[&central_meridian&,-117],
&&& PARAMETER[&scale_factor&,0.9996],
&& PARAMETER[&false_easting&,500000],
&&& PARAMETER[&false_northing&,0],
&&& UNIT[&metre&,1]]
Origin= (000,000)
PixelSize = (60..000000)
CornerCoordinates:
UpperLeft& ( , ) (117d38'28.21&W,33d54'8.47&N)
LowerLeft& ( , ) (117d38'20.79&W,33d37'31.04&N)
UpperRight (& , )(117d18'32.07&W,33d54'13.08&N)
LowerRight (& , )(117d18'28.50&W,33d37'35.61&N)
Center&&&&& ( , )(117d28'27.39&W, 33d45'52.46&N)
Band1 Block=512x16 Type=Byte, ColorInterp=Gray
2.&&&&&&&&&&&&gdal_translate &#26684;式转换
gdal_translate[--help-general]
&&&&&&[-ot{Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/
&&&&&&&&&&&&CInt16/CInt32/CFloat32/CFloat64}][-strict]
&&&&&& [-of format] [-b band] [-mask band][-expand{gray|rgb|rgba}]
&&&&&& [-outsize xsize[%] ysize[%]]
&&&&&& [-unscale] [-scale [src_minsrc_max[dst_min dst_max]]]
&&&&&& [-srcwin xoff yoff xsizeysize][-projwin ulx uly lrx lry]
&&&&&& [-a_srs srs_def] [-a_ullr ulx ulylrxlry] [-a_nodata value]
&&&&&& [-gcp pixel line eastingnorthing[elevation]]*
&&&&&& [-mo &META-TAG=VALUE&]*[-q][-sds]
&&&&&& [-co &NAME=VALUE&]*[-stats]
&&&&&& src_dataset dst_dataset
参数说明:
gdal_translate工具可以用来在不同&#26684;式间转换栅&#26684;数据。同时还可以做一些诸如提取子栅&#26684;、重采样和数据类型转换等操作。
指定输出波段的数据类型。
对于这转换过程中出现丢失数据等错误直接报错,不进行忽略处理。之前的参数叫-not_strict,表示对其进行宽大处理,不报错。
-of&format:
选择输出&#26684;式。默认是GeoTiff(GTiff)。注意,指定的时候用&#26684;式简称。
选择一个波段来输出。波段号从1开始编号。多个&-b&参数可以用于选择输出某几个波段或者重新对波段进行排序。从GDAL1.8.0开始,波段可以设置为“mask,1”(或者直接mask)来讲输入数据集的第一个波段作为一个mask波段来使用。
-mask&band:
(从GDAL1.8.0开始)(GDAL &= 1.8.0)选择一个输入波段来作为创建输出数据的掩码波段。波段数是从1开始,band可以设置为none,用来避免复制整个输入数据集作为掩码,否则在默认情况下(“auto”),除非掩码是一个alpha通道,或者使用参数-b mask来进行输出,参数band也可以设置为“mask,1”(或者直接mask)来讲输入数据集的第一个波段作为一个mask波段来使用。
-expand&gray|rgb|rgba:
(从GDAL1.6.0开始)将带有颜色表信息的单波段文件展开为RGB三波段文件或者RGBA四波段文件。对于输出&#26684;式为JPEG,JPEG2000,MrSID,ECW等不支持颜色表的数据来说很有用。灰度&#20540;(从GDAL1.7.0开始)也可以使用颜色表展开为一个数据集,但输出文件中仅仅包含灰度级别的一个索引。
-outsize&xsize[%] ysize[%]:
设置输出文件的大小。大小以象元为单位,除非用“%”来标记,这时,表示的是输出为输入图层大小的百分比。
-scale&[src_min src_max[dst_mindst_max]]:
重新组织输入象元的&#20540;。将它们从src_min~src_max范围内缩放到dst_min ~ dst_max范围内。如果省略,输出范围将为0~255。输入范围将由源数据自动计算。
大概意思是,不对波段中的数据进行缩放转换,在使用-ot设置输出文件类型时这个参数往往是很有用的。(这个参数的英文有点绕口,不好翻译,有知道的同学麻烦告诉我一下)。
-srcwin&xoff yoff xsize ysize:
选择一个取&#20540;窗口,通过该窗口在原图像中的行列位置来拷贝数&#20540;。
-projwin&ulx uly lrx lry:
选择一个取&#20540;窗口,通过该窗口在原图像中地理坐标范围来拷贝数据(类&#20284;srcwin)。参数中的四个&#20540;,使用的投影坐标。
-a_srs&srs_def:
给输出文件投影强制指定坐标系。srs_def可以是任何常用的GDAL/OGR&#26684;式的投影信息,如:WKT、Proj4、EPSG:n 或者一个包含着wkt的文件的文件名。
-a_ullr&ulx uly lrx lry:
强制指定输出文件的空间转换边界范围(图像的四至范围)。而将原图像的四至范围忽略掉。
-a_nodata&value:
指定一个无意义&#20540;到输出波段。从GDAl1.8.0开始,可以设置为none来使用原文件中的nodata&#20540;作为输出文件的nodata&#20540;。
-mo&&META-TAG=VALUE&:
如果可以,给输出数据设置一个元数据的键和其对应的&#20540;。
-co&&NAME=VALUE&:
通过一个创建参数来指定输出&#26684;式特殊创建要求。多个-co 参数可以组合起来使用。创建参数可以参考各个数据&#26684;式本身说明。
-gcp&pixel line eastingnorthingelevation:
添加指定地面控制点到输出数据集。这个选项可以被多次使用,以提供一系列的地面控制点GCPs 。GCP&#26684;式为:列号 行号 横坐标 纵坐标 高程&#20540;。
安静模式,不输出进度信息以及其他非错误信息。
拷贝文件中所有子数据集到各自的输出文件中。通常这个参数用在HDF或者OGDI这样有子数据集的&#26684;式中。
强制计算(重新计算)数据的统计信息。自GDAL1.8.0开始支持该参数。
src_dataset:
输入数据集名称,可以是文件名,或者是一个多数据集文件中的一个子数据集的URL地址(比如HDF数据集中的一个子数据集)。
dst_dataset:
输出文件名。
将utm.tif转换为一个以分块存储的GeoTiff文件。
gdal_translate -of GTiff-co &TILED=YES& utm.tif utm_tiled.tif
创建一个JPEG压缩的Tiff图像,同时使用内部掩码从一个RGBA数据集中。
gdal_translate rgba.tifwithmask.tif -b 1 -b 2 -b 3 -mask 4 -coCOMPRESS=JPEG -co PHOTOMETRIC=YCBCR--config GDAL_TIFF_INTERNAL_MASK YES
创建一个RGBA图像从一个RGB数据中使用一个掩码。
gdal_translatewithmask.tif rgba.tif -b 1 -b 2 -b 3 -b mask
3.&&&&&&&&&&&&gdaladdo 建立金字塔
gdaladdo[-r {nearest,average,gauss,cubic,average_mp,average_magphase,mode}]
&&&&&&&& [-ro] [-clean][--help-general]filename levels
参数说明:
gdaladdo工具可以用于为大多数支持的&#26684;式建立或者重建金字塔。可以使用下面几种重采样算法中的一种来进行缩小重采样操作。
-r&{nearest(default),average,gauss,cubic,average_mp,average_magphase,mode}:
指定重采样方法,分别是最邻近(默认),均&#20540;,高斯,立方卷积等。
(从GDAL1.6.0开始有效),以只读的方式打开数据,来创建外部金字塔(特别对于GeoTIFF来说)。
删除所有的金字塔。(从GDAL1.7.0开始有效)。
要建立金字塔的文件名。
要建立略缩图的层号的列表。 如果使用-clean选项是将被忽略。
模式,(从GDAL1.6.0开始有效)选择最常用的重采样方式。average_mp&是不适合使用的,&Average_magphase用于复数数据空间的图像。Nearest&和average&用于普通的图像。Nearest&使用最邻近采样(简单采样),它计算所有的有效&#20540;的均&#20540;来进行计算。Cubic&采样(从GDAL1.7.0开始有效)使用一个4x4的近&#20284;立方卷积内核。&Gauss&采样(从GDAL1.6.0开始有效)使用高斯内核计算。这种对于高对比度和图案边界比较明显的图像效果比较好。一般建议的采样比&#20540;是2,4,8,…,使用3x3重采样作为高斯采样的计算窗口。
gdaladdo将遵守正确NODATA_VALUES元组(特殊的数据集元数据),因此,只有一个给定的的RGB三元组(在一个RGB图像的情况下)作为NODATA&#20540;,而不是每个波段有独立的NODATA&#20540;。
选择一个缩放级别&#20540;如2表示略缩图缩放程度是源图像每个维上分辨率的1/2。如果文件在所选缩放级别上已经存在略缩图,那么这个缩放级别上的缩略图将被重新计算并覆盖写入。
一些&#26684;式根本不支持金字塔。所以许多&#26684;式在文件以外以扩展名.ovr存储金字塔,TIFF就是如此。GeoTIFF&#26684;式直接把金字塔存储到原有的文件中。除非使用-ro标记来指定。在TIFF中创建金字塔可以通过用COMPRESS_OVERVIEW配置参数进行压缩。所有GeoTIFF支持的压缩方法,可以在这里获得(如:--config COMPRESS_OVERVIEW DEFLATE)。
大多数驱动也支持一个备用的略缩图&#26684;式(使用的是Erdas图像&#26684;式)。要使用这个备用&#26684;式使用USE_RRD=YES 来设置参数。这样做会把GDAL程序创建的金字塔放到一个辅助的.aux文件中使得可以该金字塔可以直接在Erdas中使用或者也可以在ArcGIS中使用。关于如何使用GDAL创建Erdas&#26684;式的金字塔,请参考我的博文:http://blog.csdn.net/liminlu0314/article/details/6127755。
在所指定的TIFF文件内部创建金字塔:
gdaladdo -r average abc.tif 2 4 8 16
从一个ERDAS.IMG文件中创建一个外部的压缩的金字塔文件:
gdaladdo --config COMPRESS_OVERVIEWDEFLATE erdas.img 2 4 8 16
为给定JPEG文件创建一个Erdas Imagine &#26684;式金字塔:
gdaladdo --config USE_RRD YES airphoto.jpg3 9 27 81
其中有个nearblack,gdalbuildvrt工具,没有做说明,以后加上,里面可能有很多不足,望大家批评指正,谢谢。
1. gdalwarp 图像纠正
gdalwarp [--help-general] [--formats]
&&& [-s_srs srs_def] [-t_srs srs_def] [-to&NAME=VALUE&]
&&& [-order n | -tps | -rpc | -geoloc] [-et err_threshold]
&&& [-refine_gcps tolerance [minimum_gcps]]
&&& [-te xmin ymin xmax ymax] [-tr xres yres] [-tap] [-tswidth height]
&&& [-wo &NAME=VALUE&] [-ot Byte/Int16/...] [-wtByte/Int16]
&&& [-srcnodata &value [value...]&] [-dstnodata&value [value...]&] -dstalpha
&&& [-r resampling_method] [-wm memory_in_mb] [-multi] [-q]
&&& [-cutline datasource] [-cl layer] [-cwhere expression]
&&& [-csql statement] [-cblend dist_in_pixels][-crop_to_cutline]
&&& [-of format] [-co &NAME=VALUE&]* [-overwrite]
&&& srcfile* dstfile
参数说明:
gdalwarp工具是一个图像镶嵌、重投影、和纠正的工具。程序可以重投影到任何支持的投影。
-s_srs srs def:
设置原始空间参考,坐标系统是可以使用函数OGRSpatialReference.SetFromUserInput()调用的就行,包括EPSG PCS,PROJ4或者后缀名为.prf的wkt文本文件。
-t_srs srs_def:
设置目标空间参考,坐标系统是可以使用函数OGRSpatialReference.SetFromUserInput()调用的就行,包括EPSG PCS,PROJ4或者后缀名为.prf的wkt文本文件。
-to NAME=VALUE:
设置转换参数选项,具体选项参考函数GDALCreateGenImgProjTransformer2()支持的选项。&
多项式纠正次数(1到3),默认的多项式次数根据输入的GCP点个数自动计算。&
强制使用TPS(thin plate spline)纠正方法来纠正图像。&
强制使用RPC参数纠正。&
强制使用Geolocation数组。(这个没用过,不太清楚)
-et err_threshold:
指定变换的近&#20284;误差阈&#20540;,默认为0.125个像元大小(使用像元为单位)。&
-refine_gcps tolerance minimum_gcps:
(GDAL &= 1.9.0) refines the GCPs by automatically eliminating outliers.Outliers will be eliminated until minimum_gcps are left or when no outliers canbe detected. The tolerance is passed to adjust when a GCP will be eliminated.Not that GCP refinement
only works with polynomial interpolation. The toleranceis in pixel units if no projection is available, otherwise it is in SRS units.If minimum_gcps is not provided, the minimum GCPs according to the polynomialmodel is used. (这个参数不太清楚,没用过)
-te xmin ymin xmax ymax:
设置输出文件的地理范围(在目标空间参考中)。
-tr xres yres:
设置输出图像的分辨率。&
(GDAL &= 1.8.0) (target aligned pixels) align the coordinates of theextent of the output file to the values of the -tr, such that the alignedextent includes the minimum extent.&
-ts width height:
设置输出文件的宽高。如果宽或者高有一个为0,那么将自动计算一个&#20540;,注意-ts和-tr不能同时使用。
-wo &NAME=VALUE&:
设置纠正选项。具体参考GDALWarpOptions::papszWarpOptions的帮助文档。&
指定输出波段的数据类型。&
计算的数据类型。&
-r resampling_method:
重采样方式,主要有下面几种方式:
最邻近采样方法(默认&#20540;,算法较快,但是质量较差)。
bilinear:&
双线性内插采样。
立方卷积采样。&
cubicspline:&
立方样条采样。&
Lanczos 窗口辛克采样。&
-srcnodata value [value...]:
设置输入波段的Nodata&#20540;,可以为不同的波段指定不同的&#20540;。。如果有多个&#20540;,就需要把他们用双引号括起来,以保持在命令参数中作为单一参数输入。掩膜&#20540;不会在内插中处理。&
-dstnodata value [value...]:
设置输出波段的Nodata&#20540;。&
-dstalpha:
创建一个Alpha波段在输出文件中。&
-wm memory_in_mb:
设置纠正API使用的内存大小,以MB为单位。
是否使用多线程纠正图像,多线程用来分块处理,同时在读取和写入图像均使用多线程技术。&
不在控制台输出提示信息。
-of format:
输出文件&#26684;式,默认为GeoTiff。&
-co &NAME=VALUE&:
指定创建图像选项,具体参考不同的&#26684;式说明。&
-cutline datasource:
使用使用OGR支持的矢量数据进行裁切图像。&
-cl layername:
指定裁切矢量的图层名称。
-cwhere expression:
从裁切矢量中根据属性表查询指定的要素来裁切图像。&
-csql query:
使用SQL语句来从裁切矢量的属性表中查询要素来裁切图像。&
-cblend distance:
Set a blend distance to use to blend over cutlines (in pixels).(这个参数不太清楚,没用过)&
-crop_to_cutline:
(GDAL &= 1.8.0) 使用矢量边界的外接矩形大小作为输出影像的范围。
-overwrite:
(GDAL &= 1.8.0) 如果结果数据存在,那么覆盖结果数据。
输入数据文件名(可以为多个,使用空&#26684;隔开)。&
输出数据文件名。&
如果输出文件已经存在,那么镶嵌到这个文件是可以的。但是数据的空间范围等信息不会被修改,如果要修改为新的数据的空间信息,那么需要使用-overwrite选项来覆盖原文件。
在此不再列举例子,后面会对gdalwarp做一个比较详细的介绍。
2. gdaltindex 创建一个栅&#26684;文件块索引Shp文件
gdaltindex [-tileindex field_name] [-write_absolute_path][-skip_different_projection] index_file [gdal_file]*
参数说明:
这个程序创建一个shape文件,里面记录每一个输入的栅&#26684;文件的文件路径,以及栅&#26684;数据的落图文件。这个输出文件主要是为MapServer 来使用的。应该是创建栅&#26684;图像的四至范围矢量文件。
· 如果shape文件不存在会自己创建,如果存在,将被追加到存在的文件中。&
· 默认的索引字段为location。&
· 默认填写的是栅&#26684;文件名,如果指定了-write_absolute_path选项,那么写入的是栅&#26684;文件的绝对路径。
· 如果指定-skip_different_projection参数,只用相同的投影的栅&#26684;文件会被插入到tileindex文件中。&
· 生成一个简单的矩形多边形,其坐标系统和栅&#26684;的坐标系统相同。&
gdaltindex doq_index.shp doq/*.tif
3. gdalbuildvrt 创建VRT数据
gdalbuildvrt [-tileindex field_name] [-resolution{highest|lowest|average|user}]
&&&&&&&&&&&&[-tr xres yres] [-tap] [-separate] [-allow_projection_difference] [-q]
&&&&&&&&&&&&[-te xmin ymin xmax ymax] [-addalpha] [-hidenodata]
&&&&&&&&&&&&[-srcnodata &value [value...]&] [-vrtnodata &value[value...]&]
&&&&&&&&&&&&[-input_file_list my_liste.txt] [-overwrite] output.vrt [gdalfile]*
参数说明:
从指定的输入栅&#26684;文件中创建一个VRT数据。从gdal1.6开始支持。
该工具没有进行说明。
4. gdal_contour DEM生成等高线
gdal_contour [-b &band&] [-a &attribute_name&] [-3d][-inodata]
&&&&&&&&&&&&&&&&&&&[-snodata n] [-f &formatname&] [-i &interval&]
&&&&&&&&&&&&&&&&&&&[-off &offset&] [-fl &level& &level&...]
&&&&&&&&&&&&&&&&&&&[-nln &outlayername&]
&&&&&&&&&&&&&&&&&&&&src_filename& &dst_filename&&
参数说明:
使用DEM生成等高线矢量数据。
指定要处理的波段序号,默认为第一个波段。
指定一个属性表的字段名称用于保存高程&#20540;,如果不指定则不会在属性表中填写。&
强制使用3D定点而不是2D,即高程&#20540;将被写入等高线矢量中。
-inodata:&
忽略任何nodata&#20540;。
-snodata value:
设置输入文件的nodata&#20540;。&
-f format:&
创建输出矢量的&#26684;式,默认为ESRI的shape文件。
-i interval:
等高线间距。
-off offset:
设置高程相对系数。
-fl level:&
Name one or more &fixed levels& to extract.&
-nln outlayername:&
指定输出矢量文件的图层名称,默认为“contour”。
使用dem.tif生成一个等高距为10米的等高线矢量文件contour.shp。
gdal_contour -a elev dem.tif contour.shp -i 10.0
5. gdaldem DEM算法
- To generate a shaded relief map from any GDAL-supported elevation raster:
&&& gdaldem hillshade input_dem output_hillshade
&&&&&&&&&&&&&&&[-z ZFactor (default=1)] [-s scale* (default=1)]&
&&&&&&&&&&&&&&&[-az Azimuth (default=315)] [-alt Altitude (default=45)]
&&&&&&&&&&&&&&&[-alg ZevenbergenThorne]
&&&&&&&&&&&&&&&[-compute_edges] [-b Band (default=1)] [-of format] [-co&NAME=VALUE&]* [-q]
- To generate a slope map from any GDAL-supported elevation raster :
&&& gdaldem slope input_dem output_slope_map&
&&&&&&&&&&&&&&&[-p use percent slope (default=degrees)] [-s scale* (default=1)]
&&&&&&&&&&&&&&&[-alg ZevenbergenThorne]
&&&&&&&&&&&&&&&[-compute_edges] [-b Band (default=1)] [-of format] [-co&NAME=VALUE&]* [-q]
- To generate an aspect map from any GDAL-supported elevation raster
& Outputs a 32-bit float raster with pixel values from 0-360indicating azimuth :
&&& gdaldem aspect input_dem output_aspect_map&
&&&&&&&&&&&&&&&[-trigonometric] [-zero_for_flat]
&&&&&&&&&&&&&&&[-alg ZevenbergenThorne]
&&&&&&&&&&&&&&&[-compute_edges] [-b Band (default=1)] [-of format] [-co&NAME=VALUE&]* [-q]
- To generate a color relief map from any GDAL-supported elevation raster
&&& gdaldem color-relief input_dem color_text_fileoutput_color_relief_map
&&&&&&&&&&&&&&&[-alpha] [-exact_color_entry | -nearest_color_entry]
&&&&&&&&&&&&&&&[-b Band (default=1)] [-of format] [-co &NAME=VALUE&]* [-q]
&&& where color_text_file contains lines of the format&elevation_value red green blue&
- To generate a Terrain Ruggedness Index (TRI) map from any GDAL-supportedelevation raster:
&&& gdaldem TRI input_dem output_TRI_map
&&&&&&&&&&&&&&&[-compute_edges] [-b Band (default=1)] [-of format] [-q]
- To generate a Topographic Position Index (TPI) map from any GDAL-supportedelevation raster:
&&& gdaldem TPI input_dem output_TPI_map
&&&&&&&&&&&&&&&[-compute_edges] [-b Band (default=1)] [-of format] [-q]
- To generate a roughness map from any GDAL-supported elevation raster:
&&& gdaldem roughness input_dem output_roughness_map
&&&&&&&&&&&&&&&[-compute_edges] [-b Band (default=1)] [-of format] [-q]
参数说明:
该工具提供了7个模块。分别如下:
hillshade(山地阴影)
用来生成山地阴影图像。
用来生成坡度图像。&
用来生成坡向图像。&
color-relief
用来生成一个颜色渲染地图。
用来生成地表耐用指数(TRI)图像。
用来生成地形位置指数(TPI)图像。
用来生成粗糙度图像。
下面这些选项是通用选项:
input_dem:
输入DEM数据。
output_xxx_map:
输出处理的结果数据。&
-of format:
输出文件&#26684;式,默认为GeoTiff。&
-compute_edges:
(GDAL &= 1.8.0) 处理栅&#26684;边界数据和nodata附近的数据。&
-alg ZevenbergenThorne:
(GDAL &= 1.8.0) 使用Zevenbergen & Thorne 规则代替Horn规则计算坡度坡向。研究表明Zevenbergen &Thorne用于平缓的地形,而Horn在处理比较粗糙的地形比较好。
选择要处理的波段序号,默认为1.
-co &NAME=VALUE&:
创建输出文件选项,根据创建的文件&#26684;式不同而不同。&
安静模式,不输出进度信息。
在所有的算法中,除了颜色渲染,其他的算法全部是基于一个3x3的窗口运算,如果在这个窗口中有一个&#20540;为nodata,那么结果&#20540;就是nodata,在GDAL1.8之后,如果指定了-compute_edges那么会在遇到nodata&#20540;时,会使用插&#20540;方式来确定nodata&#20540;,然后再进行处理。
这个模块输出是一个8位栅&#26684;图,他在地形可视化中非常有用。您可以指定太阳高度角和太阳方位角海拔高度,垂直夸张因子和比例因子来改变结果。0作为输出的nodata&#20540;,具体的其他参数如下:
-z zFactor:
垂直夸张系数。
垂直系数的单位,如果水平单位是度,比如WGS84投影下的经纬度,可以将该参数设置为111120那么垂直单位是米,如果设置为370400,那么垂直单位为英尺。&
-az azimuth:
光线方位角,度单位,0为正上方,90度为东边(右边)以此类推,默认&#20540;为315度。&
-alt altitude:
光线的高度角,度单位,90度为DEM的正上方,0度为水平。&
此模块将DEM栅&#26684;计算输出坡度&#20540;是32位浮数的栅&#26684;图像。你必须指定你想要的坡度&#20540;类型的选项:度或百分比坡度。同时也可以提供一个比例因子。-9999的&#20540;是用来作为输出NODATA&#20540;。以下具体的选项可供选择:
如果指定该选项,将使用坡度百分比计算,其他情况下使用度单位计算。&
垂直系数的单位,如果水平单位是度,比如WGS84投影下的经纬度,可以将该参数设置为111120那么垂直单位是米,如果设置为370400,那么垂直单位为英尺。&&
该模块输出为一个32位浮点数的栅&#26684;数据,其&#20540;范围为0度到360度之间的坡向图, 0°表示坡向超正北方, 90°坡向朝向正东方,180°坡向朝向正南方,270°坡向朝向正西方。-9999表示无效&#20540;包括平地即坡度等于0的地方,详细的参数说明如下:
-trigonometric:
返回三角角度而不是方位,0°是指北,90°东,180°西,270°南。
-zero_for_flat:
返回0表示平地,而不是-9999。
如果使用这两个选项,使用gdaldem工具生成的坡度坡向结果同GRASS中的r.slope.aspect工具生成的结果一致。否则结果和Matthew Perry的aspect.cpp工具计算的结果一致。
color-relief
该功能是使用DEM数据和一个文本存储的颜色配置文件计算输出一个三波段(RGB)或者四波段(RGBA)的栅&#26684;图像。颜色配置文件中存储的是高程&#20540;和其对应的颜色&#20540;。默认情况下,给定的两个高程&#20540;之间的颜色使用该高程&#20540;对应的颜色插&#20540;来进行计算。参数-exact_color_entry或者参数-nearest_color_entry可以避免使用线性插&#20540;来确定从配置文件中没有找到对应的颜色&#20540;。
同时还有下面的选项可以使用:
color_text_file:
基于文本的颜色配置文件&
在输出文件中添加Alpha通道
-exact_color_entry :
使用严&#26684;的匹配,在配置文件中搜索对应的高程&#20540;,如果没有找到匹配的颜色,使用“0,0,0,0”来进行填充。
-nearest_color_entry :
在颜色配置文件中使用与RGBA颜色相近的颜色进行填充。
color-relief是支持输出VRT&#26684;式的,在这种情形下,会将颜色配置文件转换为一个LUT(Look up table颜色查找表)。&#20540;得注意的是,使用百分比指定的高程&#20540;会被转换为绝对高程&#20540;。
基于文本&#26684;式的颜色配置文件一般每行都有四列,分别是:高程&#20540;,红,绿,蓝(0-255之间)。高程&#20540;可以是任何浮点数,或者使用nv来表示无效&#20540;。高程&#20540;统一可以使用百分比来表示,0%表示DEM中的最小&#20540;,100%表示DEM数据中的最大&#20540;。
此外还有一列是可选的就是Alpha部分,如果没有指定,默认&#20540;为255,表示不透明。同时每列之间的分隔符可以是:逗号(,),制表符(tab键),空&#26684;( ),冒号(:),以上符合均为英文输入法下的符号。通常使用的颜色单词也可以用来替换RGB&#20540;,包括: white白色, black黑色, red红色, green绿色, blue蓝色, yellow黄色, magenta品红, cyan青色, aqua浅绿色, grey/gray灰色, orange橙色, brown棕色, purple/violet
紫色和indigo靛蓝色。
从GDAL1.8.0开始,GMT的.cpt调色板文件页可以支持(仅在COLOR_MODEL = RGB时可用)。
注意:颜色配置文件的句法同GRASS中的r.colors工具一致,ESRI的HDR颜色表文件(.clr)也是这种&#26684;式,Alpha部分的支持是GDAL的一个特殊扩展。
颜色配置文件示例:&
3500&& white
2500&& 235:220:175
50%&& 190 185 135
700&&& 240 250 150
0&&&&& 50& 180& 50
nv&&&& 0&& 0&& 0&&0&
该工具生成一个单波段的栅&#26684;图像,TRI是地形粗糙指数(Terrain Ruggedness Index)的缩写,代表的是中心点象元与周围8个象元点的高程差的绝对&#20540;的平均&#20540;。(参考Wilson et al 2007, Marine Geodesy 30:3-35)。
输出文件中的-9999代表无效&#20540;。该功能没有其他选项。
该工具生成一个单波段的栅&#26684;图像,TPI是地形方位指数(Topographic Position Index)的缩写,代表的是中心点象元高程与周围8个象元点的高程平均&#20540;的差&#20540;。(参考Wilson et al 2007, Marine Geodesy 30:3-35)。
输出文件中的-9999代表无效&#20540;。该功能没有其他选项。
该工具使用DEM数据计算一个单波段的栅&#26684;图像, 粗糙度是指当前窗口中的最大&#20540;和最小&#20540;的差&#20540;。(参考Wilson et al 2007, Marine Geodesy 30:3-35)。
输出文件中的-9999代表无效&#20540;。该功能没有其他选项。
6. gdal_rasterize 矢量栅&#26684;化
gdal_rasterize [-b band]* [-i] [-at]
&&&&&& [-burn value]* | [-a attribute_name][-3d]
&&&&&& [-l layername]* [-where expression][-sql select_statement]
&&&&&& [-of format] [-a_srs srs_def] [-co&NAME=VALUE&]*
&&&&&& [-a_nodata value] [-init value]*
&&&&&& [-te xmin ymin xmax ymax] [-tr xresyres] [-tap] [-ts width height]
&&&&&& [-ot{Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/
&&&&&&&&&&&&CInt16/CInt32/CFloat32/CFloat64}] [-q]
&&&&&& &src_datasource&&dst_filename&
参数说明:
该程序将矢量几何图形(点,线,面)栅&#26684;化到栅&#26684;波段中。矢量必须是OGR库支持的矢量&#26684;式。注意的是矢量数据和栅&#26684;数据必须具有相同的坐标系统,不支持动态重投影功能。从GDAL1.8.0开始,支持创建结果图像,必须使用-tr或者-ts选项才行。
要写入的栅&#26684;波段,可以使用-b参数来进行多选,默认是写入第一个波段中。
栅&#26684;反转,. Burn the fixed burn value, or the burn value associatedwith the first feature into all parts of the image not inside the provided apolygon.
Enables the ALL_TOUCHED rasterization option so that all pixels touched bylines or polygons will be updated not just those one the line render path, orwhose center point is within the polygon. Defaults to disabled for normalrendering rules.
-burn value:
栅&#26684;象元&#20540;,将所有的对象都用该&#20540;写入波段中,可以使用一个列表,来指定每个波段写入的象元&#20540;。
-a attribute_name:
指定属性字段中的字段&#20540;作为栅&#26684;&#20540;写入栅&#26684;文件中。
将坐标点的Z&#20540;写入栅&#26684;中,假如参数-burn和-a attribute_name 被指定,那么该参数将会无效,目前仅仅支持3D的点和线数据。
-l layername:
指定矢量文件中的图层名作为输入要素,可以指定多次,但是至少有一个图层名或者-sql必须被指定。
-where expression:
SQL WHERE&#26684;式的查询语句,从指定的图层中选择特殊的要素。
-sql select_statement:
使用SQL语句来指定矢量数据中那些要素将要被栅&#26684;化。
-of format:
(GDAL &= 1.8.0)输出文件&#26684;式,默认为GeoTiff&#26684;式,使用短&#26684;式名称。
-a_nodata value:
(GDAL &= 1.8.0) 指定输出文件的无效&#20540;。
-init value:
(GDAL &= 1.8.0) 指定初始化栅&#26684;波段中的象元&#20540;,但是该&#20540;不能作为输出文件的无效&#20540;,如果只指定了一个&#20540;,那么其他的波段都会使用该&#20540;来填充。
-a_srs srs_def:
(GDAL &= 1.8.0) 覆盖输出文件的投影,如果没有指定,将使用输入的矢量文件中的投影作为输出投影,如果输入和输出投影不一致,将尝试重投影矢量。该参数的&#26684;式可以是GDAL/OGR支持的各种投影&#26684;式,如完整的WKT,PROJ.4,EPSG:n或者存储WKT的文本文件。
-co &NAME=VALUE&:
(GDAL &= 1.8.0) 创建图像选项,具体参考不同的栅&#26684;&#26684;式。
-te xmin ymin xmax ymax :
(GDAL &= 1.8.0) 设置地理范围,该&#20540;必须使用地理单位,如果没有指定,该范围同输入的矢量图层范围一致。
-tr xres yres :
(GDAL &= 1.8.0)设置输出分辨率,该&#20540;必须是有地理单位,两个必须都是正数。
(GDAL &= 1.8.0) (target aligned pixels) align the coordinates of theextent of the output file to the values of the -tr, such that the aligned extentincludes the minimum extent.(不清楚该参数,同gdalwarp中的-tap)
-ts width height:
(GDAL &= 1.8.0) 设置输出文件大小,注意使用-ts是不能同时使用-tr。
(GDAL &= 1.8.0) 输出波段的数据类型,默认为64位浮点数。
(GDAL &= 1.8.0) 不输出进度信息和错误信息。
src_datasource:
任何OGR支持的矢量数据。
dst_filename:
GDAL支持的输出文件,必须支持更新模式访问,在GDAL1.8.0之前,该工具不能创建结果图像。
下面的例子,将mask.shp中的所有多边形栅&#26684;化为一个RGB的Tif图像work.tif,使用红色表示(RGB = 255,0,0)。
gdal_rasterize -b 1 -b 2 -b 3 -burn 255 -burn 0 -burn 0 -l mask mask.shpwork.tif
下面的例子将所有的class属性&#20540;为A的全部要素输出到一个高程文件中,高程文件的高程&#20540;为属性字段ROOF_H 的属性&#20540;。
gdal_rasterize -a ROOF_H -where 'class=&A&' -l footprintsfootprints.shp city_dem.tif
7. gdaltransform 坐标系转换工具
gdaltransform [--help-general]
&&& [-i] [-s_srs srs_def] [-t_srs srs_def] [-to&NAME=VALUE&]
&&& [-order n] [-tps] [-rpc] [-geoloc]
&&& [-gcp pixel line easting northing [elevation]]*
&&& [srcfile [dstfile]]
参数说明:
gdaltransform工具用来转换坐标,从支持的投影,包括GCP点的变换。
-s_srs srs def:
原始空间参考,该&#20540;将被OGRSpatialReference.SetFromUserInput()函数调用,支持包括EPSG PCS 和GCSes (如EPSG:4296), PROJ.4声明或者一个后缀名为.prf的文件存储的WKT串。
-t_srs srs_def:
目标空间参考,该&#20540;将被OGRSpatialReference.SetFromUserInput()函数调用,支持包括EPSG PCS 和GCSes (如EPSG:4296), PROJ.4声明或者一个后缀名为.prf的文件存储的WKT串。
-to NAME=VALUE:
设置转换参数,将会使函数GDALCreateGenImgProjTransformer2()来调用。
几何多项式变换次数(1到3),默认情况下会根据输入的GCP点的个数自动确定。
强制将GCP点使用TPS转换方式转换。
强制使用RPC参数转换。
强制使用Geolocation数组转换。
逆转换,从目标到原始投影转换。
-gcppixel line easting northing [elevation]:
指定GCP点,通常至少需要三个。
原始投影下定义的GCP点文件,如果没有指定,需要从命令行-s_srs或者-gcp参数输入。
目标投影定义文件。
读取的坐标必须是成对出现(或者三个一组),输出也以同样的方式输出,所有的变换共gdalwarp相同,包括使用GCP的变换。注意输入输出必须使用十进制小数,当前不支持DMS(度分秒)的输入输出。如果指定了输入图像,那么输入的坐标是基于图像的行列号,如果输出图像指定,输出的坐标也是图像的行列号。
重投影示例
简单的投影转换,从一个投影转换到另一个投影:
gdaltransform -s_srs EPSG:28992 -t_srs EPSG:31370
Produces the following output in meters in the &Belge 1972 / BelgianLambert 72& projection:
图像RPC变换示例:
下面的命令行使用基于RPC变换,并且使用-i选项来将经纬度坐标转为图像的行列号:
gdaltransform -i -rpc 06OCTAS-_01_P001.TIF
125.0750&&&&&&&&&&&&&&&&&&&&
Produces this output measured in pixels and lines on the image:
8. nearblack
gdalinfo [--help-general] [-mm] [-stats] [-hist] [-nogcp] [-nomd]
&&&&&&&& [-noct] [-nofl][-checksum] [-proj4] [-mdd domain]*
[-sd subdataset] datasetname
参数说明:
该工具没有进行说明。
9. gdal_grid 插&#20540;工具
gdal_grid [-ot {Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/
&&&&&&&&&CInt16/CInt32/CFloat32/CFloat64}]
& [-of format] [-co &NAME=VALUE&]
& [-zfield field_name]
& [-a_srs srs_def] [-spat xmin ymin xmax ymax]
&&&&&&&&& [-clipsrc &xminymin xmax ymax&|WKT|datasource|spat_extent]
&&&&&&&&& [-clipsrcsqlsql_statement] [-clipsrclayer layer]
&&&&&&&&& [-clipsrcwhe}

我要回帖

更多关于 rgb 8 是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信