基于开源Leaflet的WebGIS客户端设计与实现

  • 格式:pdf
  • 大小:1.65 MB
  • 文档页数:2

科技创新与应用『2017年第l6期 科技创新 

基于开源Leaflet的WebGIS客户端设计与实现 

赵虎JIl 曲超 

(天津市测绘院。天津300381) 

摘要:Leaflet是一个开源的地图Javascript库,具备界面友好、互操作性强、支持移动设备等特点,支持OGC的WMS/WFS/WCS 

标准,提供了数百个第三方插件扩展地图功能,是进行开源WebGIS客户端开发的最佳选择 文章介绍了WebGIS体系结构和关 

键技术与规范,并结合实例重点介绍了Leaflet的特点具体应用。 

关键词:开源;WebGIS;Leaflet;GeoJSON 

1概述 近年来,随着计算机技术、互联网技术、数据库技术等技术的不 断发展,GIS技术开始面向传统行业和广大民众,WebGIS出现并迅 速发展【11。因为采用B/S(浏览器/服务器)方式搭建,并具有响应快 

速、交互式、分布式、动态性等特点,实现了在互联网上实现地理信 

息服务共享,是GIS发展的必然趋势。人们可以在网络上的任意一 个节点,通过浏览器无缝访问来自多个WebGIS服务器发布的空间 数据,并使用来自多个服务器节点提供的服务。这使得WebGIS真 

正成为大众的T具,贴合人们的生活,利用空间信息更好的为人们 

服务。如 歌地冈、百度地图等,已经成为人们日常出行不可缺少的 

一部分。 基于WebGIS的商业平台和OGC开放式地理数据互操作规范 

的开源框架越来越多,但是对于个人用户和中小企业,如果使用商 

业WebGIS平台,就必须使用其相关的数据处理工具、制图工具、空 间数据库管理工具以及数据服务发布工具等一系列商业软件,需要 

支付高昂的费用,让人难以接受。因此,基于开源框架的WebGIS平 台成为中小企业以及科研工作者的首选,并涌现出Openlayers和 Leaflet等客户端平台。本文选择Leaflet作为WebGIS客户端的开发 

框架,Leaflet是一套界面友好、互操作性强、支持移动设备的 JavaScript开源地图库,具有简便、高效、可用性强等特点,具备开发 

者用到的所有地图功能 。 2 WebGIS的体系结构 

一般来说,WebGIS的体系结构至少包括三个部分:数据源, web服务器,客户端,如图1所示 。 

2.1数据源 数据源用户管理和处理各种数据,包括文件类型数据和空间数 

据,以及地图切片数据,可采用商业数据库如Oracle、SQL Server等, 也可采用开源数据库MySQL和PostGIS等。系统会使用多台物理计 

算机来存储和更新数据、处理数据,并加工地图,并定期对数据进行 备份,为Web服务器提供强大数据支撑。 

2.2 Web服务器 

基于OGC规范的Web服务器是系统的核心部分,用于创建基 

于OGC的WMS、WFS和WCS规范的Web服务服务。Web服务器 要求性能要好、处理速度要快,从而快速处理地图服务等各种服务。 

一56一 广—————————————]l ! 竺 兰兰 1 web客户端 

OGC Web服务规范 

数据源 

图1 WebGIS体系结构 当前主流的WebGIS都是用JavaScript直接访问Web服务, 

JavaScfipt是直接在浏览器上运行,可以直接访问Web服务并返同 结果。 

2-3客户端 客户端是支持WebG1S的各种浏览器,浏览器通过网络连接到 

Web服务器发布的空间服务,并依赖这些服务来获取地图数据、查 询、分析、统计、定位等功能,从而以可视化的形式为用户展示地图、 

文字、表格、统计图和视频等综合信息。 3 WebGIS规范和技术 

3.1 OGC规范 OGC的主旨是在分布式环境下实现地理空间数据和地理信息 

处理资源的共享,允许用户通过网络实时的获取不同系统的地理信 息 。OGC根据W3C的web服务发布了WMS(Web Map Service。 

Web地图服务),WFS(Web Feature Service,Web要素服务)和WCS 

(Web Coverage Service,地图覆盖服务)等规范,从而实现了矢量数 据和影像数据的共享。 WMS定义了GetCapabilities(用于返回服务级元数据),GetMap 

(用于返回地图影像),GetFeaturelnfo(用于返回显示在地图上的某 些特殊地理要素信息)等3种操作。能够根据用户的请求返回相应 的地图,地图的形式包括PNG、GIF、JPEG等。 

WFS定义了插入、更新、删除、检索和发现地理要素的服务,其 中GetCapabilities用于返同服务级元数据。DescribeFeatureType用于 

返回要素结构,进而可以进行查询等操作。 

GetFeature是很重要的接口,它可根据查询要求返同一个符合 GML规范的数据文档。WFS支持根据属性条件进行查询,支持根据 

空间关系进行查询,并支持属性条件和空间关系的复合查询。 WCS根据客户端请求返同影像等多种数据。包含GetCapabil— ities,GetCoverage等重要操作。其中GetCapabilities返回一个描述服 

务和XML文档,在确定要查询的数据后,GetCoverage返同数据。 

3.2 I afiet 

Leafter是一个开源的地图Javascript库,它由Universal Mind的 Vladimir AgMonkin创建。目前版本更新到1.0.3,只有38k大小.具 

有开发在线地图的大部分功能,适用于开发中大型在线GIS应用。 Leaflet提供可读性强的API文档和源码,本身不仅支持旧的浏览器 

访问,而且更好的支持HTML5和CSS3,界面简单、友好。Leaflet采 用面向对象设计,封装性好,并且提供了很多专业的第三方 Javaseript插件来扩展自身的功能,从而满足Wei GIs对地图的各种 

查询、分析、渲染等操作。 

Leaflet的核心是Map类。Map是一个地图容器.可以在其中放 置地图控件、添加图层、添加标注、添加符号、绑定事件等[51。[ ̄aflet 默认采用“L”作为命名空间,使用类似于iQuery的链式编码风格,代 

码更加精简,并且可读性强。 

3.3 GeoJSON JSON是一种轻量级的数据交换格式,基于Javascript实现, JSON独立于操作系统和编程语言,以键,值的形式组织数据。Geo— 

JSON是基于JSON的地理空间信息数据交换格式,可以对地理要素 进行编码,支持点、线、面、多点、多线、多面等几何类型.并附带几何 

对象属性,地理要素存储于Feature或者FeatureCollection中。 Leaflet支持GeoJSON格式地理信息数据,GeoJSON数据格式如下: 

(”type”:”FeatureCollection”,”featm’es”: 【{”type“:”Fea- ture”,”geometry”: type”:”Point”,”coordinates”:【102.0,0.5l】,” 

properties”:{1.propO”:”valueO”}l,(”type”:”Feature”,”geometry”:{ ”type”:”LineString”,”coordinates”: 【[102.0,0.0】,【103.0, 

1.0】,【104.0,0.0】,【105.0,”propO”:”valueO”,”pmpl”:0.O}】,{ “type”:“Feature”,“geometry”:{..type”:”Polygon”.”coordinates”:

 科技创新 2017年第16期I科技创新与应用 

【【【100.0,0.0】,【101.0,0.0】,[101.0,1.0],[100.0,1.0】, 【100.0,0.0】】】},”properties”:{”pro#”:”value0”,”propI”:{1.this”: 

”that”}}1]l 4 Leaf1et客户端的功能实现 4.1地图初始化 利用Leaflet创建地图,首先需要在Html页面中创建一个id为 

“map”的div,然后利用Leaflet的Map类初始化地图容器,代码如下 

所示: var map:L.map(“map”).setView(【39.917,l 16.396】,13); 

L.tileLayer( http://{s}.tile.osm.org/{z}/{xl/{y}.png , 

fattribution: ©<a href=”http://osm.org/copyri t”>Open— 

StreetMap</a> contributors )).addTo(map); 

上述代码中,L.map( map,)_setView([39.917,l16.396】,13)是 指根据div为map创建了Leaflet的一个Map实例.并定位到北纬 

39.917、东经lt6.396的位置,缩放级别为13级,使用的地图是 OpenStreetMap提供的切片数据。 代码执行后效果如图2所示: 

图2 LJeanet地图初始化 4.2地图基本操作 Leaflet提供了地图放大、地图缩小、地图漫游、地图全屏、地图 

定位、滚轮放大缩小、鼠标双击定位、键盘移动地图等基本操作。 

4.3查询功能 地图查询包括属性查询和空间查询,Leaflet本身没有专门的类 

或者接口来实现查询功能,需要调用WebGIS后台服务来实现,或 者利用第三方的插件来调用特定GIS服务来实现查询功能。例如, 

ESRI公司提供了esri—leaflet.js插件,用来实现Leaflet对ArcGIS REST服务的调用。L.esri.Query是esri—leaflet.js插件提供的用于查 

询的API,它不仅可以进行条件查询,还可以完成多种空间关系查 淘,如包含、被包含、相交、重叠、临近等多种空间关系。 

var southWest=L.1atLng(45.51.一122.70): 

var northEast=L.1atLng(45.52,-122.64); var bounds=L.1atLngBounds(southwest,northEast): 

var query L-esri.query(f url: https://services.arcgis.corn/tOol 6HdlMeOBI4Mb/arcgis/rest/ services/stops/FeatureServer/O,)); 

query.within(bounds); query.run(function(error,featureCollection,response){ 

console.1og( Found +featureCollection.features.1ength+ fea— 

tures )); 上述代码实现了在bounds范围内的要素的查询。 

4.4编辑功能 Leaflet提供了编辑接口,使得用户可以在地图上绘制点要素、 

线要素、多边形要素、圆形要素,并附加属性保存到后台服务器。并 可以对已有的要素修改形状和位置。 

4.5分析功能 Leaftet利用第j方插件可以实现包括缓冲区分析在内的多种