gdal工具(一)矢量栅格化工具 gdal_rasterize

gdal工具(一)矢量栅格化工具 gdal_rasterize

gdal_rasterize 可执行程序

  gdal_rasterize 是gdal提供的矢量栅格化工具,它能够用于将矢量文件(包括点、线、面等矢量图形)转换为栅格影像文件。支持的矢量文件包括shapefile、gml等。默认输出为Float64位的栅格影像。

用法

gdal_rasterize [-b band]* [-i] [-at]
{[-burn value]* | [-a attribute_name] | [-3d]} [-add]
[-l layername]* [-where expression] [-sql select_statement]
[-dialect dialect] [-of format] [-a_srs srs_def]
[-co "NAME=VALUE"]* [-a_nodata value] [-init value]*
[-te xmin ymin xmax ymax] [-tr xres yres] [-tap] [-ts width height]
[-ot {Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/
     CInt16/CInt32/CFloat32/CFloat64}] [-q]
<src_datasource> <dst_filename>

参数

  • -b :要写入值的波段。多个-b参数可用于写入成一个波段列表。默认情况下是写入到波段1。当创建新栅格数据该参数不使用。
  • -i: 反向栅格化。将固定的值或者与第一个特征图形相关值写入到影像中指定的多边形之外的部分。
  • -at: 启用all_touch栅格化选项,这样被线条或多边形接触的所有像素都将被更新,而不仅仅是线条呈现路径上的像素,或者其中心点位于多边形内的像素。默认为禁用正常呈现规则。
  • -burn : 为所有对象写入到一个波段的数值。可以提供多个-burn选项,每一个波段写入一个值。
  • -a <attribute_name>:指定特征图形中一个属性域(值)用来作为写入的值。这个值会被写入到所有输出的波段。
  • -3d:将矢量数据中的Z坐标值设置为栅格图像的像元值。
  • -add: 增加新的数值到已有的栅格影像中,而不是写入新值。适用于热度图。
  • -l : 指示将用于输入特性的来自数据源的图层。可以多次指定,但必须指定至少一个图层名称或-sql选项。
  • -where : 一个可选的SQL,其中样式查询表达式用于选择要从输入层写入的特性。
  • -sql <select_statement>: 针对数据源计算的SQL语句,以生成要写入的特性的虚拟层。
  • -dialect : SQL方言。在某些情况下,可以通过传递OGRSQL来使用(未经优化的)OGRSQL,而不是RDBMS的原生SQL。“SQLITE”方言也可以用于任何数据源。
  • -of : 选择输出格式。从GDAL 2.3开始,如果没有指定,则从扩展名猜测格式(以前是GTiff)。使用短格式名称。
  • -a_nodata : 为输出波段指定nodata值。
  • -init : 用这些值重新初始化输出图像带。但是,输出文件中没有将其标记为nodata值。如果只给出一个值,则在所有波段使用相同的值。
  • -a_srs <srs_def>: 覆盖输出文件的投影。如果没有指定,将使用输入矢量文件的投影(如果可用)。使用此选项时,不会将输入矢量的SRS的特征重新投影到输出栅格的指定SRS,因此只使用此选项来纠正无效的源SRS。<srs_def>可以是任何常见的GDAL/OGR表单,包括完整的WKT、PROJ.4、EPSG:n或包含WKT的文件。当矢量文件没有或者投影不正确时可用。
  • -to NAME=VALUE:设置一个适合传递给GDALCreateGenImgProjTransformer2()的转换选项(放射变换数组)。当要将地理坐标转换为目标栅格像元坐标时用到。例如,这可以用来指定RPC相关的转换选项。
  • -co <NAME=VALUE>: 格式控制参数,该参数可以控制输出格式的选项,比如是否压缩等等。许多格式都有一个或多个可选创建选项,可用于控制所创建文件的详细信息。例如,GeoTIFF驱动程序支持创建选项来控制压缩(COMPRESSED=YES),以及是否应该平铺文件。可用的创建选项因格式驱动程序而异,一些简单的格式根本没有创建选项。格式支持的选项列表可以使用-formats命令行选项列出,但是格式文档是关于驱动程序创建选项的最终信息来源。有关每种格式的合法创建选项,可参阅栅格影像驱动器格式化特定文档。
  • -te : 设置输出图像地理坐标四至范围。这些值必须用地理单位表示。如果没有指定,输出文件的范围将是矢量图层的范围。
  • -tr : 设置图像分辨率。这些值必须用地理单位表示。 两者都必须是正值。不能同时与-ts使用。
  • -tap: 设置像元对齐。(目标对齐的像素)将输出文件的范围坐标对齐到-tr的值,以便对齐的范围包含最小范围。
  • -ts : 设置以像素和行为单位的输出文件大小。注意-ts不能与-tr一起使用
  • -ot :强制输出波段为指定的数据类型。若无该参数,则默认输出数据类型为Float64
  • -q:设置安静状态,该状态下不输出其他非错误信息和进度信息。
  • <src_datasource>:任何OGR都支持可读数据源。
  • <dst_filename>:GDAL支持输出文件。必须支持更新模式访问。该文件将被创建(如果已经存在,则被覆盖):option:-of、-a_nodata、-init、-a_srs、-co、-te、-tr、-tap、-ts或-ot选项。

示例:

  1. 下面代码将会将mask.shp文件中的所有多边形写入到RGB TIFF文件work.tif中,并标记为红色(RGB = 255,0,0)。
    gdal_rasterize -b 1 -b 2 -b 3 -burn 255 -burn 0 -burn 0 -l mask mask.shp work.tif
  1. 下面代码将通过从footprints.shp矢量文件中ROOF_H属性中提取顶部高度,把所有类别为A的建筑物写入到输出的高程文件city_dem.tif中。
    gdal_rasterize -a ROOF_H -where 'class="A"' -l footprints footprints.shp city_dem.tif
  1. 下面的代码将把footprints.shp文件中的所有多边形写入到一个新的1000x1000的颜色设置为红色的rgb TIFF影像。注意-b选项没有使用;-burn选项的顺序决定了输出栅格的波段。
    gdal_rasterize -burn 255 -burn 0 -burn 0 -ot Byte -ts 1000 1000 -l footprints footprints.shp mask.tif
  1. 下面的代码将Sentinel2 L1C级产品中的云掩膜数据(gml文件)转换成与可见光影像四至范围、分辨率(10m)和投影方式相同的云掩膜栅格影像。该栅格影像的像元值100表示云,无效值为0。注意,-te选项中的四个值并不是图像的像素坐标范围,而是地理坐标范围。
    gdal_rasterize -burn 100 -tr 10 10 -te 499980. 4890240. 609780. 5000040. -a_nodata 0 -of GTiff -ot Byte -q MSK_CLOUDS_B00.gml cloud_mask_byte_3.tif

gml矢量栅格化会生成一个后缀名为gfs的文件,该文件记录了投影坐标系统、四至范围等信息。但有时原本带有投影信息的gml经过栅格化后得到的图像并没有投影信息,这时候可以将对应的gfs删掉,重新运行一次试试。如果gml文件中有投影信息,而栅格化后的影像没有投影信息,有可能是gml文件被xml.dom等xml解析器占用了,解决的方法是及时关闭被解析的gml文件,删掉gfs文件。
gfs文件内容示例

官方文档链接:
  https://gdal.org/programs/gdal_rasterize.html

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值