美文网首页
gdal_grid 使用gdal实现空间插值

gdal_grid 使用gdal实现空间插值

作者: 开源GIS地图与信创 | 来源:发表于2021-10-29 11:36 被阅读0次

gdal_grid 使用gdal实现空间插值

利用gdal_grid.exe可以实现空间插值

下载gdal_grid.exe文件,在gdal的windows包里面有,
如果gdal_grid.exe在cmd里面直接执行没反应很可能是缺少依赖包,双击gdal_grid.exe就知道缺少哪些包了,再按顺序找到相应的包放到同级目录即可。
我是从MapServer中拷出来的包,因此缺少:expat.dll、freexl.dll、geos.dll、geos_c.dll、iconv.dll、libcrypto-1_1.dll、libcurl.dll、libmysql.dll、libpq.dll、libssl-1_1.dll、libxml2.dll、openjp2.dll、proj.dll、spatialite.dll、sqlite3.dll、xerces-c_3_2.dll、zlib1.dll这几个dll文件,不同情况可能有所不同,注意版本要对应上。

准备点数据datatest.txt,内容如下:

id,x,y,z
0,-4033.176588,-8013.121063,229.450000
1,-4100.832155,-8015.092321,229.260000
2,-3340.176588,-8013.121064,234.220000
3,-3638.176588,-8022.121064,234.010000
4,-3638.176588,-7987.121064,233.500000
5,-4451.933582,-8013.124110,228.320000
6,-4458.433112,-7977.121063,227.880000
7,-4707.932199,-7989.121063,226.250000

根据数据情况生成dem.vrt文件,dem.vrt内容如下:

<OGRVRTDataSource>
<OGRVRTLayer name="datatest">
<SrcDataSource>datatest.csv</SrcDataSource>
<GeometryType>wkbPoint</GeometryType>
<GeometryField encoding="PointFromColumns" x="x" y="y" z="z"/>
</OGRVRTLayer>
</OGRVRTDataSource>

准备执行命令:

./gdal/gdal_grid.exe -a invdist:power=2.0:smoothing=1.0 -of GTiff -ot Float64 -l datatest dem.vrt dem.tiff

按官方的命令行执行后报错:

ERROR 1: Failed to open datasource `datatest.txt'.
No point geometry found on layer datatest, skipping.

此错误的主要原因是官方示例采用的csv作为点数据源,我采用的txt作为数据源,txt内肯定是没有layer这个概念的,但是csv中有sheet的概念,对应就是layer。

将datatest.txt文件后缀改为csv,名为datatest.csv,然后修改dem.vrt文件中SrcDataSource的值为新文件名就可以了。

再执行提示:

0...10...20...30...40...50...60...70...80...90...100 - done.

查看文件夹内,生成了dem.tiff文件

效果如下:


7-1.png

相关文章