【问题标题】:Raster from XYZ csv format来自 XYZ csv 格式的栅格
【发布时间】:2019-06-15 20:49:13
【问题描述】:

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

问题是我是使用 python 进行地理处理的新手,例如,对于第 2 步,我曾经在 R 中使用“raster”包轻松完成此操作,而第 3 步也使用“raster”中的“extract”函数包裹。但是,在 python 中,我可以在 geopandas 中执行第 2 步,但第 2 步和第 3 步没有简单的答案。

【问题讨论】:

标签: python gis gdal geopandas rasterio


【解决方案1】:

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

【讨论】:

  • 这里的问题是 1. 输出以某种方式垂直翻转 ...2。使用 python API 它产生 512kb Tiff 和 3. 如何修改坐标系统更快和 4. 如何加速 python gdal API,因为它与 R 相比非常慢
  • 我不推荐使用 Python。
  • 那我们用什么语言呢?
  • 可以像以前一样使用 GDAL Python 绑定;我只是不喜欢他们。最后一段代码只是命令行;其他的是文本文件的sn-ps。
  • GMT怎么样如何用它来网格化csv文件
猜你喜欢
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 2013-11-13
  • 2015-02-13
  • 2023-02-24
相关资源
最近更新 更多