一种城市通行空间内混合路径分析模型研究

2019-09-09 04:45席唱白倪建华王结臣
测绘工程 2019年5期
关键词:栅格百度客户端

符 峥,陈 杰,席唱白,倪建华,王结臣

(南京大学 地理与海洋科学学院,江苏 南京 210023)

随着计算机网络技术的发展,网络地理信息系统(Web geographic information system, WebGIS)得到广泛应用。WebGIS以地理要素和位置数据为基础,提供位置信息服务[1](Location-based services),凭借操作简单、数据丰富、响应快速、实用性强、交互良好等优势,在位置定位、导航管理等方面得到广泛的应用[2-3],促进公共交通[4-5]、自动驾驶[6]、物流[7-8]等技术或服务的快速发展。

路径分析是GIS领域的重要研究主题,也是GIS应用中导航、路径规划等功能的技术基础。国内外多位学者对城市空间下路径分析方法与应用进行探索,如杨雪[9]等在ComGIS的基础上,应用C#开发语言和ArcEngine组件技术,实现购物广场导航中的路径分析。陈少沛[10]等提出一种多模式城市交通网络拓扑模型,并应用ArcGIS二次开发平台实现城市交通环境下多模式出行路径分析功能。Taleai[11]等结合多指标评价,提出一种在城市中搜索健康步行路径的分析方法。

路径分析方法多以矢量路网描述城市通行空间,但在现实中,城市通行空间既包括道路等具有明显线性引导和约束的空间,又包括广场、公园等可以在空间范围内自由通行的空间。在描述自由通行空间内行人运动轨迹时,往往由主要道路上的轨迹表现,在非道路区域的路径分析上有欠缺。而现实中行人在自由通行空间内活动时,往往不会沿着主要道路进行运动,而是大量地在非道路区域通行,因此寻找非道路区域中的路径分析服务有着重要的作用。如果能建立一套完整覆盖城市空间下通行过程的分析模型,有望提高路径分析地准确性,提供更完善的路径分析服务。

基于以上问题,提出一种基于WebGIS的城市通行空间混合路径分析服务的模型,目的是解决网络路径分析在非道路区域无法进行的问题,在完整覆盖城市空间下提供路径分析服务。结合JavaScript Web技术和百度地图开放平台,构建一个混合路径分析服务原型系统,验证该模型实现的可行性。

1 基本模型

参考网络电子地图的框架[12]和WebGIS应用服务模型[13],提出基于WebGIS的城市通行空间混合路径分析服务模型。该模型包括原始数据、系统资源、系统功能和可视化表达等4个层次的结构见图1。第一层是原始数据。收集不同类型的原始数据,包括遥感数据、矢量道路数据和位置数据等,通过处理软件对数据进行矫正、去冗、分类、格式转换等数据预处理,得到可以使用的基础数据,也就是模型中的第二层——系统资源。系统资源是高度抽象、结构化的数据,通过组织和存储到对应数据库中,为系统功能提供数据。第三层是系统功能,首先基于电子地图应用,提供基本的网络服务和数据存取功能,并针对混合路径分析服务的功能需求,在此基础上开发混合路径分析功能,并将分析结果转化成标准格式,传输至客户端。第四层是可视化表达,即在客户端对该系统的各项服务功能进行可视化,提供交互,将处理完成的数据转换成可视化信息呈现给用户。

图1 基于WebGIS的城市通行空间混合路径分析服务模型框架

2 关键步骤实现

2.1 原始数据获取与预处理

在实现基于WebGIS的混合路径分析服务模型过程中,需要收集多种类型数据,包括矢量路网数据、栅格数据、位置点数据等。由于需要结合电子地图应用实现系统功能,原始数据收集完成后,需要进行数据预处理,转化成能够在电子地图平台上集成的资源。

1)路网资源。现有电子地图应用平台提供路网数据资源,通过平台提供的开发接口,直接使用平台上的路网数据。实验中使用百度地图JavaScript API提供的路网数据作为路网资源。

2)栅格资源。在混合路径分析服务中,要利用栅格数据进行路径计算,必须要对栅格数据进行分类。通常使用遥感影像作为数据源,按照建筑、绿地、水域、道路、广场等不同地物类型进行分类,然后将人自由通行的地物类型(如道路、广场等)合并成可通行类型;将人难以到达的地物类型(如建筑、水域、绿地等)合并成不可通行类型。很多情况下无法获得空间分辨率足够实现上述分类的遥感影像,因此可根据该区域的平面图或矢量地图,通过数据编辑、矢量-栅格转换等方式获得栅格数据并进行分类。分类完成后将分类结果转换成2位灰度位图,0代表可通行类型,1代表不可通行类型。

为了保证栅格数据和矢量数据能在应用中集成,两种数据必须使用相同的空间参考坐标系和地图投影。以百度地图提供的矢量路网资源为参考,栅格数据应使用WGS-84坐标系和墨卡托投影。百度地图坐标经过GCJ-02和BD-09两种加密算法的二次加密,在实验中,使用多点对多项式纠正的方法使栅格数据与矢量路网位置保持一致。

3)位置点资源。部分学者在研究时使用兴趣点(point-of-interest,POI)作为点数据标记地物或参与路径分析[14-15]。但在电子地图应用中,大部分POI是位于路网空间中的,缺少能够用于可自由通行空间路径分析的点数据,本模型有必要对其进行补充。可采用借助百度地图JavaScript API,从GPS获取或用户手动输入等方法,收集用户所在经纬度,获得位置数据,并结合其他属性形成位置点资源。

2.2 数据组织与存储

模型所使用的3种资源中,路网资源可以通过调用百度地图JavaScript API直接使用,因此主要考虑位置点资源和栅格数据资源的组织与存储。

1)位置点资源组织与存储。根据位置数据获取方法的特点,使用百度地图开放平台提供的LBS云存储位置点资源。LBS云是百度地图开放平台提供的实时存储、检索、展示位置数据的平台,具有存取方便(提供基于HTTP协议的云存储与检索API)、检索性能优异(集成检索引擎)、数据展现高效(在服务端将数据渲染为矢量数据图层传输至浏览器端显示)的特点。LBS云本质上是一个关系型数据库,可以创建位置数据表(geotable),并在表中创建自定义扩展列(column)和存储位置数据(poi),其格式和数据组织形式与关系型数据库中的表(table),列(column)和记录(tuple)的对应关系如表1所示。

表1 LBS云与关系型数据库对应关系

在城市通行空间混合路径分析服务中,位置数据主要功能有:记录用户创建的地理位置点信息;标记位置数据所在地理位置的地物类型;作为混合路径分析的输入参数。根据以上功能,在LBS云中创建的位置数据表结构如表2所示。

表2 位置数据表结构

2)栅格数据资源组织与存储。在城市通行空间混合路径分析服务中,栅格数据用于描述城市中小范围可自由通行的空间,并用于该空间内的路径计算。建立栅格空间数据库的方法有很多种,常见的方式有使用基于关系数据库系统的空间数据库(如Intergraph的MGE)[16]、基于关系-对象数据库系统的空间数据库(Oracle + ESRI的ArcSDE空间数据引擎)[17]等。这些方式都需要在系统运行环境下部署大量组件,且操作逻辑复杂,适合在C/S架构下的大型GIS系统中使用,不适合轻量WebGIS应用的开发。

综合分析以上需求与问题,在栅格数据资源组织设计中采用了基于对象的数据组织方式,将每一个栅格资源作为一个独立的对象进行存储,栅格的空间信息作为该栅格对象的属性存储在对象记录内。由于栅格对象的大小是变长的,且在分析过程中基本不涉及到栅格数据的拓扑问题,所以使用非关系型数据库存储栅格对象能有效解决数据冗余。经过探索和比较,本文选用MongoDB存储栅格数据。MongoDB将数据存储为一个文档,数据结构由键/值对组成,类似于JSON对象。用户输入的栅格数据对象由MongoDB序列化为BSON文件,通过Node.js平台提供的node-mongodb-native数据库驱动存取。

为简化研究过程,使用的栅格资源形状均为矩形,矩形范围内包含描述可自由通行空间的栅格对象主体。根据本文提出的混合路径分析实现方法,一个栅格对象需要存储的信息包括该栅格对象的唯一标识(ID)、栅格对象的Base64格式编码(raster_base64)、栅格对象名称(name)、栅格对象的图像分辨率(resolution)、矩形对象的东北角与西南角经纬度(corner)、地物出口所在像元位置(exit)等,并对corner这一键值建立索引。单个数据文档的结构如图2所示。

{“ID”:<栅格对象ID>,“raster_base64”:<栅格对象base64编码>,“name”:<栅格对象名称>“resolution”:[<横向像元个数>,<纵向像元个数>]“corner”:[[<东北角经度>,<东北角纬度>],[<西南角经度>,<西南角纬度>]], “exit”:[x, y]}

图2 栅格数据文档

2.3 混合路径分析服务

目前主流电子地图应用提供的基于矢量数据的网络路径分析服务,具有分析速度快、数据传输量小、本地缓存少等优点。但随着通信技术的不断发展和我国高速通信服务的全面覆盖,以及消费级硬件(如笔记本电脑、智能手机)与服务器计算水平的提高,对栅格数据进行成为可能。结合路径分析服务对效率和表达的需求,提出“网络路径分析+栅格路径计算”的混合路径分析实现方法。

首先从客户端获得路径分析的起点和终点经纬度,通过用户输入或GPS定位方式获取,获取完成后发送至服务器。服务器首先对起、终点进行位置识别,查询栅格数据库中所有栅格对象的corner键值。由于所有栅格对象为矩形范围,将起点、终点经纬度与每个对象的东北角、西南角经纬度相比较,即可判断起、终点是否位于某一栅格对象范围内,然后将包含有起、终点的栅格对象取出。由于栅格数据与矢量数据结合存在边界问题,因此使用指定栅格对象出口的方式,划定路网与栅格对象的边界,栅格对象的出口即为exit键值。位置识别完成后,路径分析分为两个子任务。其一是通过现有电子地图应用提供的网络路径分析功能,计算不在栅格范围内的点至栅格对象出口位置的路径,接收返回的路径分析结果。其二是应用栅格路径计算方法,计算栅格范围内点至栅格对象出口位置的路径。以上两个子任务完成后,在服务器端融合分析结果,传输至客户端进行显示。上述概括如图3所示。

图3 混合路径分析实现流程

3 原型系统构建

3.1 系统框架

基于WebGIS的城市通行空间混合路径分析模型、基于JavaScript Web和百度地图API相关技术,设计混合路径分析服务原型系统,其包括客户端、混合路径分析服务平台和数据库见图4。客户端的主要作用是接收和展示服务平台发送的数据(包括瓦片地图、路网、混合路径分析结果),并面向用户提供操作交互,以及获取用户的位置信息作为系统进行混合路径分析所需的位置点资源。混合路径分析服务平台是系统的核心,也是原型系统构建与实现的主要内容。混合路径分析服务平台主要分为两个部分,其一是向客户端提供基础WebGIS服务,实现电子地图浏览、位置查询、地物信息获取等功能,并接收和响应客户端发送的数据与请求;其二是混合路径分析,从对应数据库中获得混合路径分析需要的栅格、路网、位置点数据,根据模型中的混合路径分析服务实现流程,使用具体路径分析算法或服务接口进行分析,并融合分析结果,发送至客户端显示。数据按照模型中提出的组织与存储方法,存储到对应数据库中。整个混合路径分析服务原型系统进行非本地数据传输时,均通过HTTP协议通信进行。

图4 混合路径分析原型系统框架

3.2 系统实现

实现过程基于Win10操作系统,采用JavaScript语言在Node.js平台上完成原型系统开发。在开发过程中,借助百度地图开放平台提供的API完成系统的部分功能。

1)基于百度地图开放平台JavaScript API实现客户端。客户端采用百度地图开放平台的JavaScript API(简称Baidu API)。Baidu API是一套面向Web程序开发者的应用程序接口,使用JavaScript语言编写。它提供多项基础地图服务,包括地图操作、矢量和卫星影像数据的获取与显示、地图标注编辑与查询等。在返回给客户端的index.html中,通过