首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何读取python pyvista中的dem文件

如何读取python pyvista中的dem文件
EN

Stack Overflow用户
提问于 2021-02-18 12:19:47
回答 1查看 730关注 0票数 0

我这里有类似于.dem的文件:http://ddfe.curtin.edu.au/models/ERTM2160/data/dem/

在python pyvista我有:

代码语言:javascript
复制
import pyvista as pv
file = 'pick_one_from_the_link_above.dem'
mesh = pv.read(file)

产出显示:

代码语言:javascript
复制
mesh.dimensions
[-2147483648,-2147483648,1]

除减号外,哪个列表是mesh.n_points的平方根?

试图用mesh.points绘制或提取点时,我会得到一条信息,即不允许使用负面维度。试着折叠式:

代码语言:javascript
复制
mesh.dimensions = [int(numpy.sqrt(mesh.n_points)),int(numpy.sqrt(mesh.n_points)),1]

结果会出现错误消息:

OverflowError: SetDimensions参数1: int的值超出了范围

有人能告诉我我做错了什么吗,我不知道?或者可能知道如何读取这些文件来绘制一个表面图?

谢谢你:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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并添加数据。例如:

代码语言:javascript
复制
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上更活跃。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66259837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档