我使用的是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数组呢?
非常感谢您的帮助。
答案 0 :(得分:2)
你做不到。
gdal_grid
的输入必须是GDAL可读格式,其中VRT是一种格式。或者,您可以将numpy数组保存为Tiff / GeoTiff文件。
使用GDAL&gt; = 2.1的另一种选择是使用python binding而不是命令行实用程序,以及&#39; MEM&#39;从numpy数组填充的数据集(至少避免将其保存到磁盘)。