||全球POI在线抽取方法研究

教育   2024-11-06 18:31   云南  
点击上方蓝字可加关注
微信公号:ArcGisdada
互助、共享、学习

编 者 语:

文章通过国内(百度地图)、国外(OpenStreetMap)POI的在线抽取研究向我们展示了抽取流程、方法,并解释了POI的定义内涵。对比分析抽取方法的数据内含量及承载量,选取合适的抽取方法。


杨瑞杰,刘海砚,郭文月,李 静,张
来源:地理空间信息20172
要:
对从互联网上抽取全球地理兴趣点进行研究,国内对以百度地图为基础的POI抽取方法进行探讨,国外对从OpenStreetMap数据中抽取POI数据进行了分析,分别针对这两类数据的POI抽取提出较为高效、准确的方法,确保提取的POI质量,实现了全球POI的快速在线抽取。
关键词:
POI ;抽取;互联网;OSM;百度地图
POIpoint of interest,兴趣点)在地理空间信息数据中用点要素表示,它通常代表一类真实的地理实体。POI主要指与人们日常生活中相关的地点,如医院、宾馆、餐饮、银行、景点和地标等,在智能交通、应急指挥等各类LBS服务领域发挥着重要作用[1]。传统的POI获取方式需要投入大量人力及设备进行“扫街式”采集,这一采集方式具有获取方式复杂、一次获取的数据量较小、更新周期长、人力物力耗费高等特点。随着国家经济、军事、环境等全球化的发展,对全球地理信息数据的需求也越来越强烈。POI数据也不例外,如何将POI信息从互联网中抽取出来,提升POI数据的质量,是空间领域相关研究者的研究热点之一。
针对获取全球高质量的POI数据面临的问题,提出了从互联网上抽取全球兴趣点的的一种方法。基本思想如下:互联网信息冗杂,但地图相关网站分类明确,国内百度地图拥有丰富的POI资源,并且提供了较为完善的开发接口,国外开源的地图OSMopen street map,开放街道地图)数据完全开放,并且在欧洲等地区数据丰富,因此,国内选取百度地图,国外选择OSM分别作为POI提取数据源,针对两种数据源的数据格式和开放程度制订了不同的抽取技术方案,百度地图POI数据的获取主要是利用百度地图API逐坐标进行爬取OSM 数据虽然完全开放,但数据格式常用矢量格式不同,数据转换是从OSM中提取POI的关键

1百度地图POI抽取方法研究

1.1百度地图与百度地图JavaScript API

百度地图作为国内的主要互联网商业地图提供者之一,其POI的丰富程度与其他地图相比要更加丰富。例如以郑州站为中心,以酒店为关键词搜索郑州站周围1km范围的的酒店类POI信息,百度地图返回POI信息445条,国内另一知名互联网地图商返回POI信息271条。
百度地图具有丰富的POI信息,但数据是非开放的,和现在大部分网络地图一样都是采用切片传输在浏览器端显示,无法直接从百度地图上获取POI点要素的矢量数据。不过百度地图针对开发者提供了适用于各种终端支持HTML5 特性的地图开发,因此可以利用百度地图JavaScript API采用适当方法来获取百度地图的POI 信息[2]
1.2 抽取方法
抽取百度地图POI信息主要是利用了百度地图JavaScript API的服务类接口,服务类主要提供LBS相关检索和服务。首先,需要确定抽取POI区域坐标范围,根据坐标范围设定步长逐坐标指定关键词或不指定关键词检索相关POI,获取返回的POI信息。百度地图POI获取流程如图1(黄色为关键技术)。
本方法的关键是逐坐标进行检索,首先设定合适的坐标检索步长,步长设置过大可能导致检索结果缺失;步长设置过小可能导致检索点密度过大致使POI提取效率低下,具体根据实验区域不同设置合理的步长。用鼠标绘制出POI 抽取区域,利用百度地图的绘图接口获取抽取区域多边形边界坐标,根据边界坐标和设定步长计算得出检索点数组。得到检索点数组后,通常使用两种方法获得区域内的POI信息:一种是利用百度地图的Geocoder类接口逐一获取检索点的GeocoderResultsurroundingPoisGeocoder类在用户进行地址解析的同时返回该点附近的POI信息,其输入参数仅为一个检索中心点坐标;另一种是利用百度地图的LocalSearch类并且指定关键词逐一获取检索点的LocalResultLocalSearch用于位置检索、周边检索和范围检索,其输入参数为检索POI关键词和检索点中心坐标,此方法的关键词依据百度的POI分类分别设置为“美食”、“酒店”、“休闲娱乐”、“交通”、“生活服务”。两种方法的返回结果都为LocalResultPoi类,但前者返回的结果被百度地图进行了删减,只保留了POI名字、坐标和所在城市信息;后者返回的结果则是完整的LocalResultPoi 类结构,结构如表1所示[2] 

 

1.3 结果对比
依据上述方法,建立了一个国内地理兴趣点抽取的实验系统,此系统基于百度地图JavaScript API,主要通过地图界面层对地图进行基本操作并绘制POI抽取区域,工具层根据所选区域对该区域POI进行抽取并保存到Excel文件中。分别使用百度地图JavaScript APIGeocoder类和LocalSearch类以郑州市为实验区域进行POI抽取,结果如表2(部分),可以发现方法一所获POI数据只有POI名称和坐标信息,而方法二所获POI数据信息较方法一更为丰富,包含了电话、详情页网站、POI类型信息等,如表3所示(部分)。 

2 OSM地图POI抽取方法研究

2.1 OSMOSM数据

志愿者地理信息(VGI)在GIS领域一直受到关注。开放街道地图(OSM)就是VGI全球用户参与的一个很好的例子。OSM旨在建立一个任何人都可以编辑的全球地理数据库,该项目具有很高的社会价值和使用价值。OSMSteve Coast20047月始创,是一种典型的志愿者地理信息。近年来,OSM数据量增长迅速,截止2014-03-01OSM数据量的总体情况:GPS数据点总共3829201844个;节点数量2223977668个;路径数量219537496个;关系数量2406517条,参与编辑的总用户数量1528868[4]。由于OSM是一个完全自由开放的网络地图协作计划,因此对OSM的数据质量和有效性评价就成了一个至关重要的问题。Alex Mauer2008 年对OSMGoogle地图上的196个国家或地区的首府数据详细程度比较,认为OSM数据略优于Google,在欧洲OSM胜于Google,在亚洲和非洲OSM的覆盖率略高于Google,而在南美与北美洲OSM的覆盖程度则落后于Google很多, 在大洋洲Google略胜于OSM[3-5]。由于GoogleOSM数据都在持续稳定地增长,因此目前二者覆盖的情况还需要重新评估,但从其他相关研究可以得到的结论是在覆盖程度和准确性上OSMGoogle不相上下,数据的完整性、专题准确性和传统矢量数据源以及Google Maps相比则相差甚远[6]。但是重要的是OSM数据完全开源,可以作为境外数据的一个重要来源。
OpenStreetMap中的地理实体(例如道路或建筑物)用其基本的数据结构(nodewayrelation)附加标签(tag)来描述,通过XML(可扩展性标记语言)来存储数据。每个标签描述了nodewayrelation所代表的地理实体的地理属性。OpenStreetMap的自由标签系统可以不受限制地描述每个要素的属性。OSM组织确定某些键和值的组合为最常用的标签,并以其充当非正式的标准[7]。但是,用户也可以自由创建新的标签,以提高地理实体属性的详细程度或描述以前未出现过的地理实体的属性。OSM 将地理实体分为31 个要素类(如图2 A-Z),每个类下边又根据标签的key value 分为若干小类。
2.2 OSM 数据转换为POI 点要素方法研究
OSM 的基本数据结构有nodewayrelationnode 中有一部分表示的是点要素,另一部分则表示way 中的节点;way 中有一部分表示线要素,另一部分闭合的way 则表示面要素,而relation 则描述不同nodeway 之间的联系,而只有node 中表示点要素和way中表示面要素的name 值不为空的这部分才是要抽取的POI 信息。node 数据结构如下:
<node id="2932851641"lat="40.9040159"
lon="45.1505862"version="1"timestamp="2014-06-
25T13:26:33Z"changeset="23149322"uid="248521"
user="DrDimedrol">
<tagk="historic"v="monument"/>
<tagk="name"v="Mother Armenia"/>
</node>
OSM的数据结构显然与常见的以点、线、面作为基本要素的数据结构不同,从中抽取出POI要素的一种思路是直接将OSM数据转换为常用的SHP格式,然后将SHP格式中的点要素作为POI要素;另一种思路则是通过OSM的标签中的keyvalue直接提取出符合要求的要素信息。

第一种思路的实现较为简单,首先利用ArcGIS_Editor_OSM工具或第三方工具将获取的OSM数据转换为点、线、面要素的SHP格式,然后直接将获取的点要素作为提取到的POI数据在转换过程中,由于数据定义等各方面的差异会导致数据缺失,此外转换过程中不仅要进行点要素转换,而且需要线要素转换、面要素转换,但只有点要素是最后所需要提取的POI要素,所以该方法存在大量冗余操作,不利于大量数据的处理。
第一种思路存在种种弊端,不是从OSM的数据中提取POI的最佳方法。不过根据OSM的数据结构特点可以发现POI信息其实就隐藏在OSM的标签结构中的keyvalue中,OSM将地理实体分为28个要素类,每个类下边又根据标签的keyvalue分为若干小类,因此根据不同的keyvalue可以确定该要素是否属于POI,并且可以确定所属的POI类别[8]。首先,建立一个不同keyvalue对应的POI分类的模板,确定需要提取的要素与类别。然后,对数据中所有要素标签中的keyvalue进行遍历,并与上述建立的模板进行匹配,满足匹配条件则保存该要素的所有keyvalue及其坐标,最终实现对整个数据的POI提取。标签对应分类模板如下(“=”前为key的值,“=”后为value的值,后边数字代表分类编号):

public_transport=stop_position 161

train=yes 167

subway=yes 166

monorail=yes 167

tram=yes 168

bus=yes 161

railway=

=station 167

station=subway 166

=tram_stop 168

2.3 抽取实验结果
根据上一节的思路,使用Java编程语言,实现第二种思路,模板使用上节所述模板,分别以中国台湾地区OSMPBF格式(OSM数据的压缩格式)最新(2015-10-06)数据(38.77MB)和Albania地区OSMPBF格式最新(2015-10-06)数据(15.24MB)作为实验区域,进行POI抽取。其中中国台湾地区抽取到POI数据70758条,用时9306msAlbania地区抽取到POI数据5252条,用时3850ms,结果如表45,分别获取到了POI的名称、OSMID、坐标、类别等属性信息。

3 结 语
从百度地图和OSM上抽取POI数据的相关方法,该方法实现了从百度地图上获取指定区域范围的POI名称、坐标及其他属性信息;从OSM上快速、高效地获取相关地区POI坐标及分类信息,提供了一套全球兴趣点数据在线抽取的解决方案,为实际应用中POI的快速获取提供了有力的保障。

参考文献:

[1] 陈瑞. 基于多源POI 数据匹配融合方法及研究[D].兰州:兰州大学,2014

[2] 百度地图. 百度地图JS 开发文档 [EB/OL].[2015-09-05],http://lbsyun.baidu.com/index.php?title=jspopular

[3] 陈舒燕. 基于OpenStreetMap 的出行可达性分析与实现[D].上海: 上海师范大学,2010

[4] Open Street Map.Open Street Map Stats Report[EB/OL].

[2014-03-01],http://www.openstr-eetmap.org/stats/data_stats.html

[5] M A U E R A . Ope nS t r e e t M a p v s . G o o g l e / T e l e A t l a sCoverageStreet[EB/OL].[2008-12-12],http://blog.dc.esri.com/2008/12/12/Openstreetmap-vs-Googleteleatlas-Street-Coverage/

[6] HAKLAY M, WERBER P.Open Street Map:User-Generated Street Maps [J].Pervasive Computing,2008,7(4):8-12

[7] Open Street Map. Map Features-Primary Features [EB/OL].[2015-10-30],http://wiki.openstreetmap.org/wiki/Map_Features#Primary_Features

[8] MORB Z. OsmPoisPbf[EB/OL].[2015-10-30],https://github.com/MorbZ/OsmPoisPbf

最后,小编提醒,由于微信修改了推送规则,没有经常留言或点“在看”的,会慢慢地收不到推送!如果你还想每天看到我们的推送,请将ArcGis爱学习加为星标或每次看完后点击一下页面下端的“赞”“在看”,拜托了!
 ▼  往期精彩回顾
  ▼
1、ArcGis汇总2023(五年为期,学有所成)
2、ArcGis中的地理坐标系和投影坐标系?
3、DEM下载及水系提取、缓冲区建立
4、如何制作封面图?(鹰眼图制作)
5、范围指示器和格网示例

ArcGis爱学习
共同学习,共同成长……
 最新文章