gdal_grid
从分散的数据创建规则网格。
简介
gdal_grid [-ot {Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/
CInt16/CInt32/CFloat32/CFloat64}]
[-of format] [-co "NAME=VALUE"]
[-zfield field_name] [-z_increase increase_value] [-z_multiply multiply_value]
[-a_srs srs_def] [-spat xmin ymin xmax ymax]
[-clipsrc <xmin ymin xmax ymax>|WKT|datasource|spat_extent]
[-clipsrcsql sql_statement] [-clipsrclayer layer]
[-clipsrcwhere expression]
[-l layername]* [-where expression] [-sql select_statement]
[-txe xmin xmax] [-tye ymin ymax] [-tr xres yres] [-outsize xsize ysize]
[-a algorithm[:parameter1=value1]*] [-q]
<src_datasource> <dst_filename>
描述
此程序从从OGR数据源读取的分散数据创建常规网格(栅格)。输入的数据将被插值以填充网格节点的值,您可以从各种插值方法中选择。
It is possible to set the GDAL_NUM_THREADS
configuration option to parallelize the processing. The value to specify is
the number of worker threads, or ALL_CPUS
to use all the cores/CPUs of the
computer.
- -ot <type>
强制输出图像带具有驱动程序支持的特定数据类型,该数据类型可以是以下类型之一:
Byte
,UInt16
,Int16
,UInt32
,Int32
,Float32
,Float64
,CInt16
,CInt32
,CFloat32
或CFloat64
.
- -of <format>
选择输出格式。从GDAL 2.3开始,如果未指定,则从扩展名猜测格式(以前是GTiff)。使用短格式名称。
- -txe <xmin> <xmax>
设置要创建的输出文件的地理参考X范围。
- -tye <ymin> <ymax>
设置要创建的输出文件的地理参考Y范围。
- -a_srs <srs_def>
重写输出文件的投影。srs-def>可以是任何常见的GDAL/OGR形式、完整的WKT、PROJ.4、EPSG:n或包含WKT的文件。不做任何谴责。
- -zfield <field_name>
标识要用于从中获取Z值的要素上的属性字段。此值将替代从要素几何图形记录中读取的Z值(当然,如果几何图形中有Z值,则无需选择,应指定包含Z值的字段名)。
- -z_increase <increase_value>
添加到要用于从中获取Z值的要素的属性字段。加法应与Z值的单位相同。结果值为Z值+Z增加值。默认值为0。
- -z_multiply <multiply_value>
这是Z域的乘法比。这可用于从英尺到米或从海拔到深的移动。结果值为(Z值+Z增加值)*Z乘数值。默认值为1。
- -a <[algorithm[:parameter1=value1][:parameter2=value2]...]>
设置插值算法或数据度量名称及其(可选)参数。见 Interpolation algorithms 和 Data metrics 进一步讨论可用选项的章节。
- -spat <xmin> <ymin> <xmax> <ymax>
添加空间过滤器以仅选择由(xmin,ymin)-(xmax,ymax)描述的边界框中包含的要素。
- -clipsrc [xmin ymin xmax ymax]|WKT|datasource|spat_extent
添加空间过滤器以仅选择指定边界框(以源SRS表示)、WKT几何图形(多边形或多多边形)、数据源中包含的要素或
-spat
如果使用spat_extent
关键字。在指定数据源时,您通常希望将其与-clipsrclayer
,-clipsrcwhere
或-clipsrcsql
选项。
- -clipsrcsql <sql_statement>
改用SQL查询选择所需的几何图形。
- -clipsrclayer <layername>
从源剪辑数据源中选择命名层。
- -clipsrcwhere <expression>
基于属性查询限制所需的几何图形。
- -where <expression>
一个可选的SQL,其中应用样式查询表达式以从输入层选择要处理的要素。
- -sql <select_statement>
对数据源求值以生成要处理的功能的虚拟层的SQL语句。
- -co <NAME=VALUE>
许多格式都有一个或多个可选的创建选项,可用于控制所创建文件的详细信息。例如,GeoTIFF驱动程序支持创建选项来控制压缩,以及是否应该平铺文件。
可用的创建选项因格式驱动程序而异,有些简单格式根本没有创建选项。格式支持的选项列表可以与 --formats 命令行选项,但该格式的文档是有关驱动程序创建选项的最终信息源。见 栅格驱动器 每种格式的法律创建选项的特定格式文档。
- -q
抑制进度监视器和其他非错误输出。
- <src_datasource>
任何OGR支持的可读数据源。
- <dst_filename>
GDAL支持的输出文件。
插值算法
有许多插值算法可供选择。
有关它们的更多详细信息,请参阅 GDAL Grid 教程
投资分布
与一种力量相反的距离。这是默认算法。它有以下参数:
power
:加权功率(默认值2.0)。smoothing
:平滑参数(默认为0.0)。radius1
:搜索椭圆的第一个半径(如果旋转角度为0,则为X轴)。将此参数设置为零以使用整点数组。默认值为0.0。radius2
:搜索椭圆的第二个半径(如果旋转角度为0,则为Y轴)。将此参数设置为零以使用整点数组。默认值为0.0。angle
:以度为单位的搜索椭圆旋转角度(逆时针,默认为0.0)。max_points
:要使用的最大数据点数。不要搜索超过此数字的点。仅当设置了“搜索椭圆”(两个半径均为非零)时才使用此选项。零表示应使用所有找到的点。默认值为0。min_points
:要使用的数据点的最小数目。如果找到的点数较少,则网格节点被视为空,并将填充NODATA标记。仅当设置了“搜索椭圆”(两个半径均为非零)时才使用此选项。默认值为0。nodata
:NODATA标记以填充空点(默认值为0.0)。
invdistnn公司
2.1 新版功能.
与最近邻搜索的幂反比距离,当使用最大值点时是理想的。它有以下参数:
power
:加权功率(默认值2.0)。smoothing
:平滑参数(默认为0.0)。radius
:搜索圆的半径,该半径应为非零。默认值为1.0。max_points
:要使用的最大数据点数。不要搜索超过此数字的点。加权时,发现的点将从最近点到最远点进行排序。默认值为12。min_points
:要使用的数据点的最小数目。如果找到的点数较少,则网格节点被视为空,并将填充NODATA标记。默认值为0。nodata
:NODATA标记以填充空点(默认值为0.0)。
平均的
移动平均算法。它有以下参数:
radius1
:搜索椭圆的第一个半径(如果旋转角度为0,则为X轴)。将此参数设置为零以使用整点数组。默认值为0.0。radius2
:搜索椭圆的第二个半径(如果旋转角度为0,则为Y轴)。将此参数设置为零以使用整点数组。默认值为0.0。angle
:以度为单位的搜索椭圆旋转角度(逆时针,默认为0.0)。min_points
:要使用的数据点的最小数目。如果找到的点数较少,则网格节点被视为空,并将填充NODATA标记。默认值为0。nodata
:NODATA标记以填充空点(默认值为0.0)。
注意,在移动平均法中,搜索椭圆的设置是必不可少的。它是计算网格节点值时平均化的窗口。
最近的
最近邻算法。它有以下参数:
radius1
:搜索椭圆的第一个半径(如果旋转角度为0,则为X轴)。将此参数设置为零以使用整点数组。默认值为0.0。radius2
:搜索椭圆的第二个半径(如果旋转角度为0,则为Y轴)。将此参数设置为零以使用整点数组。默认值为0.0。angle
:以度为单位的搜索椭圆旋转角度(逆时针,默认为0.0)。nodata
:NODATA标记以填充空点(默认值为0.0)。
线性的
2.1 新版功能.
线性插值算法。
线性方法通过计算点云的Delaunay三角剖分,找出三角剖分中的三角形,并从三角形内的重心坐标进行线性插值来执行线性插值。如果点不在任何三角形中,则算法将使用最近点的值或nodata值,具体取决于半径。
它有以下参数:
radius
:如果要插值的点不适合Delaunay三角测量的三角形,则使用该最大距离搜索最近的邻居,否则使用nodata。如果设置为-1,则搜索距离是无限的。如果设置为0,将始终使用nodata值。默认值为-1。nodata
:NODATA标记以填充空点(默认值为0.0)。
数据度量法
除了插值功能外,还可以使用ref gdal_grid使用指定的窗口和输出网格几何图形计算一些数据度量。这些指标包括:
minimum
:在网格节点搜索椭圆中找到最小值。maximum
:在网格节点搜索椭圆中找到最大值。range
:网格节点搜索椭圆中的最小值和最大值之间的差异。count
:在网格节点搜索椭圆中找到多个数据点。average_distance
:网格节点(搜索椭圆的中心)与网格节点搜索椭圆中找到的所有数据点之间的平均距离。average_distance_pts
:在网格节点搜索椭圆中找到的数据点之间的平均距离。计算椭圆内每对点之间的距离,并将所有距离的平均值设置为网格节点值。
所有指标都有相同的选项集:
radius1
:搜索椭圆的第一个半径(如果旋转角度为0,则为X轴)。将此参数设置为零以使用整点数组。默认值为0.0。radius2
:搜索椭圆的第二个半径(如果旋转角度为0,则为Y轴)。将此参数设置为零以使用整点数组。默认值为0.0。angle
:以度为单位的搜索椭圆旋转角度(逆时针,默认为0.0)。min_points
:要使用的数据点的最小数目。如果找到的点数较少,则网格节点被视为空,并将填充NODATA标记。仅当设置了“搜索椭圆”(两个半径均为非零)时才使用此选项。默认值为0。nodata
:NODATA标记以填充空点(默认值为0.0)。
读取逗号分隔值
通常,您有一个文本文件,其中包含要使用的逗号分隔的XYZ值列表(所谓的CSV文件)。您可以在网格中轻松使用这种数据源。您只需要为CSV文件创建一个虚拟数据集头(VRT),并将其用作ref gdal_grid的输入数据源。有关VRT格式的详细信息,请访问 VRT—虚拟格式 说明页。
这里有一个小例子。让我们有一个名为<i>dem.CSV>的CSV文件,其中包含
Easting,Northing,Elevation
86943.4,891957,139.13
87124.3,892075,135.01
86962.4,892321,182.04
87077.6,891995,135.01
...
对于上述数据,我们将创建具有以下内容的<i>dem.vrt>标题:
<OGRVRTDataSource>
<OGRVRTLayer name="dem">
<SrcDataSource>dem.csv</SrcDataSource>
<GeometryType>wkbPoint</GeometryType>
<GeometryField encoding="PointFromColumns" x="Easting" y="Northing" z="Elevation"/>
</OGRVRTLayer>
</OGRVRTDataSource>
此说明指定了具有三个坐标X、Y和Z的所谓2.5D几何体。插值将使用Z值。现在,您可以对所有OGR程序使用<i>dem.vrt>(从ref ogrinfo开始测试是否一切正常)。数据源将包含名为<i>“dem”>的单层,其中填充了由CSV文件中的值构造的点特征。使用此技术,您可以处理具有三列以上、切换列等的CSV文件。
如果CSV文件不包含列标题,则可以按以下方式处理:
<GeometryField encoding="PointFromColumns" x="field_1" y="field_2" z="field_3"/>
这个 Comma Separated Value (.csv) 描述页包含GDAL/OGR支持的CSV格式的详细信息。
计算机辅助编程接口
此实用程序也可以通过 GDALGrid()
.
实例
下面将从中描述的VRT数据源创建栅格TIFF文件 Reading comma separated values 使用与幂法相反距离的截面。要插值的值将从几何记录的Z值中读取。
gdal_grid -a invdist:power=2.0:smoothing=1.0 -txe 85000 89000 -tye 894000 890000 -outsize 400 400 -of GTiff -ot Float64 -l dem dem.vrt dem.tiff
下一个命令执行与上一个命令相同的操作,但从用<b>-zfield</b>选项指定的属性字段(而不是几何记录)读取要插值的值。因此,在这种情况下,X和Y坐标是从几何学中获取的,Z坐标是从<i>“Elevation”>字段中获取的。GDAL_NUM_线程也被设置为并行计算。
gdal_grid -zfield "Elevation" -a invdist:power=2.0:smoothing=1.0 -txe 85000 89000 -tye 894000 890000 -outsize 400 400 -of GTiff -ot Float64 -l dem dem.vrt dem.tiff --config GDAL_NUM_THREADS ALL_CPUS