离散点插值方法、等值线的绘制及平滑技巧
吕勇平 戴景茹
(广东省气候应用研究所 510080)
由于等值线图看起来非常直观、形象,因此在天气预报、气候预测分析等方面用得非常多,已成为预报员不可缺少的工具之一。如各等压面层的位势高度图、高空环流、温度及降水分布图等等。目前也有一些非常好的微机用绘图软件,如SUFER、GRADS 等。这些软件一般都只有DOS 版,在流行的WINDOWS平台上,虽然可以调用,但不能使用鼠标操作,故不如使用在WINDOWS 环境中开发的软件方便。因此,许多希望在自己开发的应用程序中能方便地显示及打印各类等值线图的人,都想知道绘制等值线图的原理方法。如何用格点资料绘制等值线图在文献〔1〕中已有介绍,而离散点(如气象台站) 的资料必须通过插值才能绘制等值线图。插值的方法有几种,比如三角网插值,它是将相邻的三个点连成一个个三角形,然后用文献〔1〕介绍的追踪法或其它方法在三角形边上进行插值。此方法的优点是需要插的值少,插值算法简单,数据处理量少。缺点是三角网的生成随意性很大,任意四个点可生成二组不同的三角形,不同的三角网插值得出的等值线也不可能完全相同。若人为固定三角网,当有资料缺测时,就不得不重新调整三角网,因此程序的通用性不高。目前比较流行的是通用性好的网格化方法。
1 离散点网格化
理论上,离散点网格化可采用局部曲面拟
合方法,用多元回归方法建立
V ( X , Y) = a + bX + c Y
或二次方程
V ( X , Y) = a + bX + c Y + dX2 + eY2 + f X Y
所谓局部,是指采用拟合点周围一定范围的部
分离散点进行拟合。这种做法虽然在许多情
况下效果不错,但通常总是有些地方与实际情
况有较大出入。因此根据人工绘制等值线时
的直接内插方式,采用以下几个步骤。
111 定 点
(1) 根据离散点的分布范围确定整个网格
的范围及网格距,网格距不宜过大或过细。
(2) 确定每个离散点属于哪一个网格,也
即每个网格包含哪些离散点。
(3) 在欲插值的网格点周围一定范围内
(约3~4 个网格距如图1) ,按其4 个象限各
找一个合适的离散点,剔除距离插值点最远的
一个点(或其对面象限的点,使网格点处于另
三点组成的三角形之内) 。若有2 个象限找不
到离散点,则要判别是否有已插值的格点值可
替代,若也没有已插值可替代,则该格点暂时
不插值,并记下该格点位置,留最后补插值。
图1 离散点网格化
找合适点的原则:
A bs ( Xi - X0) ×A + A bs ( Yi - Y0) ×B = 最小
式中:X0 、Y0 ———为网格点坐标,
A、B ———为权重系数, (可根据其相邻象
限有无离散点不断调整) 。
112 插 值
当某离散点与网格点距离小于011 个网
9 6 199814 (增2) 广东气象
. 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
格距时,可近似作为该网格点值。
一般情况下,先由3 个点插出与纬向线相
交点的2 个值,最后这2 个值内插出网格点上
的值。为了使内插值更准确,可以考虑所选的
3 个离散点各点与网格点的距离,内插时乘上
权重系数,距离越近权重系数越大。
当4 个离散点的值如图2 的情况时,有可
能是高中心,正常插值肯定小于这4 个点的最
大值,不成为高中心,因此要根据周围离散点
的值作特殊处理。
图2 高中心特殊处理
113 补 插
将初次无法进行插值记录下来的格点,重
新检查是否可插值。
114 外围点插值
采用此方法插值,得到的网格点值只能在
外围离散点所包的范围内。为了使插值的网
格点尽可能包围外围离散点,可以在外围采用
外延的方法,将插值网格点扩大一圈。方法
是:对于任一个无插值网格点,在其周围应有
8 个(边线上5 个) 方向,任何一个方向,只要
最近的两个格点有值,则可外推出该格点值,
将8 方向可能推出的两个以上的值求算术平
均作为该格点的插值。
115 技 巧
为方便下一步连等值线,所有格点的值不
要与等值线的值相等,可对插出的格点值增减
一个非常小的值ε(如0101) 。若周围有一个
格点的值比该值大,则减去ε,否则加上ε。
2 绘制等值线
网格点资料如何绘制等值线,文献〔1〕介
绍了直接追踪法, 这里介绍另一种方法。
(1) 先将每个已插值的网格点与其右边及
下边两个网格点值进行比较,若满足条件
Sgn ( Z( x , y) - Z0) + Sgn ( Z ( x + 1 , y) - Z0) = 0
则记录一竖线段两个坐标
Sgn ( Z( x , y) - Z0) + Sgn ( Z ( x , y + 1) - Z0) = 0
则记录一横线段两个坐标
式中: Z ( 3 ) ———格点值;
Z0 ———等值线的值;
Sgn ( ) ———求正负号函数。
即把所有格点值看成只有两值,一是大于
Z0 ,一是小于Z0 (前面插值处理使任何一格点
值不等于Z0) ,最后可得到若干条线段(图3) 。
图3 两值化的等值线图
(2) 线段连接。对于某一线段X , 根据其
终点,顺序查找与之共点的起点或终点的线段
Y ,确定他们相连关系,根据线段X 两边格点
值插出等值线值的位置,作为等值线的一个点
坐标并记录下来。再根据Y 的终点或起点继
续查找..,当再也找不到时,即为该连线的
一个端点,同样要插值确定并记录该线终点坐
标。再回过头从线段X 的起点继续找,直至
找到另一个端点。当等值线起点终点属于同
一个网格时,该等值线是闭合的。
当某一线段起点终点均找不到与之相连
的其它线段时,可以考虑不要该线段。当某一
线段一头与另外3 个线段共点时(如图4) ,即
图4 多线段共点
0 7 广东气象 1998. 4 (增2)
. 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
当等值线的值为10 时,按顺序会记下4 个线
段A、B、C、D ,4 个线段的都有一个共同的端
点。这种情况下则应根据等值线值与4 个格
点值,按相互间距离最近的两个相连,另外两
个相连来处理(图中虚线) 。
(3) 当组成一条折线的点少于4 时,可以
不要该条折线。
3 等值线的平滑
前面连成的等值线,其实是一条条折线,
当网格距足够小时(可在粗网格上插细网格) ,
这些折线看起来就比较平滑。但这样处理有
两个缺点,一是要做很细的网格插值,但无论
如何细,曲线还是会随着图形的放大而逐渐变
成了折线。二是要记录很细的格点值及等值
线,可能就要开一个很大的数组,若要存放在
磁盘上则会占用较大的磁盘容量。为节省存
储空间,又要较精确地描绘曲线,唯一的办法
是增加数据处理工作量,必须从折点数据中找
到一系列的函数关系,使之完全通过这些折
点。根据这些函数加密数据点画出的折线是
看起来是连续而平滑的。图形越放大,需加密
数据点越多。目前,采用的平滑方法有多项式
拟合、样条函数、拉格郎日插值函数、斜轴抛物
线平均加权法等方法进行逐段拟合。不管是
哪种方法,直接使用都可能会出现不合理的情
况(图5) ,解决办法是先对拟合点或自变量作
些初步处理或称预处理,最后进行坐标(旋转)
变换后,用拉格郎日插值函数绘制平滑曲线。
图5 直接插值曲线
311 预处理
(1) 检查闭合线
当一条曲线的第一点与最后一点同属一
个网格时,则可以认为这条线是闭合的,在最
后点之后加上第一点坐标作为最后点。
(2) 合并紧邻点
相连的两个点距离小于012 个网格距时,
可在中间插一个点,而将这两个点取消。
(3) 将大折角减小
当3 个相邻点之间的夹角小于一定角度
时,通过逐步调整3 个点的Y 坐标,将夹角加
大(角β减小) 。可以通过多次的合并及减小
折角,使得曲线逐步平滑。
312 配函数绘线
加密数据点的拉氏插值函数程序如下:
For I = 1 To N :Z( I) = 1 :Next I
For I = 1 To N :For J = 1 To N
If I < >J Then Z(J ) = Z(J ) ×(XX -
X( I) ) / (X(J ) - X( I) )
Next J :Next I
YX = 0 : For I = 1 To N : YX = YX + Z( I)
×Y( I) :Next I
N 是样本点数, 对应数组X ( ) 、Y ( ) ,
XX 是插值X 坐标, Y X 是插出的Y 坐标。
采用3 点样本插值的具体做法是:
(1) 采用3 点在第一、二点之间进行插值。
(2) 为了避免出现如图5 那样的不合理插
值,可采用坐标转换方式。即根据第一点与第
二点连线和第二点与第三点连线的夹角来确
定新坐标旋转角度γ(图6) ,使角α等于角β。
(3) 在新的坐标系下进行第一、二点之间
进行插值。插值步长可以根据网格距大小及
图6 确定新坐标旋转角(
下转第73 页)
1 7 199814 (增2) 广东气象
. 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
数据文件调入后,返回Random 子菜单选
择Output , 填入输出文件名, 扩展名应为
1GRD ,然后选择Begin 即可将输入文件网格
化,生成输出文件。
Begin 生成的1GRD 文件,产生的数据分
布在给定的经、纬度极大值、极小值之间的每
一段。若直接由TOPO1EXE 调用,等值线将
布满整张图。为了不出现等值线,必须使用
Modify 进行空白化处理,空白化步骤如下:
(1) 编辑一空白化文件, 扩展名为生成
1BLN。格式:第一行: (点数- 1) 0
第二行:第一点横坐标(经度) 第一点纵
坐标(纬度)
第三行:第二点横坐标(经度) 第二点纵
坐标(纬度)
..
这些点相联成的闭合区域外将空白化。
(2) 在主菜单依次选择Modify →Blank ,出
现对话框,
在Input grid file : 填入欲空白化的
1GRD 文件,在Output grid file : 填入输
出文件,扩展名1GRD ,
在Blank file : 填入上一步生成的
1BLN 文件,
在Begin creating grid with current param2
eters ? 填YES ,即空白化生成输出文件。
312 运行TOPO1EXE
主菜单如下:
[ Topo ] Input Level Scale Conline Title
Border Xyline Grid Post Output Equip
用到的各选项功能如下:
Input :填入输入文件名,它是GRID1EXE
的输出文件。
Level :调整等值线的最大、最小值、间距。
Scale :调节屏幕图形的大小(F2 键显示) 。
Title :输入标题。
Post :将单点及其数值标注在指定位置,
若在此填入地图文件名,可调入地图。
Output :将显示的图形输出打印。
4 全屏幕修改
SURFER 软件包绘制的等值线精度高,
光滑不足,可进行全屏幕修改。
F2 显示后再按任意键,图上出现一小十
字架,按AL T - E ,屏幕底部出现下面的字样:
X = 110 Y = 25 Z = 19173 ESC
AL T - S OR NEW Z:
表示当前小十字架坐标为(110 ,25) ,数值
为19173 ,填入新的Z 值,就可部分修改图形。
修改后的图形可按AL T - S 存盘。
5 等值线标值标准化
上述方法绘制的等值线上标值有的没有,
有的多于两个,这是SURFER 的缺陷。笔者
对程序进行了修正,可绘制出等值线标值标准
的气候图。其基本思路是:采用汇编编译器找
出此部分地址,将修改后的子程序写入。
(上接第71 页) 图的放大倍数由程序自动确定。
每一个插值要还原到原坐标系下进行连线。
(4) 这样我们可用1 、2 、3 点绘出1 、2 点之
间曲线,2 、3 、4 点绘出2 、3 点之间曲线,最后2
点的曲线,只须将最后一点与倒数第三点调换
位置,调用同一个子程序便可绘出。
4 不足之处
由于不能插出比样本离散点最大值更大
或最小值更小的值,因此,当高(低) 中心的离
散点的值只比等值线的值略大时,绘出的高
(低) 中心最内的闭合线所包围的面积比手工
绘的要小,这种情况需作进一步的改进。
参考文献
1 冯业荣,谷德军1DOS 下天气图形的屏幕表现和识别
(四) 1 广东气象,199614
3 7 199814 (增2) 广东气象
. 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
分享到:
相关推荐
WinForm开发框架源码 权限管理系统源码 功能描述:01.登录界面 02.系统配置 03.申请账户 04.即时通讯 05.发送消息 06.广播消息 07.软件频道 - 内部通讯录 08.软件频道 - 名片管理 09.软件频道 - 代码生成器 10.系统后台管理 - 用户审核 11.系统后台管理 - 用户管理 12.系统后台管理 - 组织机构管理 13.系统后台管理 - 角色管理 14.系统后台管理 - 员工管理 15.系统后台管理 - 岗位管理 16.系统后台管理 - 用户权限设置 17.系统后台管理 - 角色权限设置 18.系统后台管理 - 组织机构权限设置 19.系统后台管理 - 菜单权限项设置 20.系统后台管理 - 选项管理 21.系统后台管理 - 序号(流水号)管理 22.系统后台管理 - 系统日志 - 按用户访问情况 23.系统后台管理 - 系统日志 - 按用户查询 24.系统后台管理 - 系统日志 - 按菜单查询 25.系统后台管理 - 系统日志 - 按日期查询 26.系统后台管理 - 系统日志 - 系统异常情况记
超级常用的甘特图-项目管理.xlsx
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
.f2812.acid
沟通的人性之光——AI 难以取代的人际交流能力.pdf
# 基于Spring Boot和Redis的分布式数据访问系统 ## 项目简介 本项目是一个基于Spring Boot和Redis的分布式数据访问系统,旨在提供高效、可靠的数据库访问和缓存管理功能。系统通过集成Spring Boot框架和Redis数据库,实现了对数据库的读写操作、数据分片、缓存管理等功能,适用于需要高性能和高可用性的分布式应用场景。 ## 项目的主要特性和功能 1. 数据库访问对象(DAO)基类提供通用的数据库访问对象基类,简化数据库操作的配置和管理。支持只读模式和分片数据源的配置。 2. 数据源上下文持有者管理和切换数据库连接,适用于数据库分片的环境。 3. 动态数据源管理实现多数据库的动态管理,支持切换数据库连接。 4. 数据库访问接口(DAO)定义了与数据库交互的基本操作,如增删改查等。 5. 读写分离提供只读和可写的数据访问对象,确保读操作和写操作在不同的环境中进行。
cnpdf_down.php
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
简介这个资源是一个用Java实现的贪吃蛇小游戏,旨在帮助初学者和有经验的开发者学习和提升编程技能。项目基于Java Swing库开发,包含完整的源代码、资源文件和文档。通过本项目,学习者可以深入理解Java编程基础、面向对象设计、图形用户界面开发、事件处理机制和游戏逻辑开发等核心概念。该贪吃蛇项目经过严格测试,确保代码可以正常运行,并且已经通过了答辩评审,获得高分评价,证明了其质量和完成度。项目适合作为课程设计、毕业设计或自我提升的实践练习。通过分析与实践这个项目,用户可以加深对Java语言的理解,提高编程能力,并获得宝贵的软件开发经验。
AI智能聊天小程序开源版本,目前支持对接阿里通义千问、百度千帆文心一言、讯飞星火大模型. 基于ruoyi-vue-plus的java8版本,有一些优化改动,主要技术栈: 后端:springboot2.7.18、mybatisplus、mysql、redis web前端:vue2、element ui、markdown编辑器cherry-markdown 小程序:微信原生语法、vant ui组件
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
<项目介绍> - 在本次设计中,将运用到MATLAB平台来对语音信号进行处理及识别。通过ATLAB平台建立一个GUI界面,接着输入数字语音信号,对输入进行预处理及端点检测,提取特征参数(MFCC),形成参考模块。与参考模块进行DTW算法进行匹配,输出匹配后的识别结果。 所制作GUI界面,制作成一个九宫格界面,点击对应0-9十个数字,可以播放对应语音,并且显示路径,波形,和结果的文本输出。可以进行二次改造成,属于一串数字,如数字正确,则触发另一个界面GUI,实现发射端和接收端的对话 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -----
一阶倒立摆模型推理和matlab仿真
# 基于Arduino的汽车事故预警系统 ## 项目简介 本项目旨在设计一个基于Arduino的汽车事故预警系统,通过实时监测汽车的振动和加速度数据,预测可能的事故并发出警报。系统利用Arduino板、Esp8266模块、ADXL345加速度计等硬件设备,并通过手机或电脑应用程序接收警报信息。 ## 项目的主要特性和功能 1. 实时数据监测系统能够实时监测汽车的振动和加速度数据。 2. 数据传输通过Esp8266模块将数据传输到手机或电脑应用程序。 3. 警报通知应用程序接收警报信息,提醒驾驶员可能发生的事故。 4. 调试与分析提供串口监视器读数功能,方便调试和数据分析。 ## 安装使用步骤 1. 准备硬件确保所有硬件设备(如Arduino板、Esp8266模块、ADXL345加速度计等)已准备齐全。 2. 硬件连接按照说明书正确连接硬件设备,并配置Arduino IDE环境。 3. 上传代码下载并上传源代码文件到Arduino板。
# 基于Qt框架的兵棋进攻游戏系统 ## 项目简介 本项目是一个兵棋进攻游戏系统,通过图形界面展示兵棋对战的过程。玩家通过操作棋子,克服障碍和防守点,将棋子移动到进攻目标区。游戏具有随机生成棋子和障碍物的功能,以及实时更新游戏界面的能力。玩家可以通过鼠标点击和移动来操作棋子,游戏简单易懂,充满挑战性和趣味性。 ## 项目的主要特性和功能 1. 图形界面通过Qt框架实现图形界面,展示游戏棋盘、棋子、障碍物、防守点和目标区域。 2. 游戏逻辑实现兵棋进攻的游戏逻辑,包括棋子的移动、攻击、生命值管理,以及游戏的胜负判断。 3. 随机生成随机生成棋子和障碍物的位置,增加游戏的随机性和挑战性。 4. 实时更新实时更新游戏界面,包括棋子的位置、生命值、子弹的更新等。 5. 用户交互处理鼠标按下事件,实现棋子的选中、移动、生命值更新等操作。 6. 防守点机制设置防守点,棋子进入攻击范围时,防守点会进行射击。 7. 胜负判断判断游戏是否胜利或失败,并显示相应的提示信息。
2024116比亚迪张家口成焊新线RF01生产线项目PLC和HMI屏幕程序,SEW IPOS SEW_MoviDrive RFID读写 博途项目
正点原子lvgl开发资料
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值