Openlayers 使用地图数据
[摘要]针对小型应用程序使用地图数据量小的问题,采用基础图层并对影像
数据进行数字化。
[关键词] OpenLayers 地图数据 瓦片数据
OpenLayers 是由 MetaCarta 公司开发的,用于 WebGIS 客户端的 JavaScript
包。它实现访问地理空间数据的方法都符合行业标准,比如 OpenGIS 的 WMS
和 WFS 规范, OpenLayers 采用纯面向对象的 JavaScript 方式开发,同时借用了
Prototype 框架和 Rico 库的一些组件。采用 OpenLayers 作为客户端不存在浏览器
依赖性。由于 OpenLayers 采用 JavaScript 语言实现,而应用于 Web 浏览器中的
DOM(文档对象模型)由 JavaScript 实现,同时,Web 浏览器(比如 IE,FF 等)
都支持 DOM。OpenLayers APIs 采用动态类型脚本语言 JavaScript 编写,实现了
类似与 Ajax 功能的无刷新更新页面,能够带给用户丰富的桌面体验(它本身就
有一个 Ajax 类,用于实现 Ajax 功能)。目前,OpenLayers 所能够支持的 Format
有:XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-Known
Text)。在 OPenlayers.Format 名称空间下的各个类里,实现了具体读/写这些
Format 的解析器。
OpenLayers 所能够利用的地图数据资源,在这方面提供给拥护较多的选择,
比如 WMS、WFS、GoogleMap、KaMap、MSVirtualEarth、WorldWind 等。也可
以用简单的图片作为源。在做 GIS 项目时一个地图能使得应用程序变得更漂亮,
对于一些小型的应用程序就不必花大笔的钱去购买地图数据。我们可以采用以下
的方式来实现。
如果想从本地访问瓦片数据的话,首先需要解决的问题是从一些公共地图服
务中获取瓦片数据。在这里将使用工具 http://www.daogle.com/?page_id=66 下载
地图的瓦片数据。 瓦 片数据 下 载到本 地 之后,可 以看到 瓦片的数据 命名
“m_14_13519_6253.png”,其中 m 后面的 14 代表的目前的缩放级别,“13519”代
表的是瓦片数据的横坐标,“6253”代表的是瓦片数据的纵坐标。对于 Google maps
用的是墨卡托投影方式,将地图投影成了一个 40075016.685578488?m 的正方形
坐标的形式,然后根据缩放级别将这个正方形分割成不不同粒度的小正方形,这
种分割的形式采用的是四叉树索引的方式进行。具体的分割如下图所示。
首先在 level 0 级别的时候,就是将这个正方形划分为一个 256 像素的图片,
如果化成米的形式的话,就是 40075016.685578488 的正方形,从这里可以计算
出比例为:40075016.685578488/256 = 156543.033928041(米/像素)。对于 level 1
级别时,然后再将这个正方形划分为一个 4 个 256 像素的正方形,此时计算出的
比例为:40075016.685578488/512 = 78271.51696402(米/像素)。