как считать НАСА .hgt двоичные файлы

Я решил так:

<button type="button" class="btn btn-default no" data-dismiss="modal" onclick="$('.has-error').children('p').remove('p'); $('.has-error').removeClass('has-error')">Cancel</button>

23
задан 10 December 2008 в 20:05
поделиться

3 ответа

Так как записи являются фиксированной длиной (16-разрядные целые числа со знаком), и Вы знаете размер сетки (1201 x 1201 или 3601x3601), структура Python , модуль кажется идеально удовлетворенным (непротестированный код):

from struct import unpack,calcsize

# 'row_length' being 1201 or 3601 and 'row' being the raw data for one row
def read_row( row, row_length ):
    format = 'h'  # h stands for signed short

    for i in range(0, row_length):
        offset = i * calcsize(format)
        (height,) = unpack(format, row[offset : offset+calcsize(format))
        # do something with the height

Описание его в большем количестве общих обозначений, в основном Вы хотите считать файл в 2 байтах за один раз, проанализировать чтение байтов как 16-разрядное целое число со знаком и обработать его. Так как Вы уже знаете размер сетки, можно считать его последовательно строкой или любым другим способом, который удобен для приложения. Это также означает, что можно случайным образом искать на определенные координаты в файле данных.

6
ответ дан codelogic 29 November 2019 в 03:04
поделиться

Файлы данных NASA SRTM имеют формат Big-Endian, поэтому в зависимости от того, на какой платформе вы читаете данные, вам может потребоваться преобразование с Big-Endian в Little-Endian.

Существует множество источников о том, как это сделать, у меня нет опыта работы с Python, поэтому я не могу вам здесь помочь.

Но если вы забудете это, ваши ценности будут испорчены.

0
ответ дан 29 November 2019 в 03:04
поделиться

Если у вас есть фотошоп, вы можете поиграть с необработанным импортом, чтобы заставить его читать эти файлы и сохранять их для чего-нибудь более полезного. В прошлом у меня был некоторый успех в подобных делах.

0
ответ дан 29 November 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: