【问题标题】:Using gdal_grid in Python with np array在 Python 中使用 gdal_grid 和 np 数组
【发布时间】:2017-12-13 01:27:54
【问题描述】:

我使用 Python 2.7。 gdal 2.1.2 库已安装。

我有一个这样的 np 数组:

[[  2.34845824  48.84626174  15.20369   ]
[  2.34966283  48.84910128  13.88528   ]
[  2.35120647  48.85098931  15.76322   ]
...,
[  2.3556567   48.8415611   15.42184   ]
[  2.34394085  48.84248672  15.51128   ]
[  2.34926763  48.85128456  15.0685    ]]

第一列和第二列代表我的坐标(特别是纬度和经度),第三列收集与位置相关的变量值。我想直接在 Python 中使用 gdal_grid 来获取图像,其中在每个像素处我使用诸如反距离加权之类的方法对数组的值进行插值。

如果我的数据被收集在一个 csv 文件(我将称之为“test.csv”)中并且如果我创建一个像这样的“test.vrt”文件,我发现了如何使用 gdal_grid 来做到这一点:

<OGRVRTDataSource>
    <OGRVRTLayer name="test">
        <SrcDataSource>test.csv</SrcDataSource>
        <GeometryType>wkbPoint</GeometryType>
        <LayerSRS>WGS84</LayerSRS>
        <GeometryField separator=" " encoding="PointFromColumns" x="field_1" y="field_2" z="field_3"/>
    </OGRVRTLayer>
</OGRVRTDataSource>

我尝试在 python 中使用以下命令运行它:

gdal.Grid('test_python.tiff', 'test.vrt', layers='test', algorithm='invdistnn:max_points=10:min_points=1:radius=0.001', format='GTiff', width=333, height=240)

它有效。问题是我想避免将 np 数组转换为 .csv,因为我需要多次复制此操作。 我怎样才能直接使用我的 np 数组呢?

非常感谢您的帮助。

【问题讨论】:

    标签: python gdal


    【解决方案1】:

    你不能。

    gdal_grid 的输入必须是 GDAL 可读格式,其中 VRT 是其中之一。或者,您可以将 numpy 数组保存为 Tiff/GeoTiff 文件。

    GDAL >= 2.1 的另一种选择是使用python binding 而不是命令行实用程序,以及从 numpy 数组填充的“MEM”数据集(至少避免将其保存到磁盘)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多