理信息由一系列点组成(如果存在直线,则 地图信息包括线两端的点坐标,如果存在曲线,则地图信息还包括曲线上的采样点坐标), 样式信息包括线的粗细、颜色、线型、透明度等。
[0086] 线的描述可以如下表示(示例代码):
[0087]
[0088] ③、面
[0089] 面数据通常用来表示行政区划、自定义片区、空间查询区域等,它的地理信息由多 个多边形组成(即地理信息包括多边形轮廓线上的采样点坐标),样式信息包括轮廓的颜 色、粗细、填充颜色、透明度等。
[0090] 面的描述可以如下表示(示例代码):
[0091]
[0092]客户端将上述地图数据转换为Json格式,即客户端通过前端程序将所有的地理信 息和样式信息一起打包,并将打包数据转换为Json(JavaScript Object Notation)格式, 并通过Post请求(Post请求为HTTP请求方式中的一种)方式将所述Json格式的地图数据发 送至所述服务器。
[0093]后端服务器以WebSerViCe(Web服务)的方式提供一个算法服务接口,根据客户端 传入的参数拼接绘制图像,最终将结果返回给客户端用户界面,为用户提供下载。为了接收 客户端发送的数据,必须在后端服务器侧定义一套与客户端传入数据相匹配的数据结构, 因此,对于客户端发送的所有的点、线、面等矢量信息,在后端算法中都必须重新定义与之 匹配的JavaBean(JavaBean是一种JAVA语言写成的可重用组件)来存储解包后数据的矢量 信息等。后端服务器引用了第三方的库文件fastJson(Fast json是一个Java语言编写的高 性能功能完善的JS0N库),是目前解析Json速度最快的第三方库,通过该文件可以快速把从 客户端接收到的Json字符串还原成矢量数据即JavaBean。可见,所述服务器在接收到客户 端发送的Json格式的地图数据后,通过解析所述Json格式的地图数据,并利用预先定义的 JavaBean存储解析后的地图数据。
[0094] 步骤203:所述服务器确定所述分辨率对应的地图层级,并拼接出属于所述地图层 级上的所述截图区域内的地图底图。
[0095] 在步骤203中,不同分辨率对应不同的地图层级,不同地图层级对应不同详细度的 地图信息,对于服务器绘制的截图图像,应是确定层级上的图像。服务器绘制的截图图像包 括截图区域内的底图以及包括点、线、面等在内的地图信息。在拼接底图和绘制地图信息 时,需要进行一系列的坐标转换,具体需要用到五种坐标系的相互转换,分别为经炜度坐标 系、墨卡托坐标系、屏幕坐标系、瓦片坐标系、图像坐标系。这五种坐标系都有各自特定的使 用场合,在它们之中以墨卡托坐标系作为核心坐标系,与其它四种坐标系之间可以进行相 互转换,参见图6所示的坐标转换示意图,下面对各个坐标系进行详细介绍。
[0096] 1、经炜度坐标系
[0097]参见图7所示的经炜度坐标系示意图,经炜度坐标系又称为"地理坐标系",属于球 面坐标,它的值域范围为:xe (-180,180),ye[-90,90],单位为度,以东为X正方向,北为y 正方向。在数据库中,所有地图矢量数据都以经炜度格式存储,如网点坐标、行政区划边界 等,经炜度坐标是数据的真实坐标。
[0098] 2、墨卡托坐标系
[0099] 参见图8所示的墨卡托坐标系示意图,墨卡托坐标系又称"墨卡托投影坐标"或"等 角正轴圆柱投影坐标",它是由荷兰地图学家墨卡托拟定的。墨卡托坐标系来源于经炜度坐 标系,假定地球被围在一个圆柱体内,赤道与圆柱相切,然后假想在地球中心处有一盏灯, 把地球表面投影到圆柱体表面上,再把圆柱展开,得到的就是墨卡托坐标系下的世界地图。 注意到当投影范围接近北极和南极时,投影结果会趋于无穷大,所以墨卡托坐标系在南北 极约15度以内没有值,即一幅完整的墨卡托世界地图对应的经炜度范围为:
[0100] X~(-180,180),y~[-85,85]
[0101] 墨卡托坐标以本初子午线与赤道的交点为原点,东为X正方向,北为y正方向,所有 矢量图形和底图瓦片在地图上的展示都使用此坐标系。
[0102] 经炜度坐标与墨卡托坐标之间的转换方式如下。
[0103] 由于赤道半径为6378137米,则由上述定义可知墨卡托坐标的X轴范围等于赤道周 长,SP2*PI*r = 2*20037508 · 3427892,因此xe [-20037508.3427892,20037508.3427892], 为了使地图成为一个正方形便于计算,墨卡托坐标的y轴范围也被定义为7£[-20037508.3427892,20037508.3427892]。
[0104] 基于上述定义,经炜度坐标与墨卡托坐标的关系为:
[0105] Mercator.x = lonlat.x*20037508.3427892/180
[0106] Mercator.y=log(tan((lonlat.y+90)*PI/360))/(PI/180)
[0107] 其中,Mercator. x表示X轴方向上的墨卡托坐标,Mercator. y表示Y轴方向上的墨 卡托坐标,lonlat · X表示X轴方向上的经炜度坐标,lonlat · y表示Y轴方向上的经炜度坐标, PI表示:π。
[0108] 由此公式也可反推算出由经炜度坐标转换为墨卡托坐标的方法。
[0109] 3、屏幕坐标系
[0110] 屏幕坐标属于平面坐标,单位为像素,以屏幕左上角为原点,右为X正方向,下为y 正方向。用户所有的前端操作都使用此坐标系。
[0111] 屏幕坐标与墨卡托坐标之间的转换方式如下。
[0112] 假设当前用户屏幕的地图范围为|^1]1;[11,71]1;[11,11]^1,71]^1],是墨卡托坐标,则屏幕 上任意一点的坐标可由下式求出:
[0113] Screen. x= (Mercator. x - xmin)/(xmax -xmin)*Screenffidth
[0114] Screen.y = (ymax-Mercator.y)/(ymax-ymin)*ScreenHeight
[0115] 其中,Mercator. x表示X轴方向上的墨卡托坐标,Mercator. y表示Y轴方向上的墨 卡托坐标,Screen · X表示X轴方向上的屏幕坐标,Screen · y表示Y轴方向上的屏幕坐标。
[0116] 4、瓦片坐标系
[0117] 参见图9所示的瓦片坐标系示意图,瓦片坐标属于平面坐标,无单位,以本初子午 线与墨卡托坐标y轴最小值的交点为原点,东为X正方向,南为y正方向,依次递增,每个索引 值代表一张瓦片。在GIS(Geographic Information System,地理信息系统)引擎索引瓦片 时,使用此坐标系。
[0118] 瓦片坐标与墨卡托坐标之间的转换方式如下。
[0119] 地图上任意点所属瓦片的坐标为:
[0120] Tile.x = floor( (Mercator, x+20037508.3427892 )/(20037508.3427892/2' level))
[0121] Tile. y = floor( (20037508.3427892-Mercator.y )/(20037508.3427892/2' level))
[0122] 其中,Mercator. x表示X轴方向上的墨卡托坐标,Mercator. y表示Y轴方向上的墨 卡托坐标,Tile.X表示X轴方向上的瓦片坐标,Tile .y表示Y轴方向上的瓦片坐标,level表 示当前地图层级。
[0123] 5、图像坐标系
[0124] 图像坐标属于平面坐标,单位为像素,以图像左上角为原点,右为X正方向,下为y 正方向。在绘制矢量图形时使用此坐标系。
[0125] 图像坐标与墨卡托坐标的转换方式如下。
[0126] 图像坐标与墨卡托坐标的转换方式同屏幕坐标与墨卡托坐标的转换方式相同,只 需把公式中屏幕宽高替换为图像宽高,即,假设当前图像的地图范围为[xmin,ymin,xmax, ymax],是墨卡托坐标,贝lj图像上任意一点的坐标可由下式求出:
当前第3页
1 
2 
3 
4 
5