LBS之三:互联网地图数据与标准库

1 互联网地图

  • 地图与互联网地图

地图(Map)是按照一定的法则,有选择地以二维或多维形式与手段在平面或球面上表示地球(或其它星球若干现象的图形或图像,它具有严格的数学基础、符号系统、文字注记,并能用地图概括原则,科学地反映出自然和社会经济现象的分布特征及其相互关系[1]。(百度百科:地图(国家版图最主要的表现形式)_百度百科)

抛开官方的地图定义,地图从古代羊皮纸走到今天的互联网时代的数字地图/电子地图,其本质并没有改变,地图的种类也演变出多种形式,但本文主要聚焦在与我们日常生活紧密相关的数字/电子地图,而非官方的城市测绘地图,两者之间还是有较大差别,前者更关注精准城市规划测绘与国土资源管理等,后者有更丰富的日常生活要素(公交地铁、餐饮娱乐等)另数学参考系也明显不同--国家官方测绘地图是采用中国自己地球坐标系(北京54、西安80和CGC2000等),而本文聚焦的互联网使用地图(高德百度腾讯等)则是采用与GPS相同的WGS全球坐标系,当然会经过加密偏移处理。

  • 空间数据与地图数据

地图数据是空间数据的一种,本文后续研究所涉及主要是城市末端时空数据--点线面地理空间几何及属性要素数据,它们均属于矢量地图数据的一部分。按功能类型与来源分类,空间数据来源和类型繁多,概括起来主要可以分为地图数据、影像数据、地形数据、属性数据和元数据。

(1)地图数据:这类数据主要来源于各种类型的普通地图和专题地图,这些地图的内容非常丰富。

(2)遥感影像数据:这类数据主要来源于卫星、航空遥感,包括多平台、多层面、多种传感器、多时相、多光谱、多角度和多种分辨率的遥感影像数据,构成多元海量数据,是空间数据库最有用、最廉价、利用率最低的数据源之一。

(3)地形数据:这类数据来源于地形等高线图的数字化,已建立的数据高程模型(DEM)和其他实测的地形数据。

(4)属性数据:这类数据主要来源于各类调查统计报告、实测数据、文献资料等。

1.1 地图数据的构成

一张互联网地图图像的数据组成:多要素图层的叠加与渲染的结果。

(1)一张最终展示的互联网地图图像生成过程:

1.2 地图数据的采集

地图数据的原始采集,是要将物理世界搬到移动电脑或移动设备的屏幕里,将物理世界事物变成0101格式,方式有两个:

(1)实地外采:是指持有测绘作业证的测绘人员利用专业的测绘仪器在真实世界中实地测量所得到的数据,过程非常艰辛,周期也十分漫长,现在需要外业大规模采集的已经比较少见,2012年前还是规模非常宏大的。

(2)航片卫片街景制作:根据高精度航空照片或者卫星照片街景照片等,沿着建筑物或路网的轮廓进行人工勾勒标注和程序图像识别(OCR),最终生成数据。由于航片的精度越来越高且可以内业,故越来越多的采用此方法。

目前国内的做实地外采的主要是高德和四维图新,前面提及的测绘作业证说明实地外采是需要测绘资质的,并非人人都可以,牌照是行业壁垒,基本无法逾越。百度和腾讯分别通过收购瑞图万方和科菱航睿获得了甲级测绘资质。放眼全球,Google地图暂时无人可超越,不论是数据制作工艺,或是前沿探索,以及和现实世界的结合(Pokemon GO),Google都走在无人区。总而言之,地图数据的终极理想是完美还原这个真实的世界。但在现在的互联网地图产商中,地图数据的来源有了更多途径:

(1)数据挖掘:通过原有采集数据、互联网产品交互等多源数据的融合,挖掘识别新的地图要素信息是移动互联网时代地图数据更新的重要手段之一。例如当前通过电商物流地址可以挖掘出更多最新地址POI;通过大量导航用户的轨迹信息,挖掘一条新的道路;通过公交支付与定位数据发现公交/地铁站点POI;通过遥感图像与道路信息,发现地图新的特定功能区(AOI)等。

(2)UGC:随着移动互联网的发展,互联网与用户的交互更频繁且实时,用户反馈的数量出现明显上升,再加上基于LBS的第三方应用越来越多,UGC的力量成为地图数据更新的重要组成部分。用户反馈、骑手标注、商户提交等,一手信息越来越多,价值越来越大,UGC对于移动互联的地图数据更新重要性不言而喻。除了移动应用产品收集用户数据,例如滴滴打车、美团外卖等,地图厂商甚至会有专门的UGC地图采集产品,如高德做了独立APP高小德,百度做了淘金等用来采集POI、AOI等地图数据。

1.3 地图数据的形态

地图数据的形态主要有图形与图像2类,其分别对应矢量与栅格的数据存储格式,日所常见互联网地图矢量与栅格空间数据主要有

  • 矢量数据:

矢量数据结构是对矢量数据模型进行数据的组织。通过记录实体坐标及其关系,尽可能精确地表现点、线、多边形等地理实体,坐标空间设为连续,允许任意位置、长度和面积的精确定义。矢量数据结构直接以几何空间坐标为基础,记录取样点坐标。矢量结构的显著特点:定位明显,属性隐含。矢量数据主要包含:

(1)点:POI、城市各类设施点数据等、轨迹点(带时间维度的点

(2)线:道路、轨迹线

(3)面:AOI,区域范围的电子围栏等

  • 栅格数据:

将空间分割成有规律的网格,每一个网格称为一个单元,并在各单元上赋予相应的属性值来表示实体的一种数据形式。以规则的阵列来表示空间地物或现象分布的数据组织,组织中的每个数据表示地物或现象的非几何属性特征。其显著特点:属性明显,定位隐含。栅格像元方式呈现的数据有地图图像,遥感地图图像等。

2 地理信息系统

地理信息系统(GIS , Geographic Information System),它是用于采集、存储、处理、分析、检索和显示空间数据的计算机系统--地理空间数据的数据管理系统。与地图相比,GIS具备的先天优势是将数据的存储与数据的表达进行分离,因此基于相同的基础数据能够产生出各种不同的产品。

2.1 地理空间数据标准

  • 为什么要建立地理信息规范标准?--空间数据共享和互操作

随着GIS技术的发展,特别是网络技术应用到地理信息系统建设中,与它有关的标准化也成为一个必须解决的问题。一个好的标准是促进、指导和保证高效率、高质量地理信息交流不可缺少的部分。OpenGIS标准:美国OGC(OpenGIS协会, OpenGIS Consortium) 提出,ISO/TC 211地球信息科学专业委员会,地理信息/地球信息科学标准--目前最多软件厂商实现标准。

Open GIS规范是由开放地理信息系统协会(Open GIS Consortium,简称OGC)制定的一系列开放标准和接口。其目标是,制定一个规范,使得应用系统开发者可以在单一的环境和单一的工作流中,使用分布于网上的任何地理数据和地理处理。它致力建立一个无“边界”的、分布的、基于构件的地理数据互操作环境,与传统的地理信息处理技术相比,基于该规范的GIS软件将具有很好的可扩展性、可升级性、可移植性、开放性、互操作性和易用性。Open GIS规范主要定义了以下三个模型。

(1)开放的地理数据(open geodata)模型

定义了一个概括的、公用的基本地理信息类型集合,该集合可以被应用于特定领域的地理数据建模。OpenGIS将现实世界抽象成为两类基本对象:要素(feature)和覆盖(coverage),前者描述现实世界中的实体对象,后者描述现实世界中的现象。对于要素,将与空间坐标相关的属性抽取出来,称为几何体(geometry)。同时,OpenGIS又定义了要素的时空参照系统、语义(semantics)以及元数据来对要素进行描述,以便于共享和互操作。

(2)Open GIS服务

定义了一个服务的集合,该集合用于访问地理数据模型中定义的地理类型,提供了同一信息团体(information community)内不同用户之间,或者不同信息团体之间的地理数据共享能力。服务模型中的主要组成为:

1)要素实例(feature instance)的创建过程;

2)获取地理数据的方法;

3)时空参照系统的获取和转换;

4)语义转换。

(3)信息团体模型

信息团体模型的目的是建立一种途径,使得信息团体或用户维护对数据进行分类和共享所遵循的定义;实现一种有效的、更为精确的方式,使不同信息团体之间可以共享数据,尽管他们并不熟悉对方的地理要素定义。信息团体模型定义了一种转换模式,使得不同信息团体的“地理要素辞典”可以自动“翻译”。

2.2 地理空间数据库/软件简介

地理空间数据库管理的空间数据内容主要包括:

1)空间数据--实体的点、线、区域矢量表达。 

2)属性数据--实体的名称、类别等属性。 

3)空间数据计算引擎--地理空间数据分析计算、操作与查询。 

目前,在国土资源及互联网应用领域,常用的地理空间数据库与开源算法库主要有:

(1)桌面软件:

  • ArcGIS--GIS领域最专业的商业软件

ArcGIS:ArcGIS是美国ESRI公司在全面整合了GIS与数据库、软件工程、人工智能、网络技术及其他多方面的计算机主流技术之后,成功地推出的代表GIS最高技术水平的全系列GIS产品。ArcGIS作为一个可伸缩的平台,无论是在桌面,在服务器,在野外还是通过Web,为个人用户也为群体用户提供GIS的功能。ArcGIS系列软件具有强大的地图制作、空间数据管理、空间分析、空间信息整合、发布与共享的能力,其套件包括: 1)ArcGIS Desktop――一个专业GIS应用的完整套件 2)ArcGIS Engine――为定制开发GIS应用的嵌入式开发组件 3)服务端GIS――ArcSDE,ArcIMS和ArcGIS Server 4)移动GIS――ArcPad?以及为平板电脑使用的ArcGIS Desktop和Engine

  • QGIS--互联网行业最常用开源软件

QGIS是一个用户界面友好的桌面地理信息系统,可运行在LinuxUnix、Mac OSX和Windows等平台之上。QGIS是基于Qt,使用C++开发的一个用户界面友好、跨平台的开源版桌面地理信息系统。

  • SuperMap&MapGIS等--ArcGIS等的国产替代品

SuperMap:是由北京超图&中地数码公司开发的新一代国产GIS软件系统,是一套全组件开放式GIS软件平台,包括组件式GIS开发平台、服务式GIS开发平台、嵌入式GIS开发平台、桌面GIS平台、导航应用开发平台以及相关的空间数据生产、加工和管理工具。可以直接用于应用系统开发,也可以作为专业应用平台开发的基础性软件

(2)开源地理空间数据处理代码库:

  • Geotools--OGC标准的最佳实现及其他众多开源库基础框架类库提供者

GeoTools 是英国利兹大学(University of Leeds)的James Macgll 从1996 年开始研发的一个操作和显示地图的开源Java 代码库,提供了一系列符合规范的操作地理空间数据的方法,例如可以用它来实现一个地理信息系统(GIS)。GeoTools库在开发时执行OGC规范。GeoTools 使用Java 语言和面向对象方法,按照功能划分模块,结构清晰,可以让开发人员随意修改,方便地完成从源代码级的定制。第二版的GeoTools 正朝着方便移植、简练、可交互、可定制、数据格式无关这几个方向发展。

  • JTS/Geos--常用开源java/C++地理空间分析库

JTS(JTS Topology Suite)由加拿大的VividSolutions公司开发,是一个用Java语言描述的几何拓扑套件,遵循OpenGIS的Simple Feature Specification,封装了2D几何类型和非常多的空间分析操作,它提供了一套空间数据操作的核心算法,而且包含了不少常见的计算几何算法实现,JTS解决了空间对象之间拓扑关系的判定和计算,并提供很多有用的算法来解决对象的面积,长度等等的问题,是处理空间数据图形关系非常好的解决方案。JTS被广泛地应用在开源GIS软件中,作为GeoTools和基于GeoTools的GeoServer和uDig的底层库。C++版本的拓扑分析开源工具叫:geos;.NET版本的拓扑分析开源工具叫:NTS

  • Osmnet/Geopy/Rree等--常用开源Python地理空间分析库

Shapely-用于操纵和分析笛卡尔平面中的几何对象的库。

GeoPandas-用于地理数据的Python工具

Rtreelibspatialindex的包装,提供Python GIS的空间索引功能。

OSMnx-Python软件包,可让您下载空间几何图形并从OpenStreetMap的API中构建,投影,可视化和分析街道网络。

SuperMap iClient Python-SuperMap支持的Cloud GIS客户端Python SDK。

GeoDjango-Django地理网络框架。

Landsat-util-Landsat-util是一个命令行实用程序,可轻松搜索,下载和处理Landsat图像。

Rasterstats-用于基于矢量几何汇总地理空间栅格数据集的Python模块。

ArcGIS Python API-ArcGIS API for Python是一个Python库,用于处理由Web GIS提供支持的地图和地理空间数据。

PyQGIS-适用于QGIS的Python。

geopy-geopy是Python 2和3客户端,用于几种流行的地理编码Web服务。

geojsonio.py-通过Python在geojson.io上打开GeoJSON数据。geojsonio.py还包含一个命令行实用程序,它是geojsonio-cli的Python端口。

RSGISLib-遥感和GIS软件库(RSGISLib)是用于处理遥感和GIS数据集的工具的集合。使用Python绑定或XML接口可以访问这些工具。

Scikit图像-Scikit图像是图像处理算法的集合。

pyWPS-开放地理空间联盟的Web处理服务标准的实现。PyWPS用Python编写。它可以通过WPS标准来集成,发布和执行Python进程。

pyCSW-完全实现OpenGIS目录服务实施规范(Web的目录服务)。最初的开发始于2010年(2011年正式宣布)。该项目已通过OGC认证,是OGC参考实施。

OSMnet-提取OpenStreetMap街道网络数据的工具。

geojson-area-计算任何GeoJSON几何形状内的面积。这是Mapbox用于Python的geojson-area的端口。

GeoDaSpace-用于高级空间计量经济学的软件。

LANDSAT下载-从USGS网站自动下载LANDSAT数据。

USGS API-USGS是用于与美国地质调查局API接口的python模块。

som-tsp-使用自组织地图解决旅行商问题。

PyPostal-Python绑定到libpostal,以进行快速的国际地址解析/标准化。

python-opencage-geocoder-使用OpenCage地理编码API的Python模块。

pyroSAR-用于大规模SAR卫星数据处理的Python框架。

landsat-extract-gee-从Google Earth引擎获取Landsat表面反射率时间序列。

pygeoapi-OGC API标准套件的Python服务器实现。

pyGEOS-将GEOS函数公开到Python中。

更多更详细分类--多语言支持、前端、移动端、分布式、数据库插件,及Deep Learning支持库等资源介绍可以参考:https://github.com/sshuair/awesome-gis

2.3 地理空间数据分析简介

空间分析是对于地理空间现象的定量研究,其常规能力是操纵空间数据使之成为不同的形式,并且提取其潜在的信息。空间分析是GIS的核心。是GIS区别于一般的信息系统、CAD或者电子地图系统的主要标志之一。 空间分析,配合空间数据的属性信息,能提供强大、丰富的空间数据查询功能。

(1)空间分析的内容

空间分析主要通过空间数据和空间模型的联合分析来挖掘空间目标的潜在信息,其主要分析内容包括:

1)空间位置: 借助于空间坐标系传递空间对象的定位信息,是空间对象表述的研究基础,即投影与转换理论。

2)空间分布:同类空间对象的群体定位信息,包括分布、趋势、对比等内容。

3)空间形态:空间对象的几何形态。

4)空间距离:空间物体的接近程度。

5)空间关系:空间对象的相关关系,包括拓扑、方位、相似、相关等。

(2)空间分析方法

  • 空间统计分析

GIS得以广泛应用的重要技术支撑之一就是空间统计与分析。例如, 在区域环境质量现状评价工作中,可将地理信息与大气、土壤、水、噪声等环境要素的监测数据结合在一起,利用GIS软件的空间分析模块,对整个区域的环境质量现状进行客观、全面的评价,以反映出区域中受污染的程度以及空间分布情况。通过叠加分析,可以提取该区域内大气污染分布图、噪声分布图;通过 缓冲区分析,可显示污染源影响范围等。常用的空间统计分析方法有:常规统计分析、  空间自相关分析、回归分析、趋势分析及专家打分模型等。

  • 空间信息分类/聚类

这是GIS功能的重要组成部分。对于线状地物求长度、曲率、方向,对于面状地物求面积、周长、形状、曲率等;求几何体的质心;空间实体间的距离等。常用的空间信息分类的数学方法有:主成分分析法层次分析法系统聚类分析判别分析等。如最常用的kmeans和Dbscan空间聚类算法:

a.Kmeans空间聚类 b.Dbscan空间聚类(棕色是噪点)

  • 空间几何拓扑分析

几何信息和拓扑关系是地理信息系统中描述地理要素的空间位置和空间关系的不可缺少的基本信息。其中几何信息主要涉及几何目标的坐标位置、方向、角度、距离和面积等信息,它通常用解析几何的方法来分析。而空间关系信息主要涉及几何关系的“相连”、“相邻”、“包含”等信息,它通常用拓扑关系或拓扑结构的方法来分析。拓扑分析包括地理实体间拓扑关系分析与拓扑操作两个方面:

1)拓扑关系

2)拓扑操作

此外,拓扑操作还包括拓扑检测修复、节点识别等,更多拓扑关系操作可参考以下文献[5]。

  • 空间网络分析

现实世界中,若干线状要素相互连接成网状结构,资源沿着这个线性网流动,这样就构成了一个网络。网络分析的基础是:图论和运筹学--通过研究网络的状态以及模拟和分析资源在网络上的流动和分配情况,对网络结构及其资源等的优化问题进行研究。

1)网络基本要素

  1. 链(Link):网络中流动的管线,如街道、河流、水管等,其状态属性包括阻力和需求。
  2. 结点(Node):网络中链的结点,如港口、车站、电站等,其状态属性包括阻力和需求等。

2)网络特殊要素

在GIS中,网络分析就是依据网络拓扑关系( 结点与弧段拓扑、弧段的连通性),地理网络(如交通网络)、城市基础设施网络(如各种网线、电力线、电话线、供排水管线等)进行地理分析和模型化,是地理信息系统网络分析功能的主要目的。网络分析是运筹学模型中的一个基本模型,它的根本目的是研究、筹划一项网络工程如何安排,并使其运行效果最好,如一定资源的最佳分配,从一地到另一地的运输费用最低等。网络分析包括:路径分析(寻求最佳路径)、地址匹配(实质是对地理位置的查询)以及资源分配。

1)路径分析

【路径分析】最佳路径问题即路径的优化问题,其核心是对最佳路径和最短路径的求解。在一个网络上,给定了两点的位置,在计算两点间的距离时,必须同时考虑与之相关的路径

  1. 静态最佳路径:用户确定权值关系,每条弧的属性
  2. 动态分段技术:给定一条路径由多段联系组成,要求标注出这条路上的千米或要求定位某一条公路上的某一点,标注出某条路上从某千米数到另一千米的路段
  3. N条最佳路径分析:确定起点、终点、求代价较小的几条了路径,因为在实践中往往仅求最佳路径并不能满足要求,可能因为某种因素不走最佳路径,而走近似最佳路径
  4. 最短路径
  5. 动态最佳路径分析:权值变化、临时障碍点出现

其中,典型最短路径分析算法包括Dijkstra、K*等算法[6]。

2)定位与资源分配

【资源分配】对若干服务中心,进行优化划定每个中心的服务范围,把所有连通链都分配到某一中心,并把中心的资源分配给这些链以满足其需求,也即要满足覆盖范围和服务对象数量,筛选出最佳布局和布局中心位置。例如:

  1. 通过网络模拟资源的供需分配问题
  2. 规划重要的公共设施
  • 普通设施
    • 医院、教育、养老院等
    • 应急设施
    • 消防队、急救站等

设一定数量的需求点(消费点),求一定数量的供给点(公共设施)以及供给点的需求分配,用来完成某个规划目的。资源分配也可以定义为是整数规划问题,通过定义整数规划的约束与目标来求解最优资源分配问题。

3)最佳选址

【最佳选址】在一定约束条件下,在某一指定区域内选择设施的最佳位置,其本质是资源分配分析的延伸。在网络分析中的选址问题一般限定设施必须位于某个结点或某条链上,或者限定在若干候选地址中选择位置。

选址问题同样可以用整数规划的方式进行目标和约束定义,也可以通过启发式如遗传算法进行求解。

4)连通分析

【连通分析】连通分析在交通部门应用得最为广泛,它用于确定从某一结点或线路出发能够到达的全部结点或线路。例如:从我国的某一城市出发,只搭乘火车这一交通工具,所能够到达的所有城市和所有的路径。连通分析还能够解决交通网络的负载平衡问题。在生态环境流域的应用例子也不少,例如:因故造成河流某段受到剧毒物质污染,需要确定污染物可能的传播途径,便于布控。

以上空间分析的抽象问题,尤其是矢量数据的网络分析受其图论基础的影响,面临数据组织和输入难度大、结构复杂、计算效率低的问题。所以,正确的问题建模及高效的求解算法非常重要。图论算法、整数规划和启发式搜索是网络分析最常用的求解算法,后续文章中,会针对若干具体问题,进一步探讨详细建模算法与求解。 

附录:参考文献

[1]《地理信息系统原理与应用》,李建松,2006年,武汉大学出版社。  

[2]loading

[3]loading

[4][GIS原理] 10 空间统计分析_gis教案:第10章 空间统计分析-CSDN博客 

[5]ArcGIS教程 - 8 空间数据拓扑处理_拓扑处理是什么?-CSDN博客 

[6]迪克斯特拉算法_百度百科

[7]https://malagis.com/opengis-specification.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值