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