5.2. 为什么要瓦片地图?

如前几课所述,最早的web地图通常是由服务器动态绘制的,无论有多少层可用或请求。这些是您刚刚使用GeoServer和WMS创建的地图类型。正如您可能已经注意到的,这类地图的符号集和标签选择相对有限,使用起来比较复杂。事实上,许多年来,网络制图者必须建立一个最小图层集和简单符号的地图,以避免妨碍性能。在许多情况下,制图员甚至不参与其中;相反,web地图是由服务器管理员通过调整XML文件来创建的,这些文件定义了图层顺序、符号大小等。开放规范web服务(如WMS)和专有web服务(如Esri ArcIMS)都是这种情况。

这种方法的一部分源于早期使web GIS应用程序看起来与桌面应用程序完全相同的努力。有时这些被称为“瑞士军刀应用程序”,因为它们尝试做任何事情(你可能知道!)。人们希望在WebGIS中,他们应该能够切换图层可见性、重新排列图层、动态更改图层符号,以及在桌面上执行他们习惯于执行的所有其他操作。具有讽刺意味的是,这种心态盛行于网络技术最不适合容纳它的时代。

2000年代中期,谷歌地图、微软虚拟地球(现在的必应地图)和其他流行的地图应用程序登陆网络后,人们开始意识到,也许他们不需要修补每一层的属性。这些供应商已经开始将矢量层融合在一个单独的栅格化图像中,该图像被分成256 x 256像素的图像或分幅。这些瓦片被预先生成并存储在磁盘上,以便快速分发给客户机。这样做是为了支持成百上千的同时用户,这对于在飞行中绘制地图来说是一个巨大的负担。

下图显示了瓦片地图是如何由一个“金字塔”图像组成的,这些图像覆盖了地图在不同尺度上的范围。瓦片贴图通常带有一个级别、行和列编号方案,可以跨缓存共享,以确保在覆盖两个瓦片集时瓦片边界匹配。

../../_images/tile_pyramid.png

图5.1瓦片的web地图采用金字塔的形式,在金字塔中,地图以一系列渐进的比例级别绘制,最小(缩小)比例使用较少的瓦片。

制图者喜欢瓦片地图,因为现在他们可以把所有的工具都投入到制作一个美观的网络地图上,而不用担心性能。一旦创建了瓦片,磁盘上就有了一组图像,服务器可以像检索丑陋的图像一样快速地检索美丽的图像。而且,由于瓦片地图图像可以通过web服务器如此快速地分发,Google和其他人能够使用异步JavaScript和XML(AJAX)编程技术来检索瓦片,而不会在人们平移时出现页面闪烁。

这是革命性的。你更喜欢哪一张地图:一张有着惊人的制图能力、没有图层控制的拖拖拉拉的地图,或者一张笨重难看的地图,它能重新排列图层并调整学校的颜色?一些长期的地理信息系统极客不得不停下来思考这个问题,但对于普通的网络用户来说,这个选择是一个不费脑子的选择。

在Google Maps发布后的一两年内,商业GIS软件开始提供构建地图块的能力。对许多人来说,ArcGIS服务器是可取的,因为可以使用ArcMap中成熟的地图创作工具来创作地图;然而,成本是一些人关心的问题。Arc2Earth是另一种商业选择。免费开源的Mapnik库也可以构建瓦片,但直到最近几年,TileMill这样的项目才在Mapnik上封装了一个用户友好的GUI。

../../_images/tiled_map.jpg

图5.2

信贷:OpenStreetMap数据的瓦片,由MapQuest提供

瓦片地图是唯一一种能够合理地为成千上万的同时用户提供复杂网络地图的模型。但是,它们消除了用户更改图层顺序或符号的能力。人们开始着手解决这个问题,把通用的基础地图图层作为瓦片,然后用专题信息覆盖一个单独的图层。通用的基础图块可以在许多应用程序中重用。如果数据变化不太快或覆盖范围过大,主题层也可以瓦片。例如,您在第2课中看到,Microsoft Bing Maps流量层用作PNG瓦片。