2017-01-18 6 views
3

Я использую Python 2.7. Установлена ​​библиотека gdal 2.1.2.Использование gdal_grid в Python с 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 ]] 

, где первые и вторые столбцы представляют свои координаты (в частности, широта и долгота), а третий один собирает значения переменных, связанные с местом. Я хотел бы использовать gdal_grid непосредственно в Python для получения изображения, где на каждом пикселе у меня есть интерполяция значений моего массива с использованием метода, такого как инверсное взвешенное расстояние.

Я нашел, как это сделать с gdal_grid, если мои данные собираются в .csv файл (который я буду называть «test.csv»), и если создать файл «» test.vrt так:

<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-массив?

Благодарим вас за помощь.

ответ

1

Вы не можете.

Ввод gdal_grid должен быть GDAL-читаемым форматом, из которых VRT является одним. Кроме того, вы можете сохранить массив numpy в виде файла Tiff/GeoTiff.

Другой альтернативой с GDAL> = 2.1 является использование python binding, а не утилиты командной строки, а также набор данных «MEM», заполненный из массива numpy (который, по крайней мере, не позволяет сохранить его на диск).