APP下载

基于Python编程的高程异常模型解析方法

2024-10-10孙跃龙

科技创新与应用 2024年29期

摘 要:该文主要介绍高程异常的概念以及解析高程异常模型的方法。首先解释高程异常的定义和影响因素,然后详细描述解析高程异常模型的过程,包括文件结构和编码方式。接着,该文介绍利用Python编程实现高程异常值获取的方法,包括读取文件信息和插值计算。最后,该文总结使用Python编程解析Trimble GGF高程异常模型的方法,并讨论插值方法的优劣以及拟合曲面的效果。

关键词:Python编程;高程异常;插值方法;文件结构;编码方式

中图分类号:P224 文献标志码:A 文章编号:2095-2945(2024)29-0158-04

Abstract: This paper mainly introduces the concept of elevation anomaly and the method of analyzing elevation anomaly model. Firstly, the definition and influencing factors of height anomaly are explained, and then the process of analyzing the height anomaly model is described in detail, including file structure and coding method. Then, the paper introduces the method of obtaining height outliers by Python programming, including reading file information and interpolation calculation. Finally, this paper summarizes the method of using Python programming to analyze Trimble GGF height anomaly model, and discusses the advantages and disadvantages of interpolation method and the effect of fitting surface.

Keywords: Python programming; height anomaly; interpolation method; file structure; coding mode

高程异常指的是某一地点的实际高程与该地点处预期的标准高程之间的差异。具体来说,它表示地球表面上某一点的高程值与在该位置处预期的高程值之间的偏差。这里的“实际高程”是通过地理测量或遥感技术获取的地球表面高程数据,而“预期的标准高程”通常是根据地球科学、地图制图或其他参考数据确定的理论或基准值。高程异常可以由多种因素引起,包括地形变化、地质构造、地壳运动和大气效应等。

高程异常模型常应用于地球物理领域,在测绘学中,用于描述地球表面或地下的高程变化与地形特征之间的关系,高程异常模型的建立方法可以根据研究问题和目的的不同以及数据来源的不同,常见的方法有:基于数字高程模型(DEM)建立,使用航测、卫星遥感等技术获得数字高程模型数据,对这些数据进行预处理,计算每个点的高程异常;基于地面测量数据的方法,根据实际测量的高程数据,使用数学建模的方式建立高程异常模型,需要选择适合的拟合函数来描述高程异常的变化趋势,选择拟合函数时应考虑数据的特点和拟合的目的,通常会根据经验和实际情况进行选择,选定拟合函数后,通常通过最小二乘法来估计拟合函数的参数,拟合函数和实际测量的高程数据进行拟合运算来获得高程模型,建模后通过与实际地形特征进行校对,调整模型参数提高拟合的精度。

在实际的测量应用中,通过GNSS测量得到的是大地高,也就是参考椭球的椭球高,在实际应用中,需要把大地高转换成正常高,也就是海拔高,大地高和正常高之间的差值就是高程异常值。在地球科学和地理信息系统(GIS)领域,分析和建模高程异常有助于理解地球表面的地形特征、地质变化以及其他与地形有关的环境因素。通过识别和量化高程异常,科学家和地理信息专业人员可以进行更深入的地理空间分析,从而支持城市规划、资源管理、环境监测等应用。本文结合笔者的实际应用论述如何利用Python编程解析高程异常模型从而得到高程异常值的方法。

1 高程异常模型的解析

不同国家或地区采用的高程异常模型不尽相同,不同地区会采用和实际地形拟合最好的模型以获取更精确的高程值。高程异常模型通常是一个二进制的文件,二进制文件是按照某种约定编制而成,不可直接获得文件内容。二进制格式的高程异常文件,是一种用于存储大规模地球表面高程数据的有效方式,特定的二进制高程异常文件,要对其进行解析和分析,通常需要查阅相关的文档或规范,以了解文件的结构和编码方式。高程异常文件里存储了某区域地球表面上不同位置的高程异常值。这些异常值以二进制形式编码的整数或浮点数存在,同时在高程异常文件里也存储了某区域的坐标范围,以经纬度坐标表示。高程异常值格网在X轴和Y轴方向的步长,以及整个格网的行数和列数。通常情况下,以上提到的信息在高程异常文件中会从文件的某个字节开始,然后依次能得到解析高程异常文件需要的信息。

Trimble(天宝)是全球领先的测量设备、定位技术和软件服务的公司,其设备和技术在很多领域得到广泛应用,因此本文以Trimble公司的GGF(Goid Grid File)文件为例论述如何通过Python编程解析高程异常模型。Trimble公司的Grid Factory工具可以生成GGF文件,可用于Trimble公司的TBC 软件和测量手簿操作软件TA等。通过查询与分析这个文件,可以从这个二进制文件中获得需要解析高程异常模型的信息,从文件的第48个字节开始,每读取8个字节,即读入到一个双精度浮点数(double型)的变量,从这里开始可以分别获得区域的最小纬度、最大纬度、最小经度、最大经度、X轴(经度)方向的步长、Y轴(纬度)方向的步长,即每隔多长距离存储高程异常值,接下来可以获得高程异常文件格网的行数和列数。从第146个字节开始,每读取4个字节,即读入到一个浮点数(float型)的变量,可以获得存储的高程异常值。文件中存储的高程异常值数量,即网格节点的个数可以通过行数和列数相乘获得。通过以上分析,利用程序就可以解析出高程异常值文件。

2 Python编程实现方法

对高程异常模型进行解析涉及到诸多数学运算和数据分析,为了高效地分析高程异常模型,选用Python作为编程语言来实现。Python中有许多强大的库,涵盖了各种领域,包括科学计算、机器学习、数据分析等。利用Python struct库可以解析读取二进制文件,用Scipy库和Numpy库进行科学计算和数据分析[1],用Matplotlib库进行绘图和交互式的图表。本文利用以上提及的库来进行编程获取高程异常值。

对高程异常值文件进行解析,获得文章第一节提及的信息和各个格网点的高程异常值后,需要利用插值的方法来获得需要求取的高程异常值。比较常用的插值方法有:基于距离加权插值法、双线性内插法、双二次多项式插值等[2]。距离加权的插值法是把格网当作孤立的区域,假如插值点分别属于不同的格网,就会出现畸变以及错开的现象,这不符合真实的情况,因此该方法不适合作为插值的方法。双线性内插的方法是认定已知点和插值点的高程异常变化是线性的,是建立在高程异常近似遵循线性变化基础上的,这是一种近似和假设的情况,不适合当作插值的方法。双二次多项式插值能够改善以上的2种方法[3],多项式插值是由高程异常拟合出平滑曲面,该曲面是由一个多项式函数定义。

公式为

f(x,y)=a+bx+cy+dx2+exy+fy2,

式中:a、b、c、d、e、f是待定系数,x、y是插值点坐标。

基于此,具体实现方法是在高程异常模型中,求取插值点周边距离近的9个已知点,对插值点进行插值。编写程序进行插值运算,比较繁琐,应用Python中的Scipy库则可以简化这一过程。

首先利用Python编程读取高程异常文件中需要的有效信息,即区域范围的坐标,格网步长,格网的行和列数,高程异常值等。代码如图1所示。

根据步长以及起始的经纬度坐标,求取得到X轴和Y轴,X轴和Y轴上的每个坐标对应的网格节点的高程异常值,调用Scipy库的内插函数就能求取插值点的高程异常值。如图2所示。

其中kind的内插类型可以是线性,曲面内插,曲面内插有Cubic和Quintic两种,后者拟合的曲面比较平滑,这里选择这种类型。求取距离近的9个点,可以得到插值点周边拟合的曲面,同时得到目标点的高程异常值,如图3所示。

利用Python编程可以得到高程异常模型文件里的各个节点的高程异常值,图4展示的是X轴和Y轴以及对应的部分节点的高程异常值。

当插值点位于格网垂直剖面曲线的拐点时,与它距离近的格网点并不唯一,因此插值曲面会有错开的现象。原始的高程异常文件是0.05度为步长,可以利用双二次多项式插值方法内插得到1分为步长的拟合曲面,再基于此进行内插,就会有效避免这种情况。

根据1分步长得到高程异常值,最终得到整个地区的拟合曲面如图5所示。

3 结束语

本文提出了基于Trimble公司的GGF高程异常模型利用Python编程解析的方法,论述了几种插值方法的优劣,应用双二次多项式内插的方法拟合曲面,结合Python科学计算和数据分析库,得到插值点的高程异常值。同时为分析其他高程异常模型提供了编程思路和方法,也为进一步编程应用高程异常模型提供了基础。通过本文的介绍,了解了高程异常模型文件的解析思路以及利用Python编程进行实现的具体步骤,通过Python编程,能够更高效地解析高程异常模型并进行数据处理,从而为地理空间分析提供更加准确和可靠的数据支持。希望本文能够为相关领域的研究和应用提供一定的帮助和指导。

参考文献:

[1] 侯中言.多源空间数据支持下新式茶饮门店选址研究——以广东省深圳市为例[D].赣州:江西理工大学,2021.

[2] 肖峰,李斐,张胜凯,等.联合CryoSat-2测高数据和地面高程数据建立东南极拉斯曼丘陵地区DEM[J].武汉大学学报(信息科学版),2017,42(10):1417-1422.

[3] 邓兴升,郭云开,花向红.似大地水准面格网双二次多项式插值方法[J].测绘学报,2009,38(1):35-40.