基于Leaflet的地图服务与街景的融合表达方法
发布时间:2020-05-12
摘要:以360°街景地图为空间载体,通过Leaflet库实现矢量地图服务的服务解析,再对解析数据进行三维坐标变换及格网划分分片加载,实现将矢量地图服务转换到360°街景地图空间,并解决加载效率问题;最后按照数据类型以相应的绘制方式在360°街景空间中进行表达。该融合表达方法的研究,解决了矢量地图服务与360°街景割裂表达的问题,为统一360°街景地图与传统二维地图的功能应用提供了参考。
关键词:Leaflet;街景地图;WebGL;融合表达
0引言
街景地图开创了一种全新的地图阅读方式,也开启了一个实景地图的体验模式[1-2]。自推出以来就被寄予了很高的期望并得到了广泛的关注。街景地图与传统的二维地图相比,在展现上更加直观,给人一种身临其境的观感,同时,对于周边环境的表达更加丰富立体。然而,在功能的丰富性上,街景地图相较于传统二维地图还有所欠缺,在统计分析、路线导航等功能上与传统二维地图相差很大。街景地图更多地被用于三维场景的展现,或是用于辅助表达二维地图数据,而这种辅助表达通常都是多窗口的联动。造成这一现象的很重要一个原因就是缺乏像二维地图那样的直接叠加融合矢量地图服务的能力。因此,针对该问题,本文研究了矢量地图服务与街景地图的融合表达方法,为后续的街景地图功能应用提供支撑。
1方法的设计与实现
1.1总体思路
本文以可查询、可编辑的ArcGIS要素服务为矢量地图服务的代表,研究其与360°街景地图的融合表达方法。街景地图为微小尺度下的三维地图应用,而矢量地图服务往往包含多级空间尺度下的海量地理要素,且普遍为二维平面数据。因此,为实现两者的融合,需对矢量地图服务数据进行三维坐标变换及数据分片处理。本文的总体思路设计如图1所示。
1.2服务解析
本文采用了基于Leaflet[3-4]的服务解析方法实现地图服务的解析。Leaflet是一个为建设移动设备友好的互动地图而开发的现代的、开源的JavaScript库,ESRI公司也为Leaflet库定制了读取自家服务的类库。该类库使用无须安装插件,且由于其开源性,可以很方便地定制满足于街景地图的服务解析方法。在方法的实现上,本文以Esri.Leaflet类库的L.esri.FeatureLayer作为基类,通过继承基类的创建、更新及要素的增删改等方法,创建要素服务管理类,从而实现对ArcGIS要素服务的解析,获取要素服务的解析数据。
1.3三维坐标变换
360°街景由WebGL[5-6]构建的三维场景,通常为右手三维坐标系。要素服务是以地理经纬度为XY轴极坐标系,需要将该坐标系转换为WebGL构建的场景坐标系。首先需要将经纬度坐标依据其投影带转换为平面投影坐标,这里采用了proj4js库坐标转换方法,用“proj4(src,dst,coord)”对数据进行坐标转换。转换后的投影坐标与场景坐标关系如图2所示,根据两者关系可得转换公式如下:
1.4数据分片加载
本文参照普通平面地图应用加载数据的策略,对要素服务数据在其空间参考系统下进行单一层级的格网划分。场景移动时,以当前站点为原点,根据1.3节坐标转换方法,计算得到给定范围内的全部格网,加载格网内的要素数据。
1.5实时渲染
将数据分片后的要素服务数据转换到对应屏幕坐标后,判断数据所在位置与场景中相机位置的夹角,对小于90°的数据按照不同的数据类型,采用不同的方式进行渲染。点数据在对应场景位置创建
标签附上名称、背景等属性构成点标注渲染点数据。线、面数据直接以线、面在场景中进行绘制。
2方法验证
本文以某市360°街景为对象,验证ArcGIS要素服务与360°街景融合表达方法的可行性。要素服务包含4类点数据、道路线及道路面数据,如图3(a)所示。4类点数据类型如图3(b)所示。要素服务在全景中的表达情况如图4所示。通过图层形式控制服务数据的开关显示,点数据以标注的形式进行表达并以名称进行区分。线面分别以红色线及面在360°街景中进行表达。
以地图某一局部验证要素服务在二维地图与在全景中的位置一致性,如图5(a)—图5(d)所示。图5(a)、图5(b)分别为两个视角的全景,图5(a)中左侧上面椭圆内是公交站亭,右侧是停车场。图5(b)中左侧上面椭圆内是公厕指示牌,右侧是公交站亭。将图5(a)、图5(b)右下角放大分别对应图5(c)、图5(d),参照图3图例,可发现两者一致。并且在图5(a)、图5(b)全景中也可直接观察到道路两侧公交站亭的位置与点标注一致。
推荐阅读:测绘高级职称论文适合哪些期刊
3结束语
本文以要素服务作为矢量地图服务代表,通过研究矢量地图服务解析方法,实现数据的解析;并对解析后的数据进行三维坐标变换,将二维的矢量地图服务数据转换到三维的360°街景空间内。最后,考虑加载效率问题,研究数据分片的方法,将分片后数据按照不同类型,以不同的方式在360°街景中进行表达。并以某市360°街景为对象,验证了方法的可行性。
本文研究内容实现了传统二维地图服务数据在360°街景中的融合表达,解决了二维矢量地图服务数据与360°街景割裂表达的问题。融合后的矢量数据结合360°街景自身的三维空间位置完备性,可进一步实现统计分析、路线导航等成熟的二维平台功能,为丰富360°街景的功能应用提供参照,具有较强的实用性。