我这里有类似于.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]除减号外,哪个列表是mesh.n_points的平方根?
试图用mesh.points绘制或提取点时,我会得到一条信息,即不允许使用负面维度。试着折叠式:
mesh.dimensions = [int(numpy.sqrt(mesh.n_points)),int(numpy.sqrt(mesh.n_points)),1]结果会出现错误消息:
OverflowError: SetDimensions参数1: int的值超出了范围
有人能告诉我我做错了什么吗,我不知道?或者可能知道如何读取这些文件来绘制一个表面图?
谢谢你:)
发布于 2021-02-18 17:53:00
@larsks在上面的评论中是正确的。这些".dem“文件不是PyVista和它包装的VTK阅读器所期望的格式。您应该使用np.fromfile读取数据:arr = np.fromfile('N00E015.dem', dtype=np.int16)。离链接上列出的文档更远
由于该模型的总大小为44 GB,因此该模型按881个二进制文件进行划分和分发,每个函数的大小为5degx5deg。每个5 deg x 5 deg瓷砖包含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支持论坛上比在堆栈溢出:https://github.com/pyvista/pyvista-support上更活跃。
https://stackoverflow.com/questions/66259837
复制相似问题