第五章 切片地图
以下均掺杂个人理解
书目:Web GIS 原理与应用开发 —— 刘光 曾敬文 曾庆丰 著
如果要提高Web地图的访问速度,使用地图切片的非常有效的方法。
地图切片就是在多个比例尺下配置地图,提前把每个比例尺下的地图绘制成小块图片,保存在服务器上的缓存目录中
5.1 为什么使用切片地图
为了使Web GIS更加贴近桌面系统。Web GIS有桌面系统所没有的优势,但其渲染能力以及加载速度却不及桌面系统。
切片地图采用的是金字塔模型,是一种多分辨率层次模型,从切片金字塔的底层到顶层,比例尺越来越小,分辨率越来越低,但表示的地理范围不变。(比如校园范围的切片,放大看清晰了即比例尺增大分辨率提高,但其范围仍是这个校园)
切片地图通常都带有一个级别、行、与列的编号方案,以便将来自多个切片地图服务的切片放置到正确的位置。
Web GIS应用由此分为两类:
- 一类是具有图层排序与调整符号颜色等功能,但响应非常迟缓的丑陋的地图应用。
- 一类是没有图层控制,但具有惊人美观并且快速响应的地图应用。
如果一个Web GIS应用有成千上万用户并发访问,那么切片地图是唯一的合理解决方案
目前的方案之前也介绍过,将图层分为基础底图和专题图层,基础底图使用地图切片,专题图层使用动态服务。
5.2 何时使用地图切片
若希望基础底图能够快速漫游或者多并发访问,应该使用地图切片
若专题图层中地物要素的位置与属性不经常变换,也可使用地图切片
之前提到过地图切片只反映生成切片时的情况,这就要求我们必须定期创建新的切片
对于一些大规模的切片,管理员只针对比变换领域更新切片,这就需要记录编辑过的地方或者对比几个版本的数据
5.2.1 是否有满足需求的切片地图
创建切片底图需要大量丰富的数据、高端的地图制作软件和制图技巧,以及潜在的大量时间和磁盘空间。
如果决定创建自己的基础底图,那么对于制图有经验的制图人员是必不可少的,地图都应当有合适的符号、颜色以及相应的详细程度。
如果底图中还有影像图,则需要新创建一套适配影像图的符号系统。
5.2.2 投影
创建地图切片可以使用任何坐标系,但是如果想要将专题图层叠加在基础底图上,则要求其地理参考一致,否则会发生偏移(没有偏移是因为目前很多API会帮助我们动态投影)
目前的OpenStreetMap、谷歌、微软、ERSRI切片地图使用的是web墨卡托投影(EPSG:3785)
!需要注意的是web墨卡托投影下不能使用量测功能,包括线的长度以及多边形的面积。即使是在中纬度地图,结果偏差仍然惊人,甚至可以偏差一倍。
解决方案参考博客:https://www.esri.com/arcgis-b...
解决方案:在拉框获取待测图形(graphic)之后,发送往服务器之前,对图形做一步投影转换的操作(可以封装成为一个函数)
5.2.3 比例尺
基础底图与专题图层叠加时不仅要考虑投影,还要考虑比例尺,因为地图切片的比例尺是确定的
关于比例尺:最小比例尺是将整个世界 放置在2×2的网格中,每个网格的大小是256像素×256像素,即1:295829355.45。这样的数字不便于使用,所以对比例尺进行了分级(1级-23级),下表仅列举了部分
级别 | 地图高和宽(像素) | 地面分辨率(米/像素) | 地图比例尺(96 dpi) |
---|---|---|---|
1 | 512 | 78271.5170 | 1:295829355.45 |
5 | 8192 | 4891.9698 | 1:18489334.72 |
10 | 262144 | 152.8741 | 1:577791.71 |
15 | 8388608 | 4.7773 | 1:18055.99 |
20 | 268435456 | 0.1493 | 1:564.25 |
23 | 2147483648 | 0.0187 | 1:70.53 |
5.3 创建与提供切片地图服务的策略
地图切片一般都采用简单的文件夹结构
,以便提供服务
当前基本有两种方式组织:
- 将切片图像以文件夹的结构放在服务器上,用户直接请求文件
优点:只需要将单独的切片图像组织在代表比例级别、行和列的文件夹结构中,API通过访问包含代表级别、行和列结构的URL进行访问(http://{s}.somedomain.com/.../{z}/{x}/{y}.png 表示访问z比例下x行y列的切片)
缺点:服务器切片结构暴露在外
- 将切片以Web服务的方式提供访问
优点:文件的组织形式对用户是不可见的(http://somedomain.com/.../?qt... 表示访问10比例下123行456列的切片)
缺点:比直接使用文件夹的形式复杂,延时较长
5.3.1 创建切片地图的策略
- 提出问题
切片地图中的不同地图包含信息不同,因而受欢迎程序不同(如城区访问次数高,而海域访问次数低)
我们是否有必要浪费存储空间对其进行切片
方案
- 需要进行
按需切片
,第一个漫游到该地区的用户需要等待服务器进行切片,之后的用户再次访问该地区则不需要等待,被访问到的地区有切片,而从来没有被访问过的地区是没有切片的。 - 采用
“没有数据”图片
,表明该地图无切片数据
- 需要进行
5.3.2 创建开源软件创建切片
GeoWebCache、TileCache、TileStache、TileMill等等