本发明涉及极地海冰漂移的矢量绘制,具体的说是一种极地海冰漂移矢量可视化的流程算法。
背景技术:
本算法采用idl编程语言实现,idl功能强大,在遥感、地信等领域广泛应用。但是现有的矢量绘制方法,在极地地区容易出现错误,常常会出现箭头从北极点向外指向的情况和部分区域箭头反向的情况。因为极地地区海冰漂移数据所对应的经纬度数据是不对称的,相邻的经度和纬度都是不相等的。而idl现有的内置函数vector(),ivector(),arrow()都要求数据的坐标对称,例如,垂直于x的坐标,x值都相等,垂直于y轴的坐标y都相等。因此,极地海冰漂移矢量可视化方法具有较强的研究价值。
技术实现要素:
针对上述存在问题,本文基于idl程序语言,以数据框水平方向为x轴方向,垂直方向为y轴方向,并以画线的形式,对极地海冰漂移矢量进行可视化。操作简便,可视化美观,自由度高,可根据自己的审美任意调整矢量的各个参数。
本发明解决其技术问题所采用的技术方案是:一种极地海冰漂移矢量可视化算法,包括以下步骤:
读取极地海冰漂移矢量的水平数据和垂直数据,将数据点所在数据框中的列号作为矢量起点a的横坐标x0,行号作为矢量起点的纵坐标y0。
x1=x0+u
x2=x1-(rucosα-rvsinα)
x3=x1-(rucosα+rvsinα)
y1=y0+v
y2=y1-(rvcosα+rusinα)
y3=y1-(rvcosα-rusinα)
其中,(x0,y0)为海冰漂移矢量的起始点a的坐标,由海冰漂移矢量起始点a的横坐标x0,加上矢量水平大小u,得到箭头顶端点b的横坐标x1。同理,得到矢量纵坐标y1。用户可以根据用途及偏好,设置矢量箭头的长度l和角度α,r是加权系数,用户可以自由设定,本专利举例设置为0.3,α为22.5°。由几何公式推导,即可得到矢量箭头另外两点的坐标c(x2,y2)和d(x3,y3)。
利用idl曲线绘图函数按照abcbd的顺序进行连接,或者按照abdbc的顺序进行连接。即可得到极地一个数据点处的海冰漂移矢量。
利用idl的循环函数,将数据网格中所有的数据点,按照以上步骤进行可视化,叠加起来显示,即可得到最终的极地海冰漂移矢量图。
一种极地海冰漂移矢量可视化算法,以idl程序实现。
本发明具有以下有益效果及优点:
1.本发明一种极地海冰漂移矢量可视化算法,可提供从数据读取到最终成图的一整套极地海冰漂移矢量可视化流程算法。
2.本算法仅采用idl程序完成,简洁方便,便于操作。
3.本算法可视化美观,自由度高,可根据自己的审美任意调整矢量的各个参数。
附图说明
图1是本发明的流程图;
图2是矢量绘制原理解析图;
图3是本发明示例北极海冰漂移矢量一个数据点可视化结果图。
图4是本发明示例北极海冰漂移矢量所有有效数据点可视化结果图。
具体实施方式
下面结合附图对本发明做进一步说明。
如图1所示,利用程序语言读取海冰漂移矢量的水平数据和垂向数据,建立图像显示窗口,确定海冰漂移矢量的起始点坐标。根据矢量水平大小和垂直大小,以及矢量箭头角度和长度,计算矢量箭头三点的坐标,按一定的顺序,将以上四点连接成线,将所有海冰漂移矢量进行叠加显示,完成绘制。包括以下步骤:
读取极地海冰漂移矢量的水平数据和垂直数据,如图2所示,将数据点所在数据框中的列号作为矢量起点a的横坐标x0,行号作为矢量起点的纵坐标y0。
公式一:
l为箭头一侧线条长度,r为加权常数,用户可以肯定自己的审美确定r大小,进而确定箭头线条长度占矢量大小的比例。u为矢量水平大小,v为矢量垂直大小。
公式二:x1=x0+u
x0是矢量起点a的横坐标,x1是矢量末点b(也就是箭头定点)的横坐标。
公式三:
x2是c点的横坐标,γ是矢量箭头的右半边线与水平线的夹角,α是矢量箭头的角度,β是矢量与水平线的夹角。
公式四:x3=x0+u-(rucosα+rvsinα)
x3是d点的横坐标。
公式五:y1=y0+v
y0是矢量起始点a的纵坐标,y1是矢量末点b的纵坐标。
公式六:y2=y0+v-(rvcosα+rusinα)
y2是矢量起始点c的纵坐标。
公式七:y3=y0+v-(rvcosα-rusinα)
y3是矢量起始点c的纵坐标。
根据公式二,由海冰漂移矢量起始点的横坐标x0,和矢量水平大小u,即可得到箭头顶端点b的横坐标x1。同理,根据公式五,得到矢量纵坐标y1。用户可以根据用途及偏好,设置矢量箭头角度α和加权系数r的大小(本专利事例中r为0.3,α为22.5°)。再根据公式三、四、六和七,即可得到矢量箭头另外两点的坐标c(x2,y2)和d(x3,y3)。公式四、六和七的推导原理和公式三相同。
将海冰矢量箭头状图形分成4个点,利用idl曲线绘图函数plots,按照点abcbd的顺序进行划线,或者按照abdbc的顺序进行划线。即可得到极地一个数据点处的海冰漂移矢量如图3。
利用idl的for循环,将数据框中所有的数据点,按照以上步骤进行可视化,叠加起来显示。只显示有海冰漂流的数据点,无海冰漂流的点设置为不显示,添加图例,即可得到最终的极地海冰漂移矢量图如图4。
一种极地海冰漂移矢量可视化算法,以idl程序实现。