离散点插值方法、等值线的绘制及平滑技巧
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
离散点插值方法、等值线的绘制及平滑技巧
2008-06-10 22:45
由于等值线图看起来非常直观、形象,因此在天气预报、气候预测分析等方面用得非常多,已成为预报员不可缺少的工具之一。如各等压面层的位势高度图、高空环流、温度及降水分布图等等。目前也有一些非常好的微机用绘图软件,如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 个网
格距时,可近似作为该网格点值。
一般情况下,先由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 多线段共点
当等值线的值为10 时,按顺序会记下4 个线
段A、B、C、D ,4 个线段的都有一个共同的端点。这种情况下则应根据等值线值与4 个格
点值,按相互间距离最近的两个相连,另外两
个相连来处理(图中虚线) 。
(3) 当组成一条折线的点少于4 时,可以
不要该条折线。
3 等值线的平滑
前面连成的等值线,其实是一条条折线, 当网格距足够小时(可在粗网格上插细网格) , 这些折线看起来就比较平滑。但这样处理有
两个缺点,一是要做很细的网格插值,但无论
如何细,曲线还是会随着图形的放大而逐渐变
成了折线。二是要记录很细的格点值及等值线,可能就要开一个很大的数组,若要存放在
磁盘上则会占用较大的磁盘容量。为节省存
储空间,又要较精确地描绘曲线,唯一的办法
是增加数据处理工作量,必须从折点数据中找
到一系列的函数关系,使之完全通过这些折
点。根据这些函数加密数据点画出的折线是
看起来是连续而平滑的。图形越放大,需加密
数据点越多。目前,采用的平滑方法有多项式
拟合、样条函数、拉格郎日插值函数、斜轴抛物线平均加权法等方法进行逐段拟合。不管是