`
izuoyan
  • 浏览: 9220497 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

离散点插值方法、等值线的绘制及平滑技巧

阅读更多
离散点插值方法、等值线的绘制及平滑技巧
吕勇平 戴景茹
(广东省气候应用研究所 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.

分享到:
评论

相关推荐

    散点插值及等值线绘制

    在IT领域,散点插值和等值线绘制是数据可视化的重要组成部分,尤其在科学计算、地理信息系统(GIS)和工程应用中极为常见。本文将深入探讨这些概念,并结合提供的文件列表,阐述如何使用VC++进行相关的编程实现。 ...

    surfit-2.1.tar.gz_Surfit插值_插值软件_离散点插值_离散点等值线_网格插值

    Surfit是一款专业的插值软件,主要用于处理离散数据点,并将其转换为连续的网格数据,以便进行等值线绘制和其他数据分析任务。这个压缩包“surfit-2.1.tar.gz”包含了Surfit软件的2.1版本,为用户提供了一种方便的...

    离散点三角网与等值线

    离散点三角网(Delaunay Triangulation)与等值线绘制是地理信息系统(GIS)、计算机图形学和科学可视化领域中的重要技术。这两者在处理地理数据、模拟环境变化、图像分析等方面有着广泛的应用。 Delaunay ...

    C#实现基于三角网的等值线追踪及填充算法

    本项目"**C#实现基于三角网的等值线追踪及填充算法**"是用C#编程语言在Visual Studio 2008环境下开发的,它主要涵盖了以下三个核心知识点: 1. **插入法实现散乱点三角网** 散乱点三角网是一种将无规则分布的点集...

    离散数据网格化(为做等值线做准备)

    5. **等值线绘制**:有了网格化的数据,绘制等值线就变得相对简单。等值线是连接具有相同值的点的曲线,可以使用各种算法实现,如Marching Squares或Marching Cubes算法,这些算法能在二维或三维网格中找出等值线。 ...

    基于正规化网格的等值线生成

    2. 插值:在获取了网格节点上的数据后,为了生成平滑的等值线,我们需要对这些离散点进行插值。插值方法有很多,如最近邻插值、线性插值、双线性插值、三线性插值,以及更高级的样条插值。选择哪种方法取决于数据的...

    Windows环境下离散点气象要素等值线绘图软件的设计与实现 (2001年)

    8. **总结**:软件的设计与实现使得在Windows环境下能够方便地对东北地区的气象数据进行等值线绘制,极大地提高了气象信息的可视化表达效率,为气象分析和研究提供了有力工具。 以上就是根据文档内容整理的关于...

    等值线生成

    2. **插值方法**:等值线生成的核心是插值,即根据离散的数据点估算出整个区域的连续值。常见的插值方法有最近邻插值、线性插值、样条插值(如自然邻接样条、立方样条)和克里金插值等。不同的插值方法会影响最终...

    克里金插值及DEM等高线生成

    1. **构建DEM**:利用克里金插值方法,将采集到的离散高程点扩展到整个研究区域,生成连续的高程模型。 2. **等高线提取**:在DEM上设置不同的等高线间隔,如10米或20米,然后计算每个等高线对应的水平面与DEM交点...

    空间插值方法汇总.doc

    通过构建三角网,根据三角形内数据点计算插值,类似手工绘制等值线,确保插值面连续且严格。 10. 移动平均法(Moving Average): 通过对相邻点的平均值进行计算,平滑数据并去除噪声,适用于数据有明显趋势的情况...

    Winform中实现云图(等高线图)绘制算法源码

    本主题将深入探讨如何在Winform应用中实现云图的绘制,主要涉及三种关键算法:点距离反比插值、双线性插值以及结合了这两种方法的面距离反比+双线性插值。 首先,我们来看点距离反比插值算法。这种算法适用于离散...

    vb等值线图的绘制方法※编程实践※水论坛.rar_VB 曲线图_vb绘制曲线_曲线平滑_正弦曲线拟合_水位拟合

    等值线 在科学计算和现实生活中,常常会遇到y=f(t)这类函数关系,例如,正弦、余弦等等。函数y=f(t)往往是以离散的观测值形式f(ti)(i=1,....N)表现出来的。例如,令股民朋友如醉如痴的K线图,与千家万户性命攸关的...

    用Surfer软件绘制红水河流域自动站雨量等值线

    Surfer 8软件支持12种不同的内插方法,这些方法可以将离散的XYZ数据点网格化,生成规则的格网数据。这些内插方法包括克里金法(Kriging)、最近邻点法(Nearest Neighbor)、最小曲率法(Minimum Curvature)等多种...

    yuntu.rar_YUNTU_云图_等值线

    5. 可视化:最后,将等值线绘制到云图上,通常使用GIS软件或编程语言如Python的matplotlib库、geopandas等工具。颜色编码可以用于表示数值的大小,增强视觉效果。 在这个"Yuntu"的案例中,提供的“云图”文件可能是...

    根据点坐标信息画等值线程序

    2. 插值算法:常见的有最近邻插值、线性插值、样条插值等,用于将离散的点数据平滑过渡到整个平面。 3. 图形库:例如matplotlib、Mayavi、Plotly等,用于绘制二维等值线图和三维表面图。在Python中,matplotlib通常...

    单航班噪声动态等值线的绘制算法

    在进行噪声等值线绘制前,首先需要对机场周边的噪声敏感点进行识别,然后收集这些点在特定时间段内的噪声值大小。通过分析这些离散数据,可以采用网格化的方法将数据进行空间划分,形成网格点数值化。接下来,基于...

    等高线最大角度插值算法

    等值线是等高线的广义概念,可以用于任何连续变量的等间隔分割,比如温度、压力等。 等高线最大角度插值算法的基本步骤如下: 1. 数据准备:收集地形数据,通常以高程点的形式存在,这些点可能来自于遥感卫星、...

Global site tag (gtag.js) - Google Analytics