XYZ csv格式的栅格

时间:2019-06-15 20:49:13

标签: python gis gdal geopandas rasterio

我有一个3列x y和z值的大型csv文件。我要执行以下操作: 1.如何将该csv转换为矢量形状文件(点)。 2.如何将步骤2中获得的点转换为地理栅格。 3.让我们说说一组“ shp”格式的单独的点文件,该文件如何将步骤2中获得的栅格中的值提取到新的csv文件中,以便对它进行统计。

问题是我不熟悉使用python进行地理处理,例如对于步骤2,我曾经很容易在R中使用“ raster”包进行此操作,而对于步骤3,我也同样使用了“ raster”中的“提取”功能包。但是,在python中,我可以在geopandas中执行第2步,但第2步和第3步没有简单的答案。

1 个答案:

答案 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