如何在python pyvista中读取dem文件

如何在python pyvista中读取dem文件,python,pyvista,Python,Pyvista,我有如下.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_点的平方根 尝试使用mesh.points绘制或提取点时,我收到一条消息,不允许使用负尺寸。尝试以下方法: mesh.dimensions

我有如下.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_点的平方根

尝试使用mesh.points绘制或提取点时,我收到一条消息,不允许使用负尺寸。尝试以下方法:

mesh.dimensions = [int(numpy.sqrt(mesh.n_points)),int(numpy.sqrt(mesh.n_points)),1]
结果显示错误消息:

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

谁能告诉我我做错了什么,我不知道?或者你知道如何读取这些文件来绘制曲面图吗


非常感谢:)

@larsks在上面的评论中是正确的。这些“.dem”文件的格式不是PyVista及其包装的VTK读取器所期望的格式。您应该使用
np.fromfile
读取数据:
arr=np.fromfile('N00E015.dem',dtype=np.int16)
。除此之外:

由于该模型的总大小为44 GB,因此它被分区并分布在 每个函数的881个5度x 5度大小的二进制文件的术语。每5度 x 5度平铺在单元表示的中心包含2500 x 2500个网格点 (栅格点不位于整数子午线和平行线上)

您只需创建一个该大小的
pv.UniformGrid
,并添加数据。例如:

将numpy导入为np
将pyvista导入为pv
arr=np.fromfile('N00E015.dem',dtype=np.int16)
grid=pv.UniformGrid()
网格尺寸=(2500、2500、1)
grid.origin=(0,0,0)#您需要解决这个问题
栅格['dem']=arr
grid.plot()

为了获得栅格的正确空间参考,需要设置每个子集/栅格的
原点


此外,PyVista社区在PyVista支持论坛上比在堆栈溢出上更活跃:

@larsks在上面的评论中是正确的。这些“.dem”文件的格式不是PyVista及其包装的VTK读取器所期望的格式。您应该使用
np.fromfile
读取数据:
arr=np.fromfile('N00E015.dem',dtype=np.int16)
。除此之外:

由于该模型的总大小为44 GB,因此它被分区并分布在 每个函数的881个5度x 5度大小的二进制文件的术语。每5度 x 5度平铺在单元表示的中心包含2500 x 2500个网格点 (栅格点不位于整数子午线和平行线上)

您只需创建一个该大小的
pv.UniformGrid
,并添加数据。例如:

将numpy导入为np
将pyvista导入为pv
arr=np.fromfile('N00E015.dem',dtype=np.int16)
grid=pv.UniformGrid()
网格尺寸=(2500、2500、1)
grid.origin=(0,0,0)#您需要解决这个问题
栅格['dem']=arr
grid.plot()

为了获得栅格的正确空间参考,需要设置每个子集/栅格的
原点


此外,PyVista社区在PyVista支持论坛上比在堆栈溢出上更为活跃:

根据,您正在阅读的文件只是一个有符号的16位整数的集合,采用big-endian格式。据我所知,
pyvista
中使用
vtk.vtkDEMReader
dem
读取器是预期的。根据,您正在读取的文件只是一个有符号的16位整数的集合,采用big-endian格式。据我所知,
pyvista
中使用
vtk.vtkDEMReader
dem
读取器正在使用。未识别出这不是常规的dem文件。感谢alot提供的所有信息和简短的演示代码,它帮助了alot:)没有意识到这不是常规的dem文件。非常感谢您提供的所有信息和简短的演示代码,它帮助了很多:)