Как читать файлы dem в Python pyvista

у меня есть файлы .dem, подобные этим здесь:http://ddfe.curtin.edu.au/models/ERTM2160/data/dem/

В python pyvista у меня есть, например:

      import pyvista as pv
file = 'pick_one_from_the_link_above.dem'
mesh = pv.read(file)

В выводе говорится:

      mesh.dimensions
[-2147483648,-2147483648,1]

который является, за исключением знака минус, квадратным корнем из сетки. n_points

Пытаясь построить или извлечь точки с помощью mesh.points, я получаю сообщение о том, что отрицательные размеры недопустимы. Пробуем следующее:

      mesh.dimensions = [int(numpy.sqrt(mesh.n_points)),int(numpy.sqrt(mesh.n_points)),1]

приводит к сообщению об ошибке:

OverflowError: аргумент SetDimensions 1: значение вне допустимого диапазона для int

Может кто-нибудь сказать мне, что я делаю не так, я понятия не имею? Или, может быть, есть идея, как читать эти файлы для построения поверхностного графика?

Большое спасибо :)

1 ответ

@larsks верен в комментарии выше. Эти файлы «.dem» имеют не тот формат, который ожидают PyVista и программа для чтения VTK, которую они упаковывают. Вы должны использовать np.fromfile для чтения данных: arr = np.fromfile('N00E015.dem', dtype=np.int16). Далее из документов, перечисленных по вашей ссылке :

Из-за своего общего размера 44 ГБ модель разбита на разделы и распределена в виде 881 двоичного файла размером 5 x 5 градусов для каждого функционала. Каждая ячейка размером 5 x 5 градусов содержит 2500 x 2500 точек сетки в представлении центра ячейки (точки сетки не расположены на целочисленных меридианах и параллелях)

Вы просто создадите pv.UniformGridэтого размера и добавьте данные. Например:

      import numpy as np
import pyvista as pv

arr = np.fromfile('N00E015.dem', dtype=np.int16)

grid = pv.UniformGrid()
grid.dimensions = (2500, 2500, 1)
grid.origin = (0, 0, 0) # you need to figure this out
grid['dem'] = arr

grid.plot()

Чтобы получить правильную пространственную привязку для сетки, вам необходимо установить origin точка каждого подмножества / сетки.

Кроме того, сообщество PyVista более активно на форуме поддержки PyVista, чем на Stack Overflow: https://github.com/pyvista/pyvista-support

Другие вопросы по тегам