来自 XYZ csv 格式的光栅

Raster from XYZ csv format

我有一个包含 3 列 x y 和 z 值的大型 csv 文件。我想做以下事情: 1. 如何将该 csv 转换为矢量形状文件(点)。 2、如何将步骤2中得到的点转化为geo raster。 3. 假设一组 "shp" 格式的单独点文件如何将步骤 2 中获得的栅格值提取到新的 csv 文件中,以便我可以对其进行统计。

问题是我是使用 python 进行地理处理的新手,例如,对于第 2 步,我曾经在 R 中使用 "raster" 包轻松地做到这一点,对于第 3 步也使用"extract" "raster" 包中的函数。但是,在 python 中,我可以在 geopandas 中执行第 2 步,但第 2 步和第 3 步没有可用的简单答案。

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