一、 GDAL Python工具

本文主要介绍的是GDAL工具集中的Python脚本命令,需要的环境必须是有Python环境和GDAL的Python版本。这是必须的,否则这些工具都不能用。对于已经安装ArcGIS的同学来说,Python都已经安装好了,可以直接下载GDAL的Python版本,然后就可以使用下面这些工具。

1. rgb2pct.py 转换24位RGB图为8位图

用法:

rgb2pct.py [-n colors | -pct palette_file] [-of format] source_file dest_file

参数说明:

该工具会自动根据指定的RGB图像计算最合适的假彩色颜色表。然后对结果影像使用该颜色表。简而言之,就是将RGB彩色图像转换为一个单波段的图像,使用颜色表来表示颜色。

-n colors:

指定生成颜色表的颜色数目,默认是256,其值必须是2到256之间的整数值。

-pct palette_file:

从调色板文件中提取颜色表而不从图像中计算。调色板文件必须是GDAL支持的调色板格式。

-of format:

输出文件格式,默认为GeoTiff格式,而且输出格式必须支持颜色表。

source_file:

输入的RGB图像。

dest_file:

输出的图像路径。如果图像不存在会创建一个。

举例:

如果希望指定调色板信息,比如简单的文本格式,如GDAL VRT格式,在下面的例子中将指定一个使用文本编辑器创建的VRT格式的调色板文件,一共有四个颜色,RGBA值分别是:238/238/238/255,237/237/237/255,36/236/236/255和229/229/229/255。

% rgb2pct.py -pct palette.vrt rgb.tif pseudo-colored.tif

% more < palette.vrt

<VRTDataset rasterXSize="226" rasterYSize="271">

<VRTRasterBand dataType="Byte" band="1">

<ColorInterp>Palette</ColorInterp>

<ColorTable>

<Entry c1="238" c2="238" c3="238" c4="255"/>

<Entry c1="237" c2="237" c3="237" c4="255"/>

<Entry c1="236" c2="236" c3="236" c4="255"/>

<Entry c1="229" c2="229" c3="229" c4="255"/>

</ColorTable>

</VRTRasterBand>

</VRTDataset>

2. pct2rgb.py 转换8位图为24位RGB图

用法:

pct2rgb.py [-of format] [-b band] [-rgba] source_file dest_file

参数说明:

该工具是将一个带有颜色表的图像转为RGB图像。

-of format:

输出文件格式,默认为GeoTiff格式。

-b band:

指定要转换的波段序号,默认是第一个波段。

-rgba:

生成RGBA文件(默认是生成RGB文件)。

source_file:

输入文件。

dest_file:

输出文件。

3. gdal_merge.py 镶嵌图像

用法:

gdal_merge.py [-o out_filename] [-of out_format] [-co NAME=VALUE]*

[-ps pixelsize_x pixelsize_y] [-tap] [-separate] [-v] [-pct]

[-ul_lr ulx uly lrx lry] [-n nodata_value] [-init "value [value...]"]

[-ot datatype] [-createonly] input_files

参数说明:

该工具会自动镶嵌指定的图像。所有的图像必须具有相同的坐标系统和相同的波段数目;输入图像可能是有重叠区或者不同的分辨率。在重叠区部分最后的图像将会覆盖之前的图像值。

-o out_filename:

输出文件,如果不存在将会创建一个新图像。如果该值不指定,将会创建一个叫out.tif的图像。

-of format:

输出文件格式,默认为GeoTiff格式。

-co NAME=VALUE:

创建图像选项,具体参考具体图像格式说明。

-ot datatype:

指定输出数据类型,使用类型名称,如Byte,Int16等。

-ps pixelsize_x pixelsize_y:

输出图像的象元大小,如果不指定,将以第一个图像的分辨率为基准。

-tap:

(GDAL >= 1.8.0) (target aligned pixels) align the coordinates of the extent of the output file to the values of the -tr, such that the aligned extent includes the minimum extent.

-ul_lr ulx uly lrx lry:

输出文件范围,如果不指定,将会以所有的输入图像的范围并集为输出文件范围。

-v:

生成详细的镶嵌操作信息,当执行结束的时候。

-separate:

Place each input file into a separate stacked band.

-pct:

提取颜色表从第一个输入图像,并在结果图像中使用,按照这种方式镶嵌图像的话,后面的图像的颜色表都会被忽略,以第一个为准。

-n nodata_value:

指定nodata值,在镶嵌操作的时候会忽略该值。

-init "value(s)":

指定输出文件的初始值,不会在输出文件中指定nodata值,如果只指定了一个值,那么所有的波段都会使用该值来作为初始值。

-createonly:

输出文件已经创建好了。但是输入文件数据没有写入。

举例:

创建一个图像,将所有的波段都指定为255。

% gdal_merge.py -init 255 -o out.tif in1.tif in2.tif

创建一个RGB图像,并将前两个波段初始化为0,第三个波段为255。

% gdal_merge.py -init "0 0 255" -o out.tif in1.tif in2.tif

4. gdal2tiles.py 生成TMS切片

用法:

gdal2tiles.py [-title "Title"] [-publishurl http://yourserver/dir/]

[-nogooglemaps] [-noopenlayers] [-nokml]

[-googlemapskey KEY] [-forcekml] [-v]

input_file [output_dir]

参数说明:

该工具按照OSGeo的切片地图服务说明书来生成小的切片数据和元数据。基于Google地图和OpenLayers简单的网页地图浏览。

GDAL2Tiles 工具创建Google Earth (KML SuperOverlay)必需的元数据文件,按照EPSG:4326投影。同时会创建世界文件(World file),但是页可以创建其他的投影的文件。

-title "Title":

生成元数据,网页视图和KML文件。

-publishurl http://yourserver/dir/:

添加发布的网页地址,会将结果上传到该地址。

-nogooglemaps:

不要生成基于Google地图的html页面。

-noopenlayers:

不要生成基于OpenLayers的html页面。

-nokml:

不要生成Google Earth的kml文件。

Do not generate KML files for Google Earth.

-googlemapskey KEY:

指定生成区域的范围,使用Google Maps的API。参考(http://www.google.com/apis/maps/signup.html).

-forcekml

生成kml文件,输入图像必需是EPSG:4326的投影!

-v

处理结束后输出详细信息。

5. gdal_retile.py

用法:

gdal_retile.py [-v] [-co NAME=VALUE]* [-of out_format] [-ps pixelWidth pixelHeight]

[-ot  {Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/

CInt16/CInt32/CFloat32/CFloat64}]'

[ -tileIndex tileIndexName [-tileIndexField tileIndexFieldName]]

[ -csv fileName [-csvDelim delimiter]]

[-s_srs srs_def]  [-pyramidOnly]

[-r {near/bilinear/cubic/cubicspline/lanczos}]

-levels numberoflevels

[-useDirForEachRow]

-targetDir TileDirectory input_files

参数说明:

该工具对输入图像创建分块。所有的输入图像必需具有相同的投影和相同的波段数。可以选择生成金字塔。会生成输出瓦片的矢量文件。

-targetDir directory:

输出瓦片存放的目录。金字塔文件会存放在子文件夹中,子文件夹的命名从1开始,数字代表金字塔级别。创建的输出名称由源文件名称和一个序号组成。

-of format:

输出文件格式,默认为GeoTiff格式。

-co NAME=VALUE:

创建选项,具体参考具体的格式说明。

-ot datatype:

指定输出图像的数据类型,使用类型名称,如Byte,Int16,UInt16等。

-ps pixelsize_x pixelsize_y:

输出文件大小,如果不指定,默认是256*256。

-levels numberOfLevels:

创建的金字塔级数。

-v:

输出相信的信息。

-pyramidOnly:

不建立瓦片文件,只建立金字塔。

-r algorithm:

重采样方式,默认为最邻近采样。

-s_srs srs_def:

源文件的空间参考。坐标系统可以是任何OGRSpatialReference.SetFro函数支持的坐标系统,包括EPSG PCS和GCSes,PROJ.4声明或者其他的包含WKT字符串的prf文件。如果不知道,将会从指定输入图像中读取。同时该空间参考用来创建生成的瓦片的矢量文件。

-tileIndex tileIndexName:

包含结果瓦片索引的shp名称。

-tileIndexField tileIndexFieldName:

包含瓦片名称的属性表字段名称。

-csv csvFileName:

指定包含瓦片地理信息的csv文件名称。该文件包含五列,分别是:(瓦片名称,最小x,最大x,最小y,最大y)tilename,minx,maxx,miny,maxy。

-csvDelim column delimiter:

CSV文件的列之间分隔符,默认使用分号风格。

-useDirForEachRow:

通常情况下,输出的瓦片文件存放在-targetDir指定的文件夹中。对于大图像,在有些文件系统中对于文件夹中的文件数过多可能会有一些问题,从而导致gdal_retile程序不能正常执行完毕。使用该参数可以创建不同的目录结构。原始的瓦片文件存放在名字为0的子文件夹中,金字塔依次存放在子文件1,2,3...中,数字代表金字塔的级别。

6. gdal_proximity.py

用法:

gdal_proximity.py srcfile dstfile [-srcband n] [-dstband n]

[-of format] [-co name=value]*

[-ot Byte/Int16/Int32/Float32/etc]

[-values n,n,n] [-distunits PIXEL/GEO]

[-maxdist n] [-nodata n] [-fixed-buf-val n]

参数说明:

gdal_proximity.py脚本用来生成栅格图像的距离图,即计算中心点的象元与临近的象元之间的距离作为结果象元值。

srcfile

输入的栅格图像。=

dstfile

输出影像,可以是一个已经存在的文件,大小和原始图像一致,如果不存在,将会创建一个新图像。

-srcband n

指定用来计算的波段序号,默认为第一个波段。

-dstband n

指定输出的波段序号,默认为第一个波段。

-of format:

输出图像格式,默认为GeoTiff格式,使用短格式名称。

-co "NAME=VALUE":

创建图像选项,具体参考对应格式的说明。

-ot datatype:

输出文件的数据类型,使用短名称,如Byte,Int16。

-values n,n,n:

A list of target pixel values in the source image to be considered target pixels. If not specified, all non-zero pixels will be considered target pixels. 指定结果象元值在原始影像如果没有指定,所有的非0象元将被用来计算结果图。

-distunits PIXEL/GEO:

指定距离的单位,默认为像素单位,可以为像素单位或者地理坐标单位。

-maxdist n:

最大距离值,所有超过该值的象元具体将被设置为nodata值或者65535。距离使用像素单位时,如果使用GEO参数的话,不会执行该操作。

-nodata n:

指定nodata值。

-fixed-buf-val n:

Specify a value to be applied to all pixels that are within the -maxdist of target pixels (including the target pixels) instead of a distance value.

7. gdal_polygonize.py 栅格矢量化工具

用法:

gdalinfo [--help-general] [-mm] [-stats] [-hist] [-nogcp] [-nomd]

[-noct] [-nofl] [-checksum] [-proj4] [-mdd domain]*

[-sd subdataset] datasetname

参数说明:

gdalinfo程序输出gdal支持的栅格格式的一系列信息。

-mm

强制计算栅格每个波段的最大最小值。

-stats

读取和现实图像统计信息,如果指定该参数,将强制计算图像的统计信息,如各个波段的最大值、最小值、均值、标准差等。

举例:

Generate polygons from raster.

8. gdal_sieve.py 小斑去除滤波工具

用法:

gdalinfo [--help-general] [-mm] [-stats] [-hist] [-nogcp] [-nomd]

[-noct] [-nofl] [-checksum] [-proj4] [-mdd domain]*

[-sd subdataset] datasetname

参数说明:

gdalinfo程序输出gdal支持的栅格格式的一系列信息。

-mm

强制计算栅格每个波段的最大最小值。

-stats

读取和现实图像统计信息,如果指定该参数,将强制计算图像的统计信息,如各个波段的最大值、最小值、均值、标准差等。

举例:

Raster Sieve filter.

9. gdal_fillnodata.py 填充NoData区域

用法:

gdalinfo [--help-general] [-mm] [-stats] [-hist] [-nogcp] [-nomd]

[-noct] [-nofl] [-checksum] [-proj4] [-mdd domain]*

[-sd subdataset] datasetname

参数说明:

gdalinfo程序输出gdal支持的栅格格式的一系列信息。

-mm

强制计算栅格每个波段的最大最小值。

-stats

读取和现实图像统计信息,如果指定该参数,将强制计算图像的统计信息,如各个波段的最大值、最小值、均值、标准差等。

二、 其他说明

关于GDAL的Python编译、安装和使用方法,网上有很多的博文。由于Python是不用编译的脚本语言,所以不用编译就可以运行,语法简单,受到很多人的喜爱,我也是Python的爱好者。尤其是对于一些简单的功能,完全没有必要写一个C或者C++以及其他的语言程序,还需要编译后才能使用,总觉得不是那么的方便。如果用Python,写完后直接可以运行。

关于Python版本的编译和安装,参考此系列的博文三:http://blog.csdn.net/liminlu0314/article/details/6945452;此外,对于Python版本GDAL的使用,主要参考李林(lilin)写的《GDAL库学习笔记》系列文章(想当年我就是看这七篇文章来学习GDAL的)。链接地址为:http://wiki.woodpecker.org.cn/moin/lilin。

转载于:https://www.cnblogs.com/stardasha/p/3389171.html

GDAL源码剖析(五)之Python命令行程序相关推荐

  1. GDAL源码剖析(四)之命令行程序说明二

    接博客GDAL源码剖析(四)之命令行程序说明一http://blog.csdn.net/liminlu0314/article/details/6978589 其中有个nearblack,gdalbu ...

  2. 《GDAL源码剖析与开发指南》一一1.9 简单的调用

    本节书摘来自异步社区出版社<GDAL源码剖析与开发指南>一书中的第1章,第1.9节,作者:李民录 更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.9 简单的调 ...

  3. java实现gdal栅格矢量化,《GDAL源码剖析与开发指南》一一1.5 GDAL源码目录

    本节书摘来自异步社区出版社<GDAL源码剖析与开发指南>一书中的第1章,第1.5节,作者:李民录 更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.5 GDAL ...

  4. GDAL源码剖析(一)

    前言:一直在使用和研究GDAL的相关东西,发现网上对GDAL的内容倒是不少,但是很少有系统的介绍说明,以及内部的一些结构说明,基于这些原因,将本人的一些粗浅的理解放在此处,形成一个系列,暂时名为< ...

  5. 《GDAL源码剖析与开发指南》导读

    前言 GDAL源码剖析与开发指南 GDAL全称是Geospatial Data Abstraction Library(地理空间数据抽象库),是一个在X/MIT许可协议下读写空间数据(包括栅格数据和矢 ...

  6. python命令行大全-用什么库写 Python 命令行程序(示例代码详解)

    一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse . docopt . click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变. ...

  7. 如何编写完美的 Python 命令行程序?

    这篇文章将教你如何编写完美的 Python 命令行程序,提高团队的生产力,让大家的工作更舒适. 作者 | Yannick Wolff 译者 | 弯月 责编 | 屠敏 出品 | CSDN(ID:CSDN ...

  8. python 代码命令大全-用什么库写 Python 命令行程序(示例代码详解)

    一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse . docopt . click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变. ...

  9. Python源码剖析[1] —— 编译Python

    [ 绝对原创,转载请注明出处] 注意 :第一部分Python总体架构采用了网络文档<The Architecture of Python>,这是网络上唯一可见的以剖析Python实现为己任 ...

  10. GDAL源码剖析(二)之编译说明

    一.简单的编译 1.使用VisualStudio IDE编译 首先进入GDAL的源代码目录,可以看到有几个sln为后缀的文件名,比如makegdal10.sln,makegdal80.sln,make ...

最新文章

  1. python读取access_Python 获取 Access 表字段名!
  2. css 设置table样式
  3. Serverless Kubernetes 容器服务介绍
  4. 虚基类(c++细节篇七)
  5. acid(数据库事务正确执行的四个基本要素的缩写)
  6. 无线传感网1-简单介绍
  7. 了解Python编程——Python学习(一)
  8. 机器学习数学知识积累总结
  9. POJ 1002 UVA 755 487--3279 电话排序 简单但不容易的水题
  10. 全志 Allwinner V3S 开发环境搭建 (一)虚拟机搭建 Oracle VM VirtualBox6.1 Ubuntu14.4
  11. r语言nonzerocoef函数_文献汇报||Lasso方法在肿瘤基因位点筛选中的应用
  12. 解决iPhone、iPad的home按键不灵敏
  13. 原生js生成渐变色数组集合
  14. 安卓获取string.xml文件里的值
  15. 2020年东三省玉米种植分布数据
  16. ntohs, ntohl, htons,htonl inet_aton等详解
  17. java数据回填_快逸数据回填的实现方法
  18. obiee12c ssl 启动服务报错BEA-149535BEA-149504
  19. qywechat.class.php,wechat-php-sdk/qywechat.class.php at master · xzw/wechat-php-sdk · GitHub
  20. idea 实时更新网页内容(修改代码同时刷新网页即可同步内同)

热门文章

  1. (转)J2ME中随机数字的生成
  2. 小程序本地图片偶尔加载不出来_小程序优化的20中策略
  3. 力扣 有多少小于当前数字的数字
  4. 一程序员反应职场怪现象
  5. 无需充电的太阳能汽车有多强?约17万起,续航高达1609km
  6. 私域经济运营能力最关键的三个指标
  7. 普通人到底要靠什么才能改变命运?
  8. 为什么很多人已经很努力了
  9. 关于计算性能的若干重要事实
  10. 学校如何把表格里的成绩,让学生以二维码的方式去扫描查询呢?