APP下载

瓦片式电子海图图片生成与编码分析

2012-01-22

船海工程 2012年4期
关键词:坐标值海图瓦片

(江苏海事职业技术学院,江苏 南京 211170)

海图是以海洋及其毗邻的陆地为描述对象的地图,是为航海需要而专门绘制的,与地形图相比,海图比例尺本身不成系列,海图图幅不是按照系统的经、纬差分幅,而且图幅之间有一定的重叠。

伴随信息技术的发展,海洋地理信息的存储介质由纸质发展为磁盘,作为计算机可识别电子海图(ECDIS)仍沿用最初纸质海图的分幅方式。分幅显示的电子海图存在空间信息的存储因分幅方式本身破坏了地理实体的完整性;不便于数据库的分布式管理,造成检索和存取效率的降低;使得相邻海图的叠幅部分海洋信息重复获取与存储,产生裂隙和数据冗余,导致存储资源浪费和检索、显示速度缓慢的弊端。

考虑将大幅电子海图切分成大小相等、高度和宽度也相等的瓦片形式,这样海图瓦片可以分布式的存储,可以多用户远程共享数据源,提高了访问效率,减小数据冗余,客户端只需拼接和显示海图瓦片,使渲染海图难度降低[1-2]。

1 电子海图投影方式及特点

为了使电子海图图层能无缝拼接,并且源自不同服务器的图层能正确地拼接,同时满足航用海图恒向线是直线、等角投影的性质,电子海图仍然选用等角正圆柱投影方式的墨卡托投影。经墨卡托投影后,使得相对较小的物标的形状没有发生改变,且保持了恒向线为直线,航向为000°或180°的恒向线为上下方向平行的直线,航向为090°或270°的恒向线为左右方向平行的直线。墨卡托投影在两极附近产生的变形较大,因此其能够显示的最大纬度为85°.05N(S)。为了计算的简化,并且满足电子海图客观显示地貌形状的特征,点在海图在投影时选择了地球圆球体作为地球的形状,这时在Y轴投影上会产生0.33%左右的投影变形,这种细微的变形肉眼是很难感受到的。

2 电子海图分辨率和比例尺

为了渲染海图,还必须要研究电子海图比例尺的处理方法。在最小图层的比例尺上(level=1),电子海图大小为512×512像素。在接下来的图层比例尺上,电子海图的宽度和高度以2的倍数增长,即在第二层(level=2)上,电子海图大小为1 024×1 024,第三层(level=3)上,电子海图大小为2 048×2 048,依次类推。

电子海图分辨率是指在电子海图上一个像素代表的地面距离。举例来说,分辨率为10 m/pixel,其含义为每一像素代表10 m的地面长度。分辨率的取值依赖于地图比例尺以及所在的纬度。当地球半径取6 378 137 m时,可以用以下公式计算电子海图分辨率。

电子海图分辨率=cos(lat×pi/180)×地球半径/电子海图宽度=[cos(lat×π/180)×2×π×6 378 137]/256×2level

电子海图比例尺是指在同一度量单位下,图上长度与相对应的地球上的长度的比值。在一个比例尺为1∶100 000的地图上,1 ft的长度代表地球上100 000 ft的长度。电子海图比例尺随着显示的精细程度以及基准纬度的不同而不同,它可利用电子海图分辨率和以下公式进行计算。假定屏幕的分辨率用screendpi表示,一般计算机的screendpi为96。

电子海图比例尺=1∶电子海图分辨率×screendpi/0.025 4 m/ft=1∶[cos(lat×π/180)×2×π×6 378 137×screendpi]/256×2level×0.025 4

通过以上公式可以计算出不同纬度处电子海图比例尺、图片大小及电子海图分辨率各数值。赤道处各数值见表1。

表1 赤道处电子海图比例尺、图片大小与电子海图分辨率之间的关系

3 瓦片式电子海图像素坐标系

在投影方式选定后,通过上述公式计算出在每一显示精细度层级上的比例尺,就可以将地理坐标系转化成像素坐标系。由于在不同的显示层级上图片的宽度和高度是不同的,所以像素坐标也随之不同。每幅图最左上角的点的坐标总是(0,0),最右下角的点的坐标为(256×2level,256×2level-1)。例如在显示层级为3时,像素坐标系的坐标范围为:(0,0)到(2 047,2 047),见图1。

图1 瓦片式电子海图像素坐标系

根据给定的经、纬度和显示的层级数,像素坐标的X、Y值可通过如下公式计算。

sin(Latitude) = sin(纬度×pi/180)

pixelX=[(longitude+ 180)/360] ×256×2level

pixelY={0.5-log[(1+sin(Latitude))/(1-sin(Latitude))] /(4×pi)} ×256×2level

4 电子海图瓦片编码

为了优化电子海图系统性能,提高电子海图显示速度,所有电子海图都被分割成256×256像素大小的正方形小块,即瓦片。由于在每个缩放级别下的像素数量都不一样,因此每一缩放层级下电子海图瓦片(tile)的数量也不一样,在缩放级别为level下的瓦片数量为tiles= 2level。

每个tile都有一个X、Y坐标值,从左上角的(0, 0)至右下角的(2level-1,2level-1)。例如在3级放大级别下,tile的坐标值范围为(0, 0)至(7,7),见图2。

图2 瓦片式电子海图坐标值

同时,给定任意一像素坐标的X、Y值,就很容易得到这个像素所在的Tile的X、Y坐标值:

tileX= floor(pixelX/ 256)

tileY= floor(pixelY/ 256)

为了简化索引和存储电子海图图片,每个tile的二维X、Y值被转换成一维字符串,即四叉树码(quadkeys)。每个quadkey惟一对应了某个缩放级别下的一个tile,并且它可以被用作一般数据库中B-tree的索引值。为了将瓦片的坐标值转换成quadkey,需要将X和Y坐标的二进制值逐位交错组合,并转换成4进制值及对应的字符串。例如,假设在放大级别为3时,tile的X、Y坐标值为(3,5),quadkey的计算过程如下。

tileX= 3 = 011(二进制);

tileY= 5 = 101(二进制);

quadkey = 100111(二进制) = 213(四进制) = “213”(quadkey)。

同时,quadkey还具有一些其它特性。首先,quadkey的长度等于该tile所对应的缩放级别;其次,每个tile的 quadkey的前几位和上一缩放级别所对应的tile的quadkey相同。如图3所示,其中tile 2是tile 20至23的上一级tile,tile 13是tile 130至133的上一级tile;最后,quadkey提供的一维索引值也体现了不同tile在X、Y坐标系中的相近程度,换句话来说,两个相邻的tile,其quadkey相似度很高,如quadkey为130和131,它表明其分别代表的两个tile在像素坐标系中是相邻的关系,这一特点对优化数据库的性能非常重要。因为相邻的tile总是同组读取的,将quadkey相似的tile分组存放在相同的磁盘区块中,可以减少对磁盘的读取次数,提高显示速度。

图3 瓦片式电子海图图层命名模式

5 结论

电子海图瓦片化减少了数据冗余,将电子海图系统的访问效率提高了近70%,扩展了电子海图的应用范围。瓦片式电子海图生成技术的实现,拓展了电子海图显示的平台,为电子海图网络化应用进一步打下了良好的基础。

[1] 毛德军,邢焕革,万 俊.多图模式下电子海图搜索和绘制算法研究[J].船海工程,2006(2):110-113.

[2] 关 劲,张勇刚,李 宁,等.电子海图快速显示方法研究[J].中国航海,2004(4):57-59.

猜你喜欢

坐标值海图瓦片
打水漂
纸海图AI小改正制作模式探讨
一种基于主题时空价值的服务器端瓦片缓存算法
惯性
探讨Excel2007与ArcGis10.0结合提取小班四至界限的坐标值
少林功夫拳(三)
MAPGIS软件平台下地图点位坐标批量输出探讨
民用海图编绘中数据一致性分析和改进
关于电子海图单元叠盖拼接问题的探讨
物理坐标图像的应用赏析