我有一个3列x y和z值的大型csv文件。我要执行以下操作: 1.如何将该csv转换为矢量形状文件(点)。 2.如何将步骤2中获得的点转换为地理栅格。 3.让我们说说一组“ shp”格式的单独的点文件,该文件如何将步骤2中获得的栅格中的值提取到新的csv文件中,以便对它进行统计。
问题是我不熟悉使用python进行地理处理,例如对于步骤2,我曾经很容易在R中使用“ raster”包进行此操作,而对于步骤3,我也同样使用了“ raster”中的“提取”功能包。但是,在python中,我可以在geopandas中执行第2步,但第2步和第3步没有简单的答案。
答案 0 :(得分:0)
GDAL documentation中存在这种确切情况。
假设您的数据dem.csv
如下:
Easting,Northing,Elevation
86943.4,891957,139.13
87124.3,892075,135.01
86962.4,892321,182.04
87077.6,891995,135.01
...
您创建一个VRT来描述它:
<OGRVRTDataSource>
<OGRVRTLayer name="dem">
<SrcDataSource>dem.csv</SrcDataSource>
<GeometryType>wkbPoint</GeometryType>
<GeometryField encoding="PointFromColumns" x="Easting" y="Northing" z="Elevation"/>
</OGRVRTLayer>
</OGRVRTDataSource>
或者,如果CSV缺少列,则可以这样指定GeometryField
:
<GeometryField encoding="PointFromColumns" x="field_1" y="field_2" z="field_3"/>
将其另存为dem.vrt
之类,以便在以后的命令中使用。
然后使用gdal_grid
进行插值并产生GeoTIFF输出:
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