Чтение национального набора данных высот (ArcGrid / GridFloat / IMG) только с инструментами Python?

10

Я нашел данные высотных отметок (1/3 - 1/9 угловых секунд) из набора данных национальных высот, предоставленного USGS. Он поставляется в форматах IMG, Arcgrid и GridFloat. Я знаю, что ArcGrid соответствует платному программному пакету, но я стараюсь использовать свободно доступные инструменты.

У меня есть данные GPS, которые я пытаюсь соотнести с уровнем земли.

Существуют ли библиотеки Python, которые позволят мне преобразовать данные GPS в высоту, используя файл данных в форматах IMG, ArcGrid или GridFloat?

abnowack
источник

Ответы:

7

Работать с файлом IMG непосредственно в python просто с привязками GDAL. Например, вы можете прочитать данные непосредственно в массив NumPy:

from osgeo import gdal
geo = gdal.Open('imgn36w100_11.img')
arr = geo.ReadAsArray()
print repr(arr)
array([[ 744.31896973,  743.68762207,  743.1116333 , ...,  550.42498779,
         553.77813721,  556.18640137],
       [ 744.22955322,  743.66082764,  743.05273438, ...,  552.05706787,
         554.81365967,  557.55877686],
       [ 744.0133667 ,  743.49041748,  743.00061035, ...,  553.0123291 ,
         555.78076172,  558.01312256],
       ...,
       [ 568.70880127,  567.33666992,  566.56170654, ...,  447.68035889,
         447.68804932,  447.65426636],
       [ 568.01116943,  566.95739746,  564.23382568, ...,  447.6696167 ,
         447.71224976,  447.62734985],
       [ 565.62896729,  562.65325928,  560.78759766, ...,  447.67129517,
         447.67529297,  447.65179443]], dtype=float32)

Для более полного примера построения данных формата IMG см. Этот скрипт, который сгенерировал изображение ниже. Чтобы преобразовать данные GPS в высоту, вам нужно сэмплировать полученный массив NumPy.

введите описание изображения здесь

Kelsey
источник
4

В приложении National Map Viewer использовалась другая программная платформа, которая позволяла преобразовывать данные в GeoTIFF после выбора тайлов. Некоторые региональные поставщики данных также предпочитают GeoTIFF. Но это может вам не помочь.

Тем не менее, хорошая новость заключается в том, что gdalспособен работать со всеми этими тремя форматами. ArcGrid - это двоичный формат ESRI, формат данных DEM GridFloat USGS и IMG, принадлежащий Erdas, который создает программное обеспечение Imagine. Я бы, вероятно, скачал либо ArcGrid, либо формат IMG и конвертировал бы в GeoTIFF: Сами USGS имеют пакет сценариев конвертации, основанный на gdal загрузке (прямая ссылка на ZIP-файл ). Вы должны найти ресурсы, которые вам нужны там.

chryss
источник
Спасибо за ссылку и упоминание gdal, это выглядит очень полезным
abnowack
0

Ответ Келси сначала не сработал для меня, потому что файл .img использовал -inf в качестве значения для пустого пространства.

Я решил это, добавив строку:

topo[topo<-1000] = 0
vatlark
источник
1
Это не ответ на оригинальный вопрос, вероятно, это должно быть изменение принятого ответа
nmtoken