首页/文章/ 详情

【教程】11-ParaView将航天雷达地形数据进行可视化处理

1月前浏览975


SRTM数据是通过在航天飞机上搭载的合成孔径雷达(SAR)技术获取的地表雷达图像。本文将介绍如何使用可视化软件ParaView来可视化SRTM数据。

1.获取SRTM数据


 

SRTM数据可以从Shuttle Radar Topography Mission的官方网站下载。

下载并解压缩该文件后,将得到一个名为N32E020.hgt的HGT格式文件。

2.从SRTM(HGT格式)转换为CSV文件


 

SRTM的HGT格式是一个由1201x1201个坐标点组成的二进制文件,采用大端序(Big endian)存储。

可以使用以下简单的Python程序将HGT格式转换为CSV文件:
import sys
nrows = ncols = 1201
xdim = ydim = 0.000833
             
args = sys.argv
filename = args[1]
name, ext = os.path.splitext(filename)
outname = name + '.csv'
             
longitude = float(name[1:3])
latitude = float(name[4:7])
             
print('longitude: ' + name[0] + name[1:3])
print('latitude: ' + name[3] + name[4:7])
             
ulxmap = longitude + (xdim/2.0)
ulymap = (latitude+1.0) - (ydim/2.0)
             
a = array.array('h')
f = open(filename, 'rb')
a.fromfile(f, nrows*ncols)
f.close()        
a.byteswap()
alist = a.tolist()
             
out = open(outname, 'w')
             
count = 0
for row in range(nrows):
    for col in range(ncols):
        x = ulxmap + xdim * col
        y = ulymap - ydim * row
        z = max(0.0, alist[count])
        out.write(str(x) + ',' + str(y) + ',' + str(z/10000.0) + '\n')
        count += 1
             
    if count%100000 == 0:
        print(str(int(100.0 * count/(nrows*ncols))) + '%')
print('100%')
print('node number: ' + str(count))
out.close()

 

执行以下命令:

python hgtToCSV.py N32E020.hgt

 

将N32E020.hgt转换为N32E020.csv。注意:转换后的坐标可能不准确,实际使用时请确保转换为正确的坐标。  

3.从CSV文件转换为VTS文件 


 

接下来,将CSV文件转换为ParaView可以读取的VTS格式(VTK的结构化网格数据格式)。这里也使用一个简单的Python脚本来完成转换。

import os.path
import sys
from paraview.simple import *
             
paraview.simple._DisableFirstRenderCameraReset()
             
args = sys.argv
filename = args[1]
workingDir = './'
fileName = args[1]
             
csvReader = CSVReader(FileName=[workingDir + fileName + '.csv'])        
csvReader.DetectNumericColumns = 1
csvReader.UseStringDelimiter = 1
csvReader.HaveHeaders = 0
csvReader.FieldDelimiterCharacters = ','
csvReader.MergeConsecutiveDelimiters = 0
             
tableToStructuredGrid = TableToStructuredGrid(Input=csvReader)
tableToStructuredGrid.WholeExtent = [0, 1200, 0, 1200, 0, 0]
tableToStructuredGrid.XColumn = 'Field 0'
tableToStructuredGrid.YColumn = 'Field 1'
tableToStructuredGrid.ZColumn = 'Field 2'
             
calculator = Calculator(Input=tableToStructuredGrid)
calculator.AttributeMode = 'Point Data'
calculator.CoordinateResults = 0
calculator.ResultNormals = 0
calculator.ResultTCoords = 0
calculator.ResultArrayName = 'z'
calculator.Function = 'coordsZ'
calculator.ReplaceInvalidResults = 1
calculator.ReplacementValue = 0.0
             
SaveData(workingDir + fileName + '.vts', proxy=calculator,
        Writealltimestepsasfileseries=0,
        DataMode='Appended',
        EncodeAppendedData=1,
        CompressorType='ZLib')

 

使用ParaView安装文件夹中的pvpython执行脚本:

pvpython csvToVts.py N32E020

 

转换完成后,将生成N32E020.vts文件。


4.使用ParaView进行可视化


 

将上述步骤生成的N32E020.vts文件加载到ParaView中,即可进行可视化。 

            

来源:CFD饭圈
ACTSTEPS航天pythonUMParaView
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-09-08
最近编辑:1月前
CFD饭圈
硕士 分享CFD文章,感谢关注
获赞 27粉丝 27文章 378课程 0
点赞
收藏
作者推荐

【教程】13-ParaView中显示网格节点坐标的方法

1.ParaView版本5及以后 要在ParaView版本5及以后的版本中显示网格节点的坐标,您可以按照以下步骤操作:1.点击“Hover Points On”图标。2.当您将鼠标悬停在网格节点上时,将显示该节点的信息以及坐标(Coords)。 1.ParaView版本4及以前 在ParaView版本4及以前的版本中,显示节点坐标需要创建一个包含节点坐标的变量。以下是详细步骤: 1)创建坐标变量 1.点击“Calculator”(计算器)图标。2.为了创建节点数据,将“Attribute Mode”(属性模式)设置为“Point Data”(点数据)。3.输入一个变量名,例如“coordinates”(坐标),以存储节点的坐标值。4.因为节点坐标存储在一个名为“coords”的向量值中,所以在计算文本框中输入“coords”。5.点击“Apply”(应用)。这样,您创建的坐标变量就会出现在变量栏中。 2)选择要显示坐标的节点 ParaView提供了几种选择模式,用于选择屏幕上可见的网格或节点:·“Select Cells On”(选择屏幕上的单元)·“Select Points On”(选择屏幕上的节点)·“Select Cells Through”(选择包括隐藏的单元)·“Select Points Through”(选择包括隐藏的节点)要显示节点的坐标,请选择“Select Points On”(选择屏幕上的节点),然后按照以下步骤操作:1.确认在Pipeline Browser(管道浏览器)中选择了“Calculator”(计算器)。2.将选择模式设置为“Select Points On”(选择屏幕上的节点)。3.使用鼠标和橡胶带选择工具在屏幕上选择要显示坐标的节点(选中后将以粉红色显示)。 3)显示变量值 要显示所选节点的坐标,可以使用“Find Data”(查找数据)功能:1.点击工具栏上的相应图标,打开“Find Data”(查找数据)窗口。 2.在“Find Data”窗口中的“Point Labels”(点标签)部分,选择您创建的坐标变量“coordinates”(坐标)。 完成以上步骤后,所选节点的坐标就会显示出来。 来源:CFD饭圈

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈