《移动GIS应用开发实践:Android平台下的GIS功能开发实战》读书笔记
《移动GIS应用开发实践:Android平台下的GIS功能开发实战》
郭明强 等
50个笔记
内容简介
- 随着移动互联网的兴起和智能移动终端的普及,尤其是近年来5G网络的迅猛发展,移动应用得到了广泛推广。作为移动应用的核心技术之一,移动GIS成为继云GIS、三维GIS之后,地理信息产业关注的又一技术热点。本书将理论与实践相结合,内容由浅入深、循序渐进,首先对移动GIS及其开发体系进行了简要的介绍,然后详细地讲解了基于Android的移动应用开发和移动GIS开发平台,最后从基础、进阶和提升三个层次对基于Android的移动GIS开发实践展开了详细的探讨。
前言
- 言移动信号从2G、3G、4G网络迅速发展到如今的5G网络。实践证明,每一次无线通信技术的变革都将大大推动移动互联技术的长足进步,并为信息社会中各行各业的发展提供源源不断的活力与动能。如今,无处不在的移动应用已经深深地影响了国民经济的方方面面,尤其是万众聚焦的地理信息服务行业。无线通信技术与地理信息系统(GIS)的结合,使GIS的应用领域与应用范围越来越广泛,需求愈发旺盛。移动GIS已经成为继云GIS、三维GIS之后的技术热点之一。
- 本书包括7章:第1章是走进移动GIS,主要从GIS出发,介绍移动GIS的概念、特点、组成、相关技术、功能与应用,以及移动GIS的发展趋势和目前存在的问题,使读者对移动GIS有整体的了解与认识。第2章是移动GIS开发体系,主要介绍移动应用的开发模式和开发平台。第3章是基于Android的移动应用开发,主要介绍Android平台、Android开发入门、Android应用程序、Android开发基础、Android应用打包等内容,可以为读者后续学习打下坚实的基础。第4章是基于Android的移动GIS开发平台,主要包括MapGIS Mobile开发平台,以及MapGIS Mobile的开发和二次开发。第5~7章是本书的重点内容,主要介绍移动GIS功能的实现原理和实现方法,从基础、进阶和提升三个层次,指导和帮助读者循序渐进地掌握基于Android的移动GIS开发实践。本书内容由浅入深,除了讲解移动开发技术、移动GIS的基本概念,还详细介绍了移动GIS功能的实现原理和实现方法,使读者能够知其然并知其所以然。同时,本书还提供了示例程序的配套代码,通过简单的示例突出重点,帮助读者快速学习。读者在阅读完本书后,可了解移动GIS的体系,掌握移动GIS的开发方法,通过将本书的知识应用到实际中,达到学以致用的目的。本书得到了国家自然科学基金面上项目(41971356)的资助,在此表示感谢。在本书的编写过程中,笔者参考了大量参考文献,在此向相关文献的作者表示感谢。感谢笔者的硕士研究生盖涛提供的封面设计方案。
第1章 走进移动GIS
- 地理信息系统(GIS)的出现解决了人们生产与生活中很多与位置相关的问题,在土地调查、城市规划、灾害监测等诸多领域发挥了巨大作用。随着5G的普及,移动互联网技术飞速发展,移动GIS也成为GIS业界关注的焦点。移动GIS结合了GIS、移动定位、移动数据库等相关技术,能够解决传统GIS难以解决和无法跨越的问题,为GIS应用开辟了新的应用模式,如在大众应用导航、外业数据采集、移动巡检等方面都体现了传统GIS无法比拟的优势,给人们的生产生活带来了极大的便利。基于位置的服务需求日益增加,移动GIS在发展中不断为人们提供“随时、随地”的地理信息服务。本章将带你走进移动GIS的世界,了解移动GIS的过往与未来。
1.1 地理信息系统
- 在了解GIS之前,我们先来看看以下几个关键词。(1)地理信息。地理信息是表征地理圈或与地理环境固有要素有关的物质的数量、质量、分布特征、相互联系和变化规律的数字、文字、图像和图形等的总称。地理信息属于空间信息,其位置的识别是与数据联系在一起的,这是区别于其他类型的信息的最显著的标志。地理信息具有区域性、多维性、时序性。它的区域性,是指通过经纬网或公里网建立的地理坐标来实现空间位置的识别。多维性表现为在二维空间的基础上实现多专题的三维结构。另外,地理信息的时序特征十分明显,可以按时间尺度将地理信息划分为超短期的(如台风、地震)、短期的(如江河洪水、秋季低温)、中期的(如土地利用、作物估产)、长期的(如城市化、水土流失)、超长期的(如地壳变动、气候变化)等。(2)信息系统。能对数据和信息进行采集、存储、加工,并能回答用户一系列问题的系统称为信息系统。信息系统具有数据采集、管理、分析和表达这四大功能。信息系统可以分为数据处理系统、管理信息系统、决策支持系统、专家系统、虚拟办公室五种类型。不同类型的系统具有不同的作用、特点,扮演不同的角色。常见的信息系统有校园信息系统、图书管理信息系统、企业管理信息系统、人事档案信息系统、空间信息系统等。(3)地理信息系统。地理信息系统,英文名称为Geographic Information System,简称GIS。站在不同的角度,针对不同的目的、不同的应用,GIS的定义都不一样,目前还没有一种完全被普遍接受的定义,本书将从以下两方面来解释GIS的概念。GIS是在计算机软件和硬件的支持下,以采集、存储、管理、检索、分析和描述空间物体的定位分布及与之相关的属性数据,以及回答用户问题等为主要任务的计算机系统。GIS具有处理和分析地理空间数据的能力,这也是GIS区别于其他信息系统的关键。
- 1.1.1.2 GIS的发展简史20世纪60年代中期为GIS的起始发展阶段。随着地图学、计算机科学的发展,人们对自然资源和环境的规划管理需求日益增长,促进了GIS的产生。世界上第一个GIS为加拿大地理信息系统(CGIS)。在这一时期,人们开始了对GIS思想和技术方法的探索,GIS研究组织和机构不断涌现。20世纪70年代为GIS的发展巩固阶段。这一时期,计算机软件和硬件飞速发展,开始使用大容量存储设备,为GIS的迅速发展提供了有利条件。GIS的需求开始增多,短时间内世界各地就建立了许多不同专题、不同规模、不同类型的GIS。同时,各种GIS软件相继研发成功,自然资源和环境领域开始使用GIS进行数据处理。20世纪80年代为GIS的推广应用阶段。由于计算机技术的进一步发展,GIS也逐渐走向成熟,应用的范围、领域都在扩大,并开始应用在一些全球性的问题上,如全球沙漠化、全球气候变化等。GIS在这一时期具有突破性的进展,同时,我国的GIS也取得了巨大的进步。从20世纪90年代开始,GIS进入产业化阶段。随着地理信息产品的建立和数字化信息产品在全世界的普及,GIS已成为确定性的产业。目前,GIS在人们的生产、生活、学习、工作中都发挥了巨大的作用。
- 1.1.1.3 GIS的组成部分GIS主要由计算机硬件系统、计算机软件系统、空间数据、应用分析模型、系统开发管理和使用人员五部分组成。(1)计算机硬件系统。计算机硬件系统由三部分组成:第一部分是数据处理设备,它是GIS硬件的主体、核心,如各种计算机、服务器和图形工作站;第二部分是数据输入设备,如数字化仪、扫描仪、数字测量设备等;第三部分是数据输出设备,如绘图仪、打印机等。(2)计算机软件系统。计算机软件系统可分为三部分:计算机系统软件,主要指的是计算机的操作系统,是GIS软件环境的基础部分;GIS软件,是整个GIS的核心部分,用于各种GIS功能的操作,如数据输入和校验、数据存储和管理、数据变换、数据输出和表示、用户接口等;数据库软件,GIS需要支持复杂的空间数据,所以对数据的存储、管理、检索、输出是非常重要的环节,目前比较成熟的数据库软件(如Oracle、SQL Server、开源数据库等)发挥了重要作用。(3)空间数据。空间数据是指以地球表面空间位置为参照的自然、社会和人文经济数据,可以是图形、图像、文字、表格和数字等。它是GIS的操作对象,来源于各种地图、遥感影像、位置观测数据、数字地面模型、大地测量成果等。它描述地理实体的空间特征、属性特征、时间特征。空间特征表现为地理实体的空间位置及其相互之间的关系;属性特征表现为地理实体的名称、类型、数量、质量等特征;时间特征表现为地理实体随着时间变化而发生的相关变化。空间数据一般都以数据库的形式存储在计算机中,便于用户处理和使用。(4)应用分析模型。基本的GIS工具无法满足所有特定应用需求,因此需要构建专门的应用分析模型。例如,土地利用分析模型、洪水淹没分析模型、医院选址模型、货物配送路径分析模型、水土流失模型等。GIS应用分析模型的建立和选择是GIS成功应用的重要因素,应用分析模型是GIS技术产生社会经济效益的关键所在,在GIS中占据了非常重要的地位。(5)系统开发管理和使用人员。具备了前面几个组成部分,还不足以形成一个完整的GIS,还需要人来完成系统的设计、开发、组织、管理、维护、更新,以及提取各种信息、支持决策等。
- 1.1.2 GIS的功能GIS的功能非常丰富,涵盖数据采集与输入、数据存储与管理、数据编辑与更新、空间查询与分析、数据显示与输出等。(1)数据采集与输入。数据采集与输入,即在数据处理系统中将系统外部的原始数据传输到系统内部,并将这些数据从外部格式转换为系统便于处理的内部格式的过程。多种形式、多种来源的数据具有多种输入方式,如图形数据的输入、测量数据的输入、影像数据的输入、数字文字的输入等。(2)数据存储与管理。数据存储即将数据以某种格式记录在计算机内部或外部存储介质上。数据管理是GIS数据管理的核心,各种图形或图像信息都以严密的逻辑结构存放在空间数据库中。(3)数据编辑与更新。数据编辑主要包括图形编辑和属性编辑。图形编辑包括图形变换、投影变换、误差校正、拓扑关系建立等,属性编辑主要与数据库管理结合在一起完成。(4)空间查询与分析。空间查询是GIS的基础功能,主要包括从空间位置检索空间物体及其属性和从属性条件集检索空间物体。空间分析是GIS区别于其他信息系统的关键所在,主要包括拓扑叠加分析、缓冲区分析、数字地形分析、空间模型分析、网络分析等。(5)数据显示与输出。GIS处理、分析得到的结果最终需要反馈给用户,一般通过计算机屏幕来展示,也可以以报告、表格、地图等硬件形式展示。数据的输出通常以地图的形式表现,可以根据用户需要,输出全要素地图或各种专题图、统计图、统计图表等。现实生活中的数据大多数具有空间位置特征,GIS处理的对象就是空间数据。同时,GIS具有多种独特的空间数据分析功能,以及空间数据和属性数据结合的图形表现能力,这使得GIS的应用领域非常广泛,具体如下。(1)资源清查与管理。资源清查是GIS的基本职能,如土地利用类型,可以输出不同土地利用类型的分布和面积、按不同高程带划分的土地利用类型、不同坡度区内的土地利用现状等,为资源的合理利用、开发和科学管理提供依据。(2)区域规划。区域规划的综合性非常高,解决区域规划问题要考虑很多方面,它涉及资源、环境、人口、交通、经济、教育、文化和金融等多种要素。GIS强大的数据库管理功能可将多种数据合并到一个系统中,强大的分析功能(如网络分析、缓冲区分析、叠加分析、三维分析等)为规划决策提供支撑。城镇总体规划、道路交通规划、公共设施配置、城市建设用地适宜性评价、区位分析、地址选择等问题都可以使用GIS来解决。(3)灾害监测。我国地域辽阔,地形、地质、气候复杂,自然灾害多发,如地震、洪涝、滑坡、泥石流、森林火灾等,严重影响着人民的生命财产安全。GIS在灾害预测、救援方案、恢复冲减的过程中发挥了重要的作用,如借助遥感监测数据和GIS技术可有效地进行森林火灾的预测预报、洪水灾情监测、洪水淹没损失的估算及抗震救灾等工作,为救灾抢险和决策提供及时准确的信息。(4)土地调查。土地调查包括对土地利用类型、位置、面积、分布状况和土地权属等状况的确定。随着国民经济的发展,土地管理工作的重要性日益增强,对应的工作量、复杂程度、难度也越来越大,传统的方法已经不足以满足需求。于是,GIS为此提供了先进的技术,在数据的存储、管理、分析,以及图示输出等方面发挥了重要的作用。(5)环境管理。随着经济的高速发展,人们越来越重视环境问题。GIS在环境规划决策、环境监测、环境应急预警预报、环境质量评价等诸多方面提供了技术支持。(6)宏观决策。GIS利用数据库,通过一系列决策模型的构建和比较分析,为国家宏观决策提供依据。我国在三峡地区研究中,通过利用GIS和机助制图的方法,建立环境监测系统,为三峡宏观决策提供了建库前后环境变化的数量、速度和演变趋势等可靠的数据。
- 1.1.3.1 标准化GIS的应用领域广泛,不同行业具有不同的数据类型和组织形式,不同数据生产部门的方式和标准也不一样。所以,目前大部分GIS使用的数据相对封闭独立,阻碍了信息资源的交换和共享,在一定程度上限制了GIS的发展。为了使GIS更好地服务大众社会,人们逐渐意识到对软件、硬件、数据等要素进行必要的标准化。标准化的真正实现将使人们在一个共同理解的基础上共享信息和资源。1.1.3.2 云化当今互联网飞速发展,它已经触及人们日常生活的角角落落,渗透到社会发展的各个领域,改变了人们的生活方式。换句话说,人们已经离不开互联网了。GIS的最终目的是为人们提供服务、创造价值,其与互联网的结合是必然的趋势,因此云GIS应运而生。利用云环境,能够提供云上发布、浏览显示、查询检索、处理、分析、下载等功能。云GIS具有轻便、经济、访问范围更广泛、可扩展性好等特点,弥补了传统GIS庞大、专一的缺点。很多GIS平台公司已经研制出云GIS的产品,如国外Esri公司的ArcGIS 10系列产品,国内武汉中地数码的MapGIS 10系列产品和超图的SuperMap 10系列产品等。
- 1.1.3.3 集成化3S是指全球定位系统(GPS)、遥感系统(RS)和地理信息系统(GIS)三大技术的简称。GPS主要用于快速、实时获取目标物体的位置信息;RS主要用于实时地或准实时地提供目标及其环境的语义或非语义信息,发现地球表面上的各种变化,及时地进行数据更新,是GIS重要的数据源;GIS则是3S的关键所在,GIS对来源于GPS、RS的数据进行综合处理、集成管理、空间分析,挖掘潜在的有用信息,为决策提供科学有效的支持。这三种技术都有自己独立的体系,在数据采集、管理、分析等方面各有所长,相互之间具有天然的互补性,技术间的相互融合在地理测绘领域已经发挥出更高的效率和显著的作用。(1)VR/AR-GIS。VR/AR-GIS,也称虚拟现实/增强现实GIS,是虚拟现实技术与GIS结合的产物,通过三维立体的方式显示地理实体,给人非常真实的沉浸式视觉体验。(2)移动GIS。将GIS与移动通信技术、移动定位技术集成,在移动设备中嵌入GIS功能,产生了移动GIS。由于智能移动设备在人们生活中发挥了巨大的作用,所以移动GIS是GIS发展的必然趋势。移动GIS能够提供更加丰富的基于位置服务,大大方便了人们的生活。例如,百度地图、高德地图等生活服务软件的产生,改变了人们出行的方式。移动GIS的前景非常可观。(3)多媒体GIS。多媒体技术是利用计算机对文本、图形、图像、声音、动画、视频等多种信息进行综合处理、建立逻辑关系和人机交互作用的技术。将多媒体技术与GIS结合,为GIS的展示提供了更加丰富、更加生动、更加灵活、更加友好的方式,给人以直观的体验。不仅如此,多媒体技术将为GIS带来更加广阔的应用领域,在旅游、文化教育、社会经济等各大产业的发展中具有更好的前景。(4)3D GIS及4D GIS。现实世界中的地理实体是三维的,但是受限于技术原因,传统的GIS都是通过二维方式来表达的。但是这种模式不能精确地反映三维实体的状况,无法满足部分实际应用的需求,所以需要结合三维技术,以更加接近真实情况的方式来提供服务,从二维平面上升到三维立体的效果。要将数据以三维的形式呈现,那么三维数据的模型、存储管理、数据表达、数据分析、数据存储等问题都是要重点考虑的对象。目前这些技术是GIS发展的热点,是GIS前进的主要方向。现实世界中的地理对象都是具有时间特征的,在3D GIS的基础上,加上时间这一维度,便得到了4D GIS,或称时态GIS。4D GIS对于部分现实的问题具有重要的研究意义,如生态环境变化规律的寻找、区域人口的变化、洪水的最高水位等问题。4D GIS是GIS领域一个重要的研究方向。
- 1.1.3.4 组件结构化无论C/S开发还是B/S开发,一个完整的GIS系统一般比较庞大,涉及多项功能,通过少数人很难完成,所以借助搭建积木的想法,将GIS软件结构进行组件化与插件化,即可构建组件式GIS、插件式GIS。其主要思想是将众多的功能按模块分为单个的“零件”,并灵活、方便地将各种功能的“零件”搭建成平台或者应用,简化了开发的步骤,降低了开发难度。目前主流GIS平台均采用插件式的开发方式。1.1.3.5 智能化智能化新兴技术非常火热,是IT技术发展的新领域。GIS与专家系统、神经网络、遗传算法、人工智能、深度学习、机器学习等技术相结合已成为GIS新的研发热点。智能GIS将对GIS的数据提取、数据挖掘、数据分析提供更多的可能性,创造更智能的世界。1.1.3.6 社会化随着GIS的发展,它已逐渐被应用到生活的方方面面,潜移默化地改变了人们的许多生活方式,如定位、导航地图应用等改变了人们的出行。未来的GIS将更加普及,为社会大众服务。
1.2 移动GIS
- 1.2.2 移动GIS的特点移动GIS是继桌面GIS、WebGIS两大发展方向之后的又一技术热点。不同于桌面GIS、WebGIS,它有自己独特的特点,正是这些与众不同的技术特点使得移动GIS在人们生活中的作用越来越重要。(1)移动便捷性。移动GIS的终端一般为智能移动设备,小巧灵活,便携性好,移动性强,往往可以随着人的位置变化而移动,通过无线通信技术(5G、Wi-Fi、Bluetooth等)达到与服务器交互的目的,使得用户不管在何地,都能达到互联互通的效果。(2)服务实时性。移动GIS能够通过移动设备的定位模块获取空间位置信息,结合无线通信技术,能够实时地将采集到的信息反馈给用户,也能随时随地响应用户的服务请求,很好地处理突发事件,让用户感受到无时无刻不在的移动地理信息服务。这一特性使得移动GIS在突发事件中能够发挥巨大的作用。(3)终端多样性。不管是计算能力强大的便携式微型计算机,还是智能手机、车载终端、专用GIS嵌入式设备,都可以作为移动GIS的终端设备,不同的生产商、不同的技术造就了它的多样性。(4)资源广泛性。由于移动GIS的用户位置不固定,移动性强,并且用户众多,所以移动GIS获取的数据和提供的数据在空间和类型上都是多种多样的。(5)信息载体多样性。由于移动设备的特殊性,导致移动GIS信息的载体也多种多样,如空间位置、语音、视频、图像、图形、文本等,但可以利用多种介质来传递信息。(6)有限的存储能力、计算能力及带宽。移动设备相对于一般计算机或工作站来说,体量上不可相提并论,当然在数据的存储能力、复杂过程的计算能力上也具有较大差距。同时,无线通信网络相对于Internet网络带宽较小,这也局限了移动GIS的功能设置,但这些也对移动GIS提出了更高的要求和发展的方向。
- 1.2.3 移动GIS的组成移动GIS由空间数据库、地理应用服务器、无线通信网络、移动终端4部分组成,每部分都有其独特的功能,担当了不可或缺的角色。移动GIS的体系结构如图1-1所示。
- (1)空间数据库。空间数据库为移动GIS组织、存储、管理、维护、更新空间数据及对应的属性描述信息,是移动GIS的基础和数据支撑,为地理应用服务器提供GIS操作的数据。(2)地理应用服务器。地理应用服务器是移动GIS的核心部分,其主要的功能是获取移动终端的服务请求,按照业务逻辑、方法流程对空间数据或业务数据进行处理,实现GIS功能,常用的有地图显示、查询、编辑及空间分析等功能,处理过程完成后,将结果反馈给移动终端。(3)无线通信网络。利用无线通信网络可以实现客户端和服务器端的连接,传达移动终端的服务请求给地理应用服务器,待任务处理完成,再将分析处理的结果反馈给用户。无线通信网络可实现数据传输,是移动GIS中的通信桥梁。(4)移动终端。移动终端包括智能手机、车载终端、便携式计算机等设备,它是移动应用程序的搭载平台,具有图形展示、移动定位、网络通信等功能,是展示移动GIS功能给用户的窗口。
- 1.2.4 移动GIS的相关技术移动GIS涉及的技术主要包括嵌入式技术、无线通信技术、移动数据库技术、移动计算技术、移动定位技术。移动GIS的发展与这些技术息息相关。
- 1.2.4.1 嵌入式技术移动终端,如智能手机、平板电脑等都属于嵌入式系统的范畴。嵌入式系统,即以应用为中心,以计算机技术为基础,且软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等的严格要求的专用计算机系统。嵌入式系统由硬件环境、嵌入式操作系统、嵌入式应用程序组成。(1)硬件环境。硬件设备及其中的微处理器、存储器等构成了嵌入式系统的硬件环境,是移动GIS实现的硬件基础,其系统精简、内核微小的特性满足了移动应用的需求。(2)嵌入式操作系统。嵌入式操作系统是一种系统软件,在嵌入式设备的基础上,将硬件和软件连接,负责嵌入式系统的全部软硬件资源的分配、任务调度,控制、协调并发活动。嵌入式设备的多样性决定了嵌入式操作系统的多样性,目前常用的嵌入式操作系统包括嵌入式Linux、VxWorks,以及专用于手机、平板电脑等移动设备的Android、iOS操作系统。(3)嵌入式应用程序。嵌入式应用程序则是基于嵌入式操作系统开发的应用软件,针对不同的业务需求开发不同的软件,实现特定的功能。例如,百度地图、高德地图等各种App软件。由于嵌入式设备的体积、性能、存储空间等因素的局限性,要求应用程序的代码精简、紧凑、可靠。1.2.4.2 无线通信技术移动设备都是通过无线通信网络进行通信的,无线通信技术为移动设备发挥其独特的移动性提供了技术基础。对于移动GIS来说,无线通信是移动GIS的客户端与服务器端进行连接、数据交互的桥梁,包括终端请求的发送,以及服务器端响应处理后数据、信息的下发和传递。目前在无线通信中使用较多的是蜂窝移动通信及无线局域网通信。(1)蜂窝移动通信。采用蜂窝无线组网方式,在终端和网络设备之间通过无线通道连接起来。采用GSM、UMTS、CDMA等技术,蜂窝移动通信系统经历了几代的发展,提供2G、2.5G、3G、4G、5G网络,正在朝着高速、大容量、大覆盖率的方向发展。(2)无线局域网通信。无线局域网(Wireless Local Area Networks,WLAN)是利用无线通信技术在一定的局部范围内建立的网络,通过电磁波在空中进行通信连接,常用于家庭、企业、商场中,我们常用的Wi-Fi就是无线局域网的一种。无论是蜂窝移动通信还是无线局域网通信,相关技术都在高速发展,为大数据量的空间数据高速传输创造了条件。1.2.4.3 移动数据库技术移动数据库是分布式数据库的延伸和扩展,包括固定主机、移动支持站点、移动主机三种类型的节点,组成在物理上分布,但是在逻辑上集中的大型数据库。固定主机是通俗意义上的计算机,作为服务器存储、管理本地数据库。移动主机就是移动客户端。移动支持站点通过无线通信网络与其他两端进行连接、通信。目前的空间数据正朝着大数据、海量的方向发展,可将大量的数据存储在不同的计算机中,通过分布式计算技术,请求处理后将结果发送给移动终端。这种模式对于存储能力、计算能力都不强的移动设备来说,大大扩展了移动应用的功能。1.2.4.4 移动计算技术移动计算技术也是移动GIS的关键技术之一,它使计算机或其他信息智能终端设备在无线环境下实现数据传输及资源共享,能够将有用、准确、及时的信息提供给任何时间、任何地点的任何用户。移动GIS具有较强的实时性、位置变化性,移动计算技术的优势完全满足这种条件,能够利用分布式的移动终端通过无线通信网络连接,进行数据访问和事务处理。1.2.4.5 移动定位技术移动GIS的作用,简单地说就是为用户提供基于位置的服务(Location Based Service,LBS),要实现此功能,首先需要获取用户的位置信息,那么移动定位就是必不可少的技术了。定位技术分为两种:一种是基于北斗系统和GPS的定位,利用移动设备中的定位模块接收卫星信号,从而计算出设备位置;另一种是基于无线通信网络的定位,一般是利用设备与移动通信的基站之间的位置关系确定位置的。
- 1.2.5 移动GIS的功能与应用领域1.2.5.1 移动GIS的功能移动GIS的功能如下。(1)卫星定位导航功能。借助移动终端设备所具有的定位模块,形成了移动GIS的卫星定位导航功能,并且其应用非常广泛。(2)移动数据采集功能。对于一些偏远地区或特殊业务模式的数据采集,使用移动GIS可以采集丰富的业务数据,如图片、录音、视频等信息。也可以借助移动设备的多种传感器获取额外信息,达到较好的信息采集效果。目前,移动定位采集模式在野外地区非常流行。(3)移动GIS办公功能。虽然移动GIS在存储能力、计算能力等方面无法和个人计算机相匹敌,但是它仍然具有移动GIS办公的功能,可以将部分由服务器执行的任务移植到移动GIS中,如数据加载与展示、数据编辑、空间查询与分析等常用功能,大大简化了与服务器之间的复杂请求交互过程,也提高了移动GIS的处理能力。(4)数据传输功能。数据的传输分上传和下载两个过程。对于移动终端采集的数据,可以上传到空间数据服务器中,待服务器将其处理成移动终端需要的类型,再发送到移动终端,实现客户端—服务器端数据的互联互通。1.2.5.2 移动GIS的应用领域由于移动GIS结合了移动终端的相关技术,所以在传统GIS的基础上具有更加广泛的应用领域,具体如下。(1)测绘领域:如野外数据采集、地质调查、土地调查等。(2)行业应用:如移动执法、林业调查、公安警务、智能巡检、风资源、电力应急等。(3)大众应用:如智能交通、智能停车、景区旅游、掌上校园等。
1.3 移动GIS的发展
- 1.3.1 从GIS到移动GIS从GIS诞生到如今,GIS的相关技术(如计算机软硬件、空间数据库、遥感、数字图形图像等)逐渐发展成熟,GIS也发展成为一个确定性的产业,在人们生产生活中发挥着巨大的作用。GIS的发展为移动GIS的产生提供了核心功能的支持。互联网、无线通信技术的迅速发展改变了数据的传递方式,为移动GIS的产生奠定了基础。同时,近二十年来,智能移动设备,如智能手机、平板电脑等的技术跃迁为移动GIS的产生和发展提供了硬件支持,也改变了人们的生活方式。移动设备的位置流动性结合移动定位技术,为人们提供了更多享受便捷服务的可能性。而移动GIS提供的众多GIS功能也深深影响着人们的生产生活。
- 1.3.2 移动GIS的发展在当前大环境中,移动GIS正向产业化的方向进军,相关的应用需求正在推动它的发展,具体表现在市场上,各种基于移动GIS的工具、应用层出不穷。但是现阶段的移动GIS在某些方面还不够成熟,仍然面临着一些问题。从与移动GIS相关的技术方面来讲,需要考虑如下问题。(1)移动终端设备。虽然目前移动终端设备正迅速发展,但是与一般的计算机仍具有差距,主要表现在设备的存储能力、计算能力、电源的持久性等性能问题上,还有设备的经济性、便携性等都是移动GIS发展中要考虑的问题。(2)移动定位。在野外环境复杂的地区,或者是在城区中有很多建筑物遮挡的情况下,通过卫星定位、无线通信网络定位功能得到的定位精度不一定准确,这也部分受限于移动终端设备中的定位芯片。(3)通信。虽然目前5G网络正在发展和推广,但是在部分偏远地区,无线通信网络的普及程度并不高,并且无线通信网络的带宽小,限制了数据传输的速度和效率。(4)与其他技术的结合。移动GIS要想紧跟时代的潮流,创造出更有价值的服务,就需要考虑如何与当前正飞速发展的新兴技术如大数据、云计算、物联网、电子商务等进行对接,在这些方面,移动GIS正处于起步阶段,还有很长的路要走。从产业的角度考虑,如何基于新兴技术,按照用户的生产生活方式,针对应用需求,遵照国家政策,整合社会资源,创造更加友好、更有价值、更有创造性的服务,是移动GIS必须要考虑的问题。以上问题为其发展进步指明了方向。要了解移动GIS的发展趋势,以及如何为用户提供更丰富、更便捷的移动地理信息服务,可关注如下几方面。(1)为适应移动GIS的发展,移动终端不光需要满足美观、便携、易操作等特点,还需要考虑成本,并满足大数据可视化等性能。(2)数据传输是非常重要的一个环节,更加快捷、完善的移动通信技术将促进移动GIS的发展。(3)不仅是移动设备、通信技术的发展,对于GIS平台及软件厂商来说,更需要关注的是提供更多更加适合移动终端的GIS功能。(4)移动GIS在产业化、社会化的方向上一定会有更大的发展,如何挖掘移动GIS的应用领域、应用场景、服务模式,找到利于大众应用的商业模式,提供更好体验的服务或产品,将会是无数商家竞争的制高点。目前,移动GIS紧紧跟随着互联网技术与GIS技术的发展步伐,与移动互联网、大数据、云计算、虚拟现实技术(VR)、增强现实技术(AR)等技术紧密融合,飞速发展,相信未来更多的行业会享受到它带来的便利。
第2章 移动GIS开发体系
- 第2章 移动GIS开发体系移动GIS的作用是为人们提供基于位置的地理信息服务。了解了移动GIS的来源、功能、应用、发展之后,我们需要考虑如何开发出在实际生活中能够产生价值的移动应用。本章将整体介绍移动应用的开发模式、主流开发平台,让读者先对原生移动应用开发体系有大体的了解;进而介绍移动GIS开发平台,包括主流互联网移动地图开发平台,如高德地图、百度地图、天地图、谷歌地图等开放平台,主流GIS厂商,如Esri、中地数码、超图等提供的专业移动GIS开发平台。要掌握移动GIS应用的开发,应对各大主流的移动GIS开发平台有整体的了解与认识,然后可先从中选择一个进行入门与深入学习。
2.1 移动应用开发概述
- 2.1.2.3 Hybrid App开发模式Hybrid App是指介于Web App、Native App这两者之间的移动应用,是两者的结合,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。Hybrid App表面看起来是Native App,采用原生视图作为外壳,使用UI Web View控件,访问的是Web内容,相当于将Web App嵌入原生视图中,是一种半原生半Web的混合类App。Hybrid App的兴起是现阶段移动互联网产业的一种偶然。由于移动应用开发比较火热,移动原生开发的人员较少,导致人才被争夺。HTML5技术的出现使得移动开发找到了新天地,但是由于其技术问题,无法给予用户更好的使用体验,所以并未迎来大爆发。在这种情况下,一种结合原生开发和网页开发的思想、技术产生,结合了两者的优点,偶然之间在移动开发中争得一席之地,目前也变得越来越受欢迎,如手机百度、手机淘宝、大众点评、去哪儿旅行等移动客户端都是采用的此种方式。
- 2.1.2.4 开发模式的选择移动应用选择哪种开发模式进行开发需要考虑很多因素,不同的模式适合不同的需求,取决于各种模式的特点及开发人员等因素。(1)成本:实行一个项目,必须要考虑到项目的预算是多少,有多大的经济承受能力。如果预算充足,可以开发多个本地应用,也可以加上一个网页应用。(2)开发成员:需要考虑个人或团队所熟悉的开发技术,或者已经拥有的开发资源,当然是扬长避短较好。(3)时间:需要考虑项目何时交付上线,时间最快的当然是Web App。(4)产品需求:这是最关键的一点,要根据产品需求确定开发方式。例如,如果要使用移动设备的摄像头、闪光灯、重力感应器等,就需要使用原生方式;如果功能必须要联网,或许网页方式较好;如果要求应用可以在所有移动操作系统上使用,使用网页方式更好。(5)性能要求:如一些游戏应用就要求具有较高的性能、稳定性,所以适合采用原生开发模式。(6)利益考虑:如果想通过应用来盈利,采用原生应用和混合应用都可行。不同的模式有各自的优势和劣势,需要结合具体情况综合考虑,选择最适合的开发模式。
2.2 移动应用开发平台
- 2.2 移动应用开发平台由于原生开发模式属于基础开发方式,技术成熟,目前仍占据主流,所以本书重点关注原生开发模式,在此基础上后续会讲解移动GIS应用的开发。智能设备,特别是智能手机出现后,立即受到人们的追捧,发展异常迅速,功能越来越强大,囊括了人们大部分的社会活动,如出行、购物、支付、社交、娱乐等,已经成为人们生活中必不可少的元素。这些功能的实现基于移动操作系统的众多丰富、酷炫的移动软件。由于感知到移动市场的火爆,很多商家都想在其中占据一席之地,很多移动操作系统、移动软件由此产生。
- 2.2.1 AndroidAndroid是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备中,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android操作系统最初是由Andy Rubin开发的,2005年被Google公司收购,2008年9月,Android 1.0版本发行,经过多年的发展,Android版本不断更新,已经发行了很多版本,不断完善,Android 11版本的系统已经问世。2020年,运行Android操作系统的智能手机在全球智能手机市场份额中的占比高达87%,可见Android系统的火热程度。2.2.1.1 特点Android最大的优势就是其开放性,Android操作系统是开源的,所以任何开发商都可以在此基础上创建自己的操作系统,应用于各种品牌的移动设备上。当然,Android对移动应用开发者也是开放的,用户可以开发各种应用。另外,由于Android为Google旗下产品,所以可以无缝对接各种Google优质服务,如搜索、地图等,为用户提供更好的服务。由于Android的开源性,市面上产生了很多基于Android开发的操作系统,具体如下。● EMUI(Emotion UI),是华为基于Android开发的情感化操作系统。● MIUI,是小米公司旗下基于Android系统深度优化、定制、开发的手机操作系统。● flyme,是魅族基于Android操作系统为智能手机量身打造的操作系统。● ColorOS,是OPPO基于Android深度定制的操作系统。● OriginOS,是vivo基于Android底层发布的新一代操作系统。2.2.1.2 系统架构Android采用分层的体系架构,共四层,分别为应用程序层(Application)、应用程序框架层(Application Framework)、系统运行库层(Libraries、Android Runtime)、Linux内核层(Linux Kernel),具体内容会在第3章详细讲解,此处不再赘述。2.2.1.3 开发环境Android原生开发的开发环境由Java环境、Android SDK、开发工具三部分组成。可以在不同操作系统的计算机上进行Android开发,如Windows、Linux、Mac,在不同的操作系统中所需要的开发环境都由这三部分组成,但是需要配置对应的开发环境。(1)Java环境。Android开发基于Java语言,需要Java环境的支持,因此需要下载JDK(Java Development Kit)的安装包,安装配置Java环境,即安装JDK(包含JRE)。(2)Android SDK。Android SDK(SDK:Software Development Kit,软件开发工具)为开发者提供了开发Android应用的开发组件,支持Windows/Linux/Mac平台,其包含了在Android平台上开发移动应用的各种工具集,如模拟器。(3)开发工具。目前常用的主流开发工具包括Android Studio和Eclipse+ADT(Android Development Tool,Android开发工具),也可以使用IntelliJ IDEA。但是Google已经停止了对ADT的更新,正大力主推Android Studio,对比IntelliJ IDEA,Android Studio更加专业。Google官方推荐使用Android Studio。
- 2.2.2.2 平台架构iOS系统平台架构分为如下四层。● 可触摸层(Cocoa Touch layer):提供了各种与用户界面有关的框架。● 媒体层(Media layer):通过它我们可以在应用程序中使用各种媒体文件。● 核心服务层(Core Services layer):可以通过它来访问iOS的一些服务,如网络访问、定位、文件访问等。● 核心操作系统层(Core OS layer):它包括内存管理、文件系统、电源管理及一些其他的操作系统任务。作为App开发者不需要与这一层打交道。2.2.2.3 开发环境iOS程序开发采用Objective-C或Swift语言,开发环境包括硬件环境和软件环境两部分。首先需要拥有一台可以运行Mac OS的计算机,可以购买iMac、MacBook、MacBook Pro、MacBook Air、Mac Mini。有了能够运行Mac OS的计算机,还需要软件环境Xcode。Xcode是苹果提供的开发工具集,包括项目管理、创建执行程序、代码编辑、代码调试、代码库管理和性能调节等功能。Xcode本身提供效果非常好的模拟器,如果需要真机调试,就需要注册苹果账号。完成应用开发后,如果要将应用发布上架到App Store中,还需要申请、购买开发者账号。
- 2.2.3.1 特点HarmonyOS是华为公司开发的一款基于微内核、面向5G物联网、面向全场景的分布式操作系统,支持基于Android生态开发的应用平稳迁移。HarmonyOS的设计初衷是满足全场景智慧体验的高标准的连接要求,为此华为提出了HarmonyOS的四大特性。(1)分布式架构。HarmonyOS首次将分布式架构用于终端OS,将分布式应用的底层技术实现难度对应用开发者屏蔽,使开发者能够聚焦自身业务逻辑,像开发同一终端一样开发跨终端分布式应用,也让最终消费者享受到了强大的跨终端业务协同能力为各使用场景带来的无缝体验。(2)天生流畅。HarmonyOS通过使用确定时延引擎和高性能IPC两大技术解决现有系统性能不足的问题。确定时延引擎可在任务执行前分配系统中的任务执行优先级及时限,进行调度处理,优先保障优先级高的任务资源的调度,应用响应时延降低了25.7%。鸿蒙微内核结构小巧的特性使IPC(进程间通信)的性能大大提高,进程通信效率较现有系统提升了5倍。(3)内核安全。HarmonyOS采用全新的微内核设计,微内核只提供最基础的服务,如多进程调度和多进程通信等。首次将形式化方法用于终端TEE,通过形式化方法可以显著提升安全等级。同时,由于微内核的代码量只有Linux宏内核的千分之一,其受攻击的概率也大幅降低。(4)生态共享。HarmonyOS凭借多终端开发IDE,采用多语言统一编译,分布式架构Kit提供屏幕布局控件及交互的自动适配,支持控件拖拽,面向预览的可视化编程,从而使开发者可以基于同一工程高效构建多端自动运行App,实现真正的一次开发、多端部署,在跨设备之间实现生态共享。
- 2.2.3.2 平台架构HarmonyOS整体遵从分层设计,从下向上依次为内核层、系统服务层、应用框架层和应用层。HarmonyOS平台架构如图2-1所示。[插图]图2-1 HarmonyOS平台架构(1)内核层:内核子系统采用多内核设计,支持针对不同资源受限设备选用适合的OS内核。HarmonyOS驱动框架(HDF)是HarmonyOS硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。(2)系统服务层:该层是HarmonyOS的核心能力集合。系统基本能力子系统集为分布式应用在HarmonyOS多设备上的运行、调度、迁移等操作提供基础能力,由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时子系统、公共基础库子系统、多模输入子系统、图形子系统、安全子系统、AI子系统等组成。基础软件服务子系统集提供公共的、通用的软件服务,由事件通知子系统、电话子系统、多媒体子系统、DFX子系统、MSDP&DV子系统等组成。增强软件服务子系统集提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务子系统、穿戴专有业务子系统、IOT专有业务子系统等组成。硬件服务子系统集提供硬件服务,由位置服务子系统、生物特征识别子系统、穿戴专有硬件服务子系统、IOT专有硬件服务子系统等组成。根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。(3)应用框架层:为HarmonyOS的应用程序提供了Java/C/C++/JS等多语言的用户程序框架和Ability框架,以及各种软硬件服务对外开放的多语言框架API;同时为采用HarmonyOS的设备提供了C/C++/JS等多语言的框架API,不同设备支持的API与系统的组件化裁剪程度相关。(4)应用层:包括系统应用和扩展应用/三方应用。HarmonyOS的应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供在后台运行任务的能力及统一的数据访问抽象能力。基于FA/PA开发的应用能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。
2.4 本章小结
- 2.4 本章小结本章简要介绍了目前移动应用的三种开发模式:原生开发、网页开发、混合开发,让读者在开发之前先对开发模式有所了解。然后对Android、iOS、HarmonyOS这三种主流的移动开发平台进行阐述,介绍其起源、特点、体系架构等。重点介绍了实现移动GIS应用的两种开发平台,如天地图、百度、高德提供的互联网移动地图开发平台,以及ArcGIS、MapGIS、SuperMap提供的主流的专业移动GIS开发平台。基于这些移动GIS开发平台,我们能够快速开发出各种移动GIS应用。
3.1 Android平台
- 3.1.2 Android平台特点3.1.2.1 开放性Android是基于开源的Linux系统开发的,Android同样是开源的,从底层的操作系统到上层的应用程序达到了完全开放的状态。Google和开放手机联盟的目的就是建立标准化、开放式的移动软件平台,在移动产业内形成一个开放式的生态系统。由于提供了一个开放的环境,吸引了大量的开发者,第三方开源库、第三方开源分享等资料自然而然就越来越多,从而促进Android系统日益成熟。3.1.2.2 硬件丰富性Android系统的硬件丰富性表现在两方面:一是Android支持多元化的设备,不光支持智能手机,还支持平板电脑、智能电视、智能移动穿戴设备(如智能手表、车载导航等);另一方面,由于其开放性,众多移动终端厂商加入联盟,多种基于Android的个性化操作系统出现,如EMUI、MIUI等。3.1.2.3 自由开发Android的开放性在应用的开发上也有所体现,用户可以不受限制、免费、自由地开发,发布需要的应用;并且众多实用库、开发工具、开发资源使得程序的开发变得更加简单。这对于开发者来说具有极大的吸引力,从而产生了大量优质、新颖的应用资源,从中受益最大的就是消费者,这也在市场方面提高了Android的竞争力。3.1.2.4 无缝对接Google应用Android为Google旗下产品,所以可以无缝对接各种Google优质服务,如搜索、地图、邮件等,为用户提供更好的服务,部分功能甚至已经嵌入Android系统。以上为Android系统的优势,但其也存在一些问题。(1)软件质量问题:由于应用开发完全自由,软件的质量参差不齐,导致部分低劣、安全性存在问题的软件出现,增大了软件的控制难度。(2)系统碎片化问题:多种移动设备厂商在Android原生系统的基础上进行修改和定制,可能会导致部分在原生系统上能够执行的功能在定制系统上无法执行。(3)屏幕适配问题:各家移动设备厂商生产了具有各种尺寸的屏幕的手机,以及更大的平板电脑,这种屏幕碎片化的问题给Android程序开发人员带来了较大的工作量,程序界面需要适配不同尺寸的屏幕。
- 3.1.3.1 系统应用层(System Apps)系统应用层提供直接与用户交互的应用程序,包括系统内置的应用程序和非系统级的应用程序。例如,电子邮件、短信、日历、互联网浏览和联系人等核心应用,以及从各大应用商店下载的第三方应用等,通常都是用Java语言编写的。Android平台自带的应用与用户可以选择安装的第三方应用一样,并没有特殊性,是可以被开发人员开发的应用替代的,第三方应用可成为用户的默认浏览器、图库、相机、短信、键盘等,使得程序能够更加灵活、个性化。3.1.3.2 应用程序框架层(Java API Framework)应用程序框架层提供了大量用Java语言编写的API,通过调用API中的接口,可以实现Android系统所有的功能。通过这些API,可以简化核心模块化系统组件和服务的重复使用,任何一个应用都可以发布自己的功能模块,只要遵守框架的限制,就可以被其他应用使用,具体包括以下组件和服务。(1)内容提供器(Content Providers):使得不同应用程序之间可以共享数据。(2)视图系统(View System):构建应用程序的基本UI组件,包括列表、网格、文本框、按钮,甚至是可嵌入的网络浏览器。(3)活动管理器(Activity Manager):管理各个应用程序的生命周期及通常的导航回退功能。(4)位置管理器(Location Manager):提供位置服务。(5)包管理器(Package Manager):管理所有安装在Android系统中的应用程序。(6)通知管理器(Notification Manager):使得应用程序可以在状态栏中自定义提示信息。(7)资源管理器(Resource Manager):用于访问非代码资源,如本地化的字符串、图片、布局文件、颜色文件等。(8)电话管理器(Telephony Manager):管理所有的移动设备功能。(9)窗口管理器(Window Manager):管理所有开启的窗口程序。3.1.3.3 系统运行库层(Native C/C++Libraries、Android Runtime)系统运行库层分为以下两部分。(1)原生C/C++库(Native C/C++Libraries),包含一些用于系统中不同组件的C/C++库,一般情况下不能直接调用,通过应用程序框架为开发者提供服务,这些原生C/C++库也是应用程序框架的支撑环节。如果采用C/C++代码开发应用,可以使用Android NDK直接从原生代码访问某些原生平台库。原生C/C++库主要包括以下几部分。● Webkit:一套网页浏览器的软件引擎。● OpenMAX AL:应用和多媒体中间层的标准接口,使得应用在多媒体接口上具有可移植性。● Libc:从BSD继承来的标准C系统函数库,是专门为基于嵌入式Linux设备定制的。● Media Framework:多媒体库,支持多种常用的音频、视频的录制和回放。● OpenGL ES:3D绘图函数库。(2)Android运行时(Android Runtime),Android运行时分为核心库和ART两部分,核心库提供了Java语言核心库使用的大部分功能,ART则负责运行应用程序。①Android Runtime(ART)。Android 5.0(API 21)及更高的版本采用ART取代Dalvik虚拟机,ART是Android上的应用和部分系统服务使用的托管式运行时。每个Android应用程序都有一个专有的进程,并且有对应的ART实例,在该实例中运行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。ART通过执行DEX文件在低内存设备上运行多个虚拟机,DEX文件是一种专为Android设计的字节码格式,经过优化,其使用的内存很少。编译工具链(如Jack)将Java源代码编译为DEX字节码,使其可在Android平台上运行。在Android版本5.0(API 21)之前,采用Dalvik虚拟机作为Android的运行时,Dalvik是一种基于寄存器的Java虚拟机,和传统的基于栈的虚拟机不同(如JVM),Dalvik对内存资源进行了优化,并且支持一个设备上运行多个虚拟系统。ART在Dalvik的基础上又做了进一步的优化,在Dalvik下,程序每次运行,字节码都需要通过即时编译器转换为机器码,会影响程序的运行效率;而在ART环境中,程序第一次安装时,字节码就会预先编译成机器码,使得程序运行时的速度非常快。但是ART机制会占据更多的存储空间,应用安装和系统启动时间会增加。ART兼容了Dalvik,所以如果一个应用在ART上的运行效果很好,那么它在Dalvik上应该也可以运行,但反过来就不一定了。ART的功能主要包括以下几方面。● 预先(AOT)编译,ART引入了预先编译机制,可提高应用的性能,在安装时就会编译应用。● 优化的垃圾回收(GC)机制,优化垃圾回收机制,提高应用性能。● 对开发、调试的优化支持,ART提供了大量功能来优化应用开发和调试,包括专用采样分析器、详细的诊断异常和崩溃报告。②Core Libraries(核心库):核心库提供Java API框架层使用的大部分功能。3.1.3.4 硬件抽象层(Hardware Abstraction Layer,HAL)HAL是硬件与软件之间的抽象层,可定义一个标准接口以供硬件供应商实现,是对硬件设备具体实现的抽象,隐藏了平台的硬件接口细节,使其具有硬件无关性,可在多种平台上进行移植。硬件抽象层(HAL)提供标准界面,向更高级别的Java API框架显示设备硬件功能。HAL包含多个库模块,其中,每个模块都为特定类型的硬件组件实现一个界面,如相机或蓝牙模块。当框架API要求访问设备硬件时,Android系统将为该硬件组件加载库模块。3.1.3.5 Linux内核层(Linux Kernel)Android平台的基础是Linux内核。例如,Android Runtime(ART)依靠Linux内核来执行底层功能,如系统的安全性、线程和底层内存管理、网络协议栈、驱动模型等。
- 3.1.4 Android开发语言Android App的开发采用的主流语言就是Java,但是Android是基于Linux操作系统而产生的,所以Android的底层也是支持C/C++的。基于Android系统的应用程序一般可采用以下两种方式进行开发。3.1.4.1 基于SDK的Java编程Android的SDK是由Java开发的,所以如果要使用SDK开发,必须使用Java语言,这种方式也是目前的主流方式。那么,为何Java会成为Android开发的主流语言呢?首先,Android系统最初的目的就是要实现开源,支持在不同厂商的不同硬件设备上运行。Java以其跨平台性著称,具备上述功能,通过跨平台屏蔽底层硬件的差异,让程序员不必考虑底层硬件的差别而编写多种代码。同时,Java是一种相当成熟的计算机编程语言,其开发者数量巨大,第三方类库、工具等资源众多,使得其开发难度降低。还有最重要的一点,Java虚拟机规范也是开放的,谷歌只要按照甲骨文的虚拟机规范很容易写出一套虚拟机。将多种因素结合在一起,Java成为最适合Android开发的语言。3.1.4.2 基于NDK的C/C++编程NDK,即Native Development Kit,是指原生开发工具包,与Android SDK类似,NDK是Google推出的用于Android App开发的开发工具包。与Android SDK不同的是,NDK采用C/C++语言。NDK是一系列工具的集合,帮助开发者快速开发C(或C++)的动态库,并能自动将so和Java应用一起打包成APK。这些工具对开发者的帮助是巨大的。它集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件,就可以创建so。它可以自动将so和Java应用一起打包,大大减轻了开发人员的打包工作。Android程序运行在Dalvik虚拟机中,NDK允许用户使用类似C/C++的原生代码语言执行部分程序。之前Android并没有提供NDK,只有SDK。开发者要使用C/C++的第三方类库,就必须使用非官方的方法,执行起来较困难。并且这种需求在增多,所以NDK的产生是必然的。NDK具有很多采用Java开发Android所不具备的优点,具体如下。● 对代码的保护,由于APK的Java层代码很容易被反编译,而C/C++库被反编译的难度较大。● 可以方便地使用现存的开源库,因为大部分的开源库都是用C/C++代码编写的。● 提高程序的执行效率,将要求高性能的应用逻辑使用C语言开发,从而提高应用程序的执行效率。● 便于移植,用C/C++语言写的库很容易在其他的嵌入式平台上再次使用。由于NDK具有这些优点,所以可以用于以下情况。● 用于一些计算密集型应用和要求高性能的图像渲染工作,如大型的游戏或物理模拟。使用Android SDK通过Java来开发,在速度和性能上很难满足要求。● 重复使用自己或其他开发者的C/C++库。基于Android SDK的开发方式,目前主流采用Java语言。但是2017年,Google在I/O大会上宣布Kotlin正式成为Android的官方语言,引起了开发界的轰动。Kotlin是用于现代多平台应用的静态编程语言,由JetBrains(捷克的一家软件开发公司)开发,具有简洁、安全、互操作、工具友好等优点。但是,目前的学习资料、第三方资源尚且不多,还需要更多的人推动其发展。同时,NDK的开发难度较大,对于Android开发的初学者来说并不适用。所以,就目前而言,Java仍是Android开发的首选。因此,本书后续会采用Android SDK的Java开发方式讲解移动GIS应用的开发。
3.3 Android应用程序
- 3.3.4 Activity生命周期Activity以4种状态形式存在,会根据用户的操作在4种状态之间来回切换,不同的操作会有不同的切换效果,4种状态如下。(1)运行状态。此Activity处于堆栈的顶端,位于屏幕的最前方,对用户可见并具有焦点,可与用户进行交互操作。(2)暂停状态。开启的第二个Activity,对用户可见并具有焦点。第一个Activity不在栈顶,失去了焦点,但此时仍然可见,处于暂停状态。对用户可见的原因是第二个Activity处于第一个Activity的上方,但并没有完全覆盖手机屏幕,或者处于半透明的状态,如对话框形式的Activity只占据屏幕的部分区域。此时第一个Activity对象仍保留在内存中,保留了所有的状态和成员信息,与窗口管理器仍保持连接。但在系统内存极度不足时,此Activity可能会被系统强制终止。(3)停止状态。当一个Activity被另一个Activity完全覆盖时,就会处于停止状态,不处于栈顶,不可见,也没有焦点。停止状态的Activity位于后台,和暂停状态一样,Activity对象仍保留在内存中,所有状态、成员信息都得以保存,但并未与窗口管理器连接。当然,在其他地方需要内存时,该Activity可能会被系统终止。(4)销毁状态。当Activity由于人为原因(调用finish()方法)或系统内存原因(内存不足被收回)被系统销毁,从返回栈中被移除时,Activity就处于销毁状态。如果Activity被销毁,其内存将被删除,那么再次打开Activity时,必须重建。在了解了Activity的状态之后,一起来看看对Activity生命周期的管理。通俗来说,Activity的生命周期就是从生成到销毁,经过不同的操作,经历运行、暂停、停止、销毁状态切换的过程。当一个Activity在这4种状态之间切换时,系统会自动通过各种回调方法向其发出通知。用户可以在Activity状态发生变化时重写这些方法来执行相应的操作,所以理解生命周期函数非常重要。Activity生命周期如图3-59所示。以下7个回调方法覆盖了Activity生命周期的每个环节。(1)onCreate()。此方法在创建Activity时调用,是Activity生命周期中调用的第一个方法。在创建Activity类时,必须重写此方法,并且在其中完成初始化的工作,如初始化布局控件、绑定数据到列表控件、绑定按钮单击事件等,最重要的是利用setContentView()方法来定义Activity界面的布局。(2)onStart()。此方法会在Activity创建后执行。这时,已经创建好Activity,但是不可见,在调用onStart()后,Activity对用户可见。(3)onRestart()。此方法在Activity已停止并即将再次启动前调用。例如,从第一个Activity启动第二个Activity,再回到第一个Activity时,就会进入onRestart()回调函数。(4)onResume()。在Activity即将开始与用户进行交互之前调用,此时Activity处于Activity堆栈的顶层,并具有用户输入焦点。注意其与onStart()函数的区别,执行onStart()时,Activity只是可见,并不能操作,执行onResume()时才可交互。在Activity退出前台,但并未销毁,也未停止(执行onStop()),再次返回前台时调用。
第4章 基于Android的移动GIS开发平台
- 第4章 基于Android的移动GIS开发平台移动互联网和智能终端的普及,特别是平板电脑、智能手机的流行,让移动成为一种新的生产生活方式。人们可以借助移动智能终端设备获取、体验和分享地理位置信息与各种服务,甚至可以参与政企决策,轻轻松松在指尖运筹帷幄。目前,移动GIS已广泛应用于测绘、国土、公安、市政、智慧城市等领域,促使其高速发展。市场上不断涌现出一些优秀的互联网地图开放平台,各GIS平台厂商也纷纷基于Android、iOS等主流操作系统推出各自的移动GIS开发平台,通过这些开源或专业的GIS开发平台,可高效开发出各种行业应用的App,满足市场和大众的需求。工欲善其事,必先利其器。本书选用武汉中地数码科技有限公司提供的移动GIS开发平台MapGIS Mobile,为广大开发者全面介绍移动GIS的开发与应用。本章将重点带领读者了解MapGIS Mobile开发平台的功能体系、开发方式、开发流程等内容。帮助读者整体认识与掌握开发平台,对于后续实际功能的开发会有很大的帮助。
4.1 MapGIS Mobile开发平台
- 4.1 MapGIS Mobile开发平台MapGIS是武汉中地数码科技有限公司推出的自主可控的全空间智能GIS平台,由大数据与云平台、桌面端、浏览器端、移动端等多个通用工具产品及系列开发SDK组成,云端深度融合,提供强大的数据存储、管理、分析和计算能力,可以满足用户个性化的扩展开发需求。MapGIS产品家族如图4-1所示。MapGIS Mobile是MapGIS产品系列中的移动端GIS开发平台,包括两款移动端工具产品:MapGIS Mobile Explorer、MapGIS Mobile Collector,以及面向iOS和Andriod的两款SDK。本书将选择Android的开发方式,选择MapGIS Mobile for Android(10.5)移动GIS开发平台,全面介绍移动GIS应用开发知识。
- 4.1.1 MapGIS Mobile的发展历程纵观MapGIS Mobile发展史,可分为三个重要阶段。第一阶段:MapGIS嵌入式二次开发平台。1998年,EMS1.0首次发布,这是GIS技术在移动领域的首次创新。2002年,EMS2.0作为国家863项目的重要部分,探索了部分GIS的新概念和通用嵌入式开发,是构件化技术在移动领域的重要实践。2006年,EMS3.0对嵌入式系统、嵌入式开发及嵌入式GIS开发进行了深入的分析和研究,在跨平台与高效导航引擎方面有重大突破。第二阶段:MapGIS Mobile 9。2012年,MapGIS Mobile 9依托MapGIS IGSS共享服务平台提供丰富的地理空间信息服务,面向行业和大众领域,提供无差异的在线和离线式GIS服务,构建完整的应用解决方案,实现云GIS服务与移动应用的无缝衔接,彻底架起了从端到云的桥梁。第三阶段:MapGIS Mobile 10。2016年,MapGIS Mobile 10.2面向行业和大众领域,提供了专业、丰富的移动GIS功能,能够支持多样的数据来源、良好的地图操作、强大的在线离线编辑、性能卓越的移动三维,以及网络分析、空间分析、路径导航等地理分析功能,可用于快速开发和构建各种主流智能移动设备上的移动GIS应用。2020年,MapGIS Mobile 10.5与云端产品融合,全面支持Android、iOS等主流操作系统的智能移动终端,实现与HarmonyOS的初步对接,为开发者打造了一个功能全面、灵活扩展、高效易用、资源丰富的移动GIS应用开发平台,为移动二三维一体化GIS应用提供完备解决方案。
- 4.1.3 MapGIS Mobile平台特性4.1.3.1 全国产化跨平台支持MapGIS Mobile 10.5升级为统一跨平台内核,可以支持Harmony2.0系统,内核升级后,其与桌面、服务器GIS的内核统一,提供全平台一致的开发能力,GIS能力更强,扩展性更高。三端数据同源,使用HDB高性能文件数据库,同时全面接入全空间三维模型数据格式及服务接口规范(M3D)团体标准,具有更好的三维支持能力。4.1.3.2 全空间真三维功能MapGIS Mobile基于高性能的移动三维渲染引擎与C++移动三维内核,提供移动端全空间真三维功能,支持在线与离线、球面与平面显示模式,可实现分屏显示,支持三维场景管理、设置、特效、地形贴合等功能。全空间真三维功能如图4-2所示。[插图]图4-2 全空间真三维功能4.1.3.3 动态数据渲染支持时空大数据MapGIS Mobile提供柱状图、折线图、饼状图、仪表盘、热力图、散点图等多样化的数据渲染方式,并支持图表样式个性化设置,可以实现大数据量分析、实时数据渲染、辅助决策、动态推演、动态注记、动态专题图等功能。4.1.3.4 便捷、高效、智能的数据采集MapGIS Mobile提供基于北斗、GPS的实时定位与数据采集功能,支持多种轨迹处理方法;提供离线、在线一体化数据编辑与简便易用的编辑器工具,支持数据同步、增量更新。MapGIS Mobile提供实时定位与数据采集功能:基于北斗、GPS的实时定位与数据采集功能,自动获取移动终端的位置信息,形成轨迹,保存为移动端离线矢量数据。能够对定位点进行去重,剔除异常点,对轨迹进行平滑、自动加密和稀疏处理,可以实现轨迹与道路的自动匹配。数据采集同步与更新:为移动端数据采集提供简便易用的草图编辑器工具,支持外业人员在离线状态下采集数据,并保存为移动端本地矢量数据,在有网状态下同步更新至服务器端。离线、在线数据同步提供要素与数据库模式,支持选定图层设定条件下的要素同步,也支持数据库全部图层数据同步。同时,提供离线、在线数据增量更新功能,使得数据维护更加简便、高效,提高数据的时效性。4.1.3.5 室内外一体化定位导航MapGIS Mobile针对移动端导航应用,基于统一的室内外一体化接口提供大众导航、行业导航、室内导航功能,支持高德、四维图新数据与自采集数据,提供路径规划、分析与引导功能,可实现模拟导航、真实导航应用;新增室内定位,室内外定位导航无缝对接。4.1.3.6 移动AR与GIS融合应用MapGIS Mobile 10.5将移动AR技术与GIS可视化技术相结合,提供AR地图浏览功能,在现实场景中融合显示GIS数据,如兴趣点、道路、三维模型等,提供沉浸式的GIS应用体验、智能应用、创新模式。移动AR与GIS融合应用如图4-3所示。[插图]图4-3 移动AR与GIS融合应用4.1.3.7 平台开放、性能稳定MapGIS Mobile平台全面支持64位系统,Android、iOS内核统一,基于矢量瓦片技术提升渲染性能。目前全面支持在线MapGIS地图服务、OGC地图服务、第三方公开地图服务;支持MapGIS离线数据、本地三维数据、DEM、影像、MBTiles、TPK、GeoPackage瓦片数据源。不断提供丰富实用的工具模块,如放大镜、草图编辑器、瓦片预缓存、卷帘工具等。目前,MapGIS Mobile平台的产品与二次开发统一使用云许可,包括产品运行云许可、免费开发云许可,支持个性化定制。
- 4.1.5 MapGIS Mobile的应用MapGIS Mobile是一个功能比较全面的专业移动GIS开发平台,提供了丰富的移动GIS功能,功能覆盖了GIS应用系统的各个方面,包括地图可视化、地图管理、数据查询、地图编辑、分析功能、轨迹自动采集、地图标绘功能、动态数据可视化、室内外定位、地图导航功能、真三维功能、地图工具等。面向开发者提供支持主流移动操作系统的应用开发接口,支持开发者快速开发移动GIS App,并可在主流嵌入式硬件平台终端上高效部署。(1)地图可视化。支持多种数据源,支持离线矢量、瓦片数据等,对于在线数据,能快速访问MapGIS IGServer发布的地图服务,以及多种互联网公开的地图服务,较大程度上扩展了移动终端的数据源。同时提供灵活的地图加载方式与接口,具有精细化的渲染显示效果,支持多视图显示地图,并提供各种调度机制与缓存策略,满足用户的多种场景需求。(2)地图管理。针对地图视图与地图内容管理,提供丰富的功能接口,包括地图界面控制(导航、指南针、比例尺、logo等)、地图操作(放大、缩小、复位、旋转、倾斜、跳转、2D/3D与球面/平面显示模式、多种地图交互手势、任意变化的动画特效、显示监听、手势监听等)、地图系统库设置、地图图层管理、样式管理等功能。(3)数据查询。提供统一的离线、在线数据查询接口,支持离线、在线模式的要素查询功能,包括属性查询、空间范围查询、联合查询,支持对模糊相交、精确相交和包含等空间拓扑关系的判断。(4)地图编辑。支持常规的图形编辑,以多种方式实现离线、在线数据的交互通信,提供数据同步、增量更新、离线/在线要素编辑、拓扑编辑、拓扑捕捉等功能。(5)分析功能。提供离线/在线缓冲区分析、叠加分析、裁剪分析、网络分析和地理匹配功能,实现对空间数据的挖掘与处理。(6)轨迹自动采集。基于移动设备,北斗、GPS记录其连续的位置,自动采集位置信息形成轨迹,保存为移动端离线矢量数据。提供多种采集模式,支持距离间隔、时间间隔模式采集点,并具备抓路模式;对于轨迹,可以进行进一步的处理,如自动平滑,去重、剔除异常点,进行自动加密和稀疏处理,支持各种应用需求。(7)地图标绘功能。提供基本图形绘制与行业应用标绘功能,支持在地图上画点、线、虚线、纹理线、圆、多边形,添加文本、图像等功能;地图标注功能,支持多种标注功能,如图片标注、图文标注等,可自定义标注视图,可满足多种实际应用需求。(8)动态数据可视化。在移动端上可以像在PC端上一样进行地图的制作,包括动态图表和专题图的生成与修改、动态注记风格和策略的调整,动态展示还能够反应数据的即时变化,充分发挥移动应用的即时效应。其中,动态绘制图表功能可以绘制折线图、柱状图、饼状图、仪表盘等传统图表,还能绘制散点图、热力图、聚合图、关系图等新型图表,支持时空大数据渲染,可以挖掘数据、辅助决策。(9)室内外定位。利用北斗、GPS卫星定位技术、Wi-Fi位置指纹定位技术、IMU惯性航位推算技术,实现了室外的基本定位。在室内环境中,基于Wi-Fi,经过采集编译,可获取较高精度的位置信息,实现室内定位功能。(10)地图导航功能。地图导航功能提供室内外一体化路径计算和智能路径引导功能。在路径计算方面,提供多种偏好设置,如距离最短、时间最快、费用最低等,同城单次规划的速度在3秒以内,并且支持多个途经点和避让区的设置,可实现跨楼层的室内路径计算及室内外一体化的路径计算功能。支持模拟导航结合北斗、GPS定位信息实现真实导航。(11)真三维功能。提供三维控件(球面与平面),支持本地离线的矢量、影像、DEM、栅格瓦片、模型、倾斜摄影数据等。支持在线地图服务,即接入MapGIS地图服务与第三方服务。(12)地图工具。为便于快速集成应用开发,提供了很多常用的工具,如放大镜、量算工具、卷帘工具、投影转换工具、数据采集工具、草图编辑器等。目前,MapGIS Mobile将定位导航、空间分析、测量等常用的服务整合,结合各行业应用业务需求进行封装组合,形成了移动数据采集、移动资源监察、综合运营调度、综合移动执法等相关应用解决方案,已广泛应用于国土、市政、公安、工商执法等领域。例如,国土移动一张图如图4-5所示,公安智能智慧调度平台移动端如图4-6所示。
第5章 基于Android的移动GIS开发实践(基础篇)
- 第5章 基于Android的移动GIS开发实践(基础篇)现在起,我们将进入移动GIS功能的开发实践学习。从第5章到第7章依次为基础、进阶、提升三个梯度的学习阶段,也是本书的重点内容,对MapGIS移动开发平台提供的几乎所有二维功能都进行具体讲解与展示,功能的难易程度会逐渐递进。目前,移动GIS应用的80%仍聚焦在移动地图可视化、查询统计功能,是移动GIS的关键内容。本章将从根本的地图数据组织与可视化开始,讲解与地图相关的基础功能,包括对地图与图层进行的各种操作、控制、管理,还有一些常用的功能,如图形绘制、标注显示及非常重要的地图查询。在每个功能模块,都详细介绍了功能应用场景、原理与方法、具体实现流程,同时提供了核心代码。相信通过本书内容,再结合API文档、配套示例代码,读者可以非常轻松地学习和掌握移动GIS功能开发,从而丰富自己的GIS应用。
5.1 移动数据组织
- 5.1.2.2 数据模式MapGIS Mobile支持离线地图和在线地图,地图数据的使用分为离线模式、在线模式及混合模式三种,分别具有各自的优势,用户可针对不同的应用场景、不同的需求选择合适的数据及模式,保证应用的合理性、实用性。(1)离线模式。离线模式可利用MapGIS桌面平台来进行软件配置、转换数据,将地图数据存放在移动终端,移动应用程序可直接调用离线地图。离线模式的优势在于数据在移动端本地存储,数据访问不受限于网络,数据访问速度更快,可以进行更深入的数据应用与挖掘。(2)在线模式。在线模式可完美对接PC端的GIS服务器(MapGIS IGServer、第三方地图服务),在移动应用程序中访问在服务器端配置、发布的地图服务,并提供数据缓存机制,浏览过的级别、范围的地图数据会被自动缓存到移动终端。在线模式的优势在于对移动端本地存储的要求低,而且可以实时在线访问地图数据,确保数据同步,另外其数据缓存机制可确保地图访问效率和流畅体验。(3)混合模式。混合模式可通过在桌面平台软件中配置、转换,或者通过代码组织叠加的方式,将离线数据与服务器端在线地图数据组织为一个地图文档,从而能够同时加载,结合了离线模式与在线模式的特点。
5.2 地图可视化
- 5.2.1 移动地图可视化原理MapGIS Mobile采用高性能地图渲染引擎,充分利用GPU的加速能力,结合各种调度机制和缓存策略,使得地图能够快速展示。(1)数据获取。对于离线矢量数据,从MapGIS矢量数据库*.HDB中获取、处理信息,利用渲染引擎进行点、线、区、文字等的绘制显示;对于离线瓦片数据,则从MapGIS瓦片数据文件(*.MUT/*.TDF)中根据需要的瓦片级别、行列号取出对应图片,然后将所有图片拼接成一张完整地图进而展示;对于在线数据,请求MapGIS IGServer或第三方地图服务器提供的地图服务,获取地图,进而展示在地图视图中。(2)地图缩放、移动。当地图缩放或移动时,根据地图的级别、地图中心点的变化来重新计算需要显示在视图范围内的地图数据,获取数据后再重新绘制,生成变化后的地图显示效果。(3)地图组织。对地图数据的组织来说,与MapGIS桌面平台软件中的组织是一致的。地图文档Document是用来组织地图的,其中,可以有多个地图,一个地图由一个或多个图层组成,图层中包括许多地图要素(点、线、面、注记),对应的就是实际的地图数据。在调用地图显示接口时,底层算法会遍历地图中的所有图层,获取其中包括的要素,按照逐个图层绘制。地图显示逻辑结构如图5-15所示。
5.5 地图查询
- 5.5 地图查询对空间数据的管理、查询与分析能力是衡量GIS平台的一个重要依据,地图查询是GIS应该具备的基础功能,主要包括从空间位置检索空间物体及其属性,从属性条件集检索空间物体。地图查询也是移动GIS应用中常用的核心功能之一,广泛应用于各类项目中。通过空间和属性条件查询地理要素,提取所需要素的空间与属性信息,与地图联动,进行展示,满足应用的需求。MapGIS平台将空间信息与属性信息集中管理,通过扩展的结构化空间查询语言实现查询功能,支持空间数据查询功能。基于GIS的特性,地图要素查询可以分为空间几何查询、属性条件查询,以及两者结合的复合查询。其中,空间查询有点查询、矩形查询、多边形查询三种基本方式,在实际引用中通常以交互操作的空间范围为限定条件进行查询;属性查询以要素属性为限定条件进行查询;复合查询则将前两者的结合,即将空间范围和属性条件组合,统一查询满足要求的空间要素。在MapGIS移动端,由于数据可分为离线数据和在线数据,所以从数据角度可以将地图查询分为离线数据查询、在线数据查询两类,每一类数据又与空间、属性、复合三种查询类型组合对应。地图查询分类如图5-39所示。
7.1 定位功能
- 7.1.1 移动定位技术近年来,移动定位技术受到了越来越多的关注,从航海、航天、航空、测绘、军事、自然灾害预防等“高大上”领域,到日常生活中的人员搜寻、位置查找、车辆导航与线路规划等,各种定位技术都被广泛应用。移动定位技术代表着全新的商机,代表着移动技术发展的一个新阶段。我们将定位技术按照使用场景的不同划分为室外定位和室内定位两大类。(1)室外定位技术。室外定位主要用于满足用户对室外位置服务的需求,是目前较成熟的技术,主要分为卫星定位和基站定位。室外定位技术主要依赖于中国北斗卫星导航系统、美国全球定位系统(GPS)、俄罗斯格洛纳斯系统(GLONASS)、欧洲伽利略系统(GALILEO),这些均为全球卫星定位导航系统。卫星定位是通过接收卫星提供的经纬度坐标信号来进行定位的,根据卫星的精确位置信息、移动终端与各个卫星的距离、信号传播时间、信号传播时差等信息进行计算,从而得到移动终端的经纬度和高程。(2)室内定位技术。随着定位技术在物联网行业应用范围的不断扩大,新兴应用对定位的需求已不再局限于单纯的室外场景,在室内定位、多种环境下的混合定位等方面也提出了新的需求。例如,在大型商场,商场希望能够为前来购物的消费者提供实时导引服务,同时基于位置提供对应的营销服务;在大型医院,医院希望对医疗设备进行实时定位,便于在需要时能够快速调用位置信息,希望对特殊病患进行定位监护,防止其发生意外;在发生火灾或其他紧急事件时,救援人员希望通过求生者提供的位置信息,迅速地寻找到求生者,让求生者尽快脱离险境。除此之外,室内定位在零售、餐饮、物流、制造、化工、电力等行业均展现出了广阔的市场需求。室外定位的误差往往为几十米或更大,无法满足室内定位误差几米的精度需求。于是室内定位技术应运而生,成为室外定位的有力补充。目前室内定位技术主要有红外线定位技术、超声波定位技术、超宽带定位技术、蓝牙定位技术、射频识别定位技术(RFID)、Wi-Fi定位技术等。红外线室内定位技术有两种,第一种是被定位目标使用红外线IR标识作为移动点,发射调制红外线,通过安装在室内的光学传感器接收红外射线进行定位;第二种是通过多对发射器和接收器形成红外线网覆盖待测空间,直接对运动目标进行定位。红外线室内定位精度高,但是由于红外线只能视距传播,容易受障碍物及灯光、烟雾、悬浮固体和液体颗粒物等环境因素的影响,使得定位效果有限,比较适用于实验室对简单物体的轨迹精确定位记录及室内自走机器人的位置定位。超声波室内定位系统是基于超声波测距系统而开发的。超声波测距是发射换能器向外发射超声波,超声波在介质中传播,遇到障碍后反射,产生回波,接收换能器接收回波。超声波室内定位系统主要采用TOA定位方法,即通过测量已知点与未知点之间的信号传播时间来计算它们之间的距离。超声波的整体精度可以达到厘米级别,其结构相对简单,具有一定的穿透性及抗干扰能力。但是超声波在空气中的衰减较大,不适用于大型场合,加上反射测距时受多径效应和非视距传播的影响很大,需要精确分析计算的底层硬件设施投资,成本太高,这种技术广泛应用于数码笔、海上深矿、无人车间物品定位等。超宽带(UWB)定位技术是近年来新兴的一种高速传输数据的无线通信技术,其传输速度可达1000Mbps。具有系统容量大、传输速度快、发射功率低、辐射低、多径分辨率高、系统保密性好、信号穿透能力强、定位精度高等诸多优势,因此得到了广泛应用。但其硬件成本高,且只能视距传播,因此,主要应用于室内通信、家庭网络、位置测定、雷达检测等领域。由于辐射低,不会对精密仪表盘产生干扰,所以其在工业领域的应用也非常广泛。蓝牙定位按定位原理分为传播模型法和位置指纹法。其中,应用最广的是iBeacon技术。iBeacon技术是一种基于蓝牙4.0的低功耗蓝牙(BLE)技术。基于低功耗蓝牙技术的室内定位具有受周围环境的干扰较小、低功耗、蓝牙功能使用普遍等优势,是室内定位技术中应用最为广泛的技术。目前,蓝牙技术主要应用在室内导航、信息推送、位置监控等消费电子领域,随着蓝牙的普及及移动互联网的崛起,蓝牙技术的应用从手机、平板等便携式设备向物联网、医疗等新领域拓展,许多基于移动平台的蓝牙应用为整个无线市场带来了新的商业机遇。射频识别定位技术(RFID)是一种自动识别技术,可以通过无线信号识别特定目标,并读写有关数据。可以用射频方式进行非接触式双向通信交换数据,实现移动设备识别和定位的目的。它可以在几毫秒内得到厘米级定位精度的信息,且传输范围大、成本较低。因其不具备通信能力,故抗干扰能力差。射频识别技术由于非接触式和非视距等特点,已经成为优选的室内定位方法之一。目前该技术已经被仓库、工厂、商场广泛应用在货物、商品流转定位上,另外,RFID的信号穿透力强、抗干扰能力强、适用于各种复杂的场所,它也被用于矿场管理中。Wi-Fi定位是在近几年移动端室内定位中常用的定位技术,基于信号强度值可分为传播模型法和位置指纹法两种,传播模型法受周围环境、模型等的影响较大,导致定位精度相对较差。位置指纹法比传播模型法更为简单,但需要事先采集大量的指纹数据。Wi-Fi定位成本低、覆盖范围广,但是Wi-Fi信号不稳定,易受环境干扰,且定位精度为3~5m,精度较低。这种技术广泛应用于人或物体在家庭、办公场所、公共场所等布设有Wi-Fi的场合。另外,行人航位推算(PDR)是一种在室内环境中可提供行人航位信息并提高定位可靠性的技术。PDR通过实时测量行人的运动信息来识别行人的步数、步长和行进方向,无须在建筑内预装信标节点,这种方式可以有效降低部署成本,因此广泛应用于商业地图的路径导航过程中定位方向的测算与确定。
- 7.1.2 室外定位功能定位功能,不管是在大众移动应用中,还是在行业GIS应用中,都是非常重要的功能,应用极其广泛。例如,在手机地图导航应用中,通过定位能够知道用户当前所在的位置;在社交通信类应用中,用户也可将自己的位置分享给其他人,实现位置共享;在行业应用中,则常用于数据采集、移动巡检、移动执法等领域。移动定位的需求非常旺盛,开发人员可以使用多种方法实现移动定位。其中,Android原生定位功能的应用非常广泛,MapGIS Mobile for Android SDK提供了室内外一体化定位模块,室外定位的实现与室内定位的实现方式类似,可直接调用室内外一体化定位功能接口实现,用户可直接参考室内定位。本章节将详细介绍Android原生定位方法,开发者可直接使用Android SDK中的接口实现定位。原生定位方法由Android官方提供,不依赖任何第三方开发库。Android原生定位提供GPS定位和网络定位两种模式。GPS定位通过设备中的GPS定位模块接收卫星信号,从而实现定位。Network定位(网络定位)则包括Wi-Fi定位和基站定位两个模块:Wi-Fi定位,是指连接公共Wi-Fi网络,可获取其固定的Mac地址,访问Google提供的定位服务查询Wi-Fi路由器的位置,从而获取手机的定位信息;基站定位,是指在手机插入SIM卡并可用的情况下,会搜索并接收周围基站的信号,可利用周围三个基站的位置进行三角定位,从而获取设备的位置,或者获取基站的信息,然后访问网络,通过网络定位服务获取当前位置。以上两种定位模式都有各自的优缺点,用户在实际应用中可根据需求选择。GPS定位的优缺点如下。● GPS定位的优点:定位精度高,支持离线定位,依靠卫星,没有网络也能定位。● GPS定位的缺点:功耗大,需要开启移动设备中的GPS定位模块,会消耗较多电量;初次定位慢,即初次定位搜集卫星、计算数据等工作比较耗时,导致初次定位较慢;室内无法定位,需要接收卫星信号,容易受建筑等遮挡物的影响,室内基本无法定位;易受环境影响,即信号的接收容易受天气及建筑等遮挡物的影响,这也是导致室内基本无法定位的原因。网络定位的优缺点如下。● 网络定位的优点:定位速度快,只要满足网络或基站要求,在任何地方都可实现瞬间定位;功耗小,耗电量很小。● 网络定位的缺点:定位精度差,容易受干扰,在基站或Wi-Fi数量少、信号弱的地方定位质量较差,或者无法定位,必须连接网络才能实现定位。
- Android原生定位提供了几个核心接口,可从Android官网提供的API中学习。● LocationManager:定位管理器,定位实现的核心接口,提供了访问系统定位服务的功能,具有多种方法管理定位、获取定位。● LocationProvider:定位提供者,可以对定位的要求、条件进行设置。● LocationListener:定位监听器,能够实时监听位置变化、定位提供者的状态变化。可在其回调方法中动态获取定位信息。● Location:地理位置类,表示位置信息,包括经纬度、高程、速度、时间、精度等信息。
- 7.1.3 室内定位功能室内定位即通过技术手段获知人们在室内所处的实时位置或行动轨迹。MapGIS Mobile SDK提供室内外一体化定位模块,其中,室内定位可实现针对楼栋的高精度室内定位功能,同时结合导航模块,可实现高精度的室内定位与导航。本小节重点介绍MapGIS Mobile SDK的室内定位功能的具体实现方法。室内定位功能的一般流程为:①完成室内地图的制作与配置;②使用室内定位数据采集工具完成地图数据的采集;③使用指纹数据库转换工具完成数据库的预处理;④使用生成的指纹数据库在SDK中实现定位。MapGIS Mobile定位功能模块对应的API程序包为com.zondy.mapgis.android.location。其中,室内定位主要通过定位管理类(LocationManager)实现,通过setLocationOption()设置定位选项,通过startLocation()开启定位功能。7.1.3.1 地图配置室内地图的配置与移动端的其他地图配置相似,先在桌面工具配置地图文档,再编写室内定位的配置文件,如图7-2所示。
7.2 轨迹记录
- 7.2.1 轨迹记录概述随着定位、跟踪、存储技术的快速发展,以及位置采集和移动计算技术的进步,已经产生了大量的空间轨迹数据。我们通过搜集大量的人、动物和车辆等移动轨迹数据,进一步了解了人的生活规律、动物的活动习性,以及城市的交通状况等。MapGIS Mobile for Android SDK提供了轨迹记录功能模块,调用其接口可快速将轨迹记录功能集成于各种场景应用中。轨迹记录根据实际应用分为轨迹自动采集和轨迹回放两部分,下面将详细介绍其实现流程。
7.4 导航功能
- 7.4.1 导航功能概述衣食住行是人们日常生活中的四大要素,地图导航正是从人们的出行需求出发,提供了便捷、智能的位置服务。在智能手机普及之前,人们在出行中寻找目的地经常需要耗费大量精力。随着智能移动设备的高速发展,以及移动计算机技术、移动互联网技术、移动定位技术的发展,一些商业的地图导航软件产生,使得智能手机具备导航的功能,逐渐改变了人们的出行方式,替代了纸质地图。现如今,地图导航已经逐渐渗透到了人们的日常生活中,扮演着非常重要的角色。软件中的导航功能主要包括路径规划和路径引导两个阶段,路径规划即经计算分析得到当前定位点(或其他起始点)到达目的地的规划路线,在明确了行进的路线之后,路径引导则通过导航方式(含文字、图标、语音播报等)引导我们从起点向目的地前进。手机导航通过定位模块、导航软件、GSM通信模块相互分工,配合完成,其各部分的作用及基本工作原理为:①定位模块完成对卫星的搜索跟踪和定位速度等数据的采集工作;②通过导航软件的地图定位功能得到位置信息,不停地刷新电子地图,从而使我们在地图上的位置不停地运动、变化;③导航软件的路径引导计算功能,根据我们的需要,规划出一条到达目的地的行走路线,然后引导我们向目的地行走;④GSM通信模块则完成手机的通信功能,可根据手机功能对采集到的定位数据进行处理并上传到指定网站。MapGIS Mobile for Android开发平台提供专业的地图导航功能。基于统一的室内外一体化接口提供大众导航、行业导航、室内导航功能。(1)多图商数据支持:在数据格式的支持上,不仅支持高德、四维图新等图商的室内外导航数据,也能够处理不同行业中的道路数据,还可以接入用户自己采集的轨迹道路数据,实现大众导航与行业导航。自采集数据通过编译转换后,便可以在移动端进行路径规划。(2)室内外一体化路径计算:在路径计算方面,可以满足用户的多种偏好设置,如距离最短、时间最快、费用最低等,同城单次规划可以达到3秒以内的速度,并且支持多个途经点和避让区的设置,而且能够实现跨楼层的室内路径计算及室内外一体化的路径计算功能,只要用户给定室内外的起点和终点,就能够快速地规划出最优的路线。(3)智能的路径引导:基于规划路线实现模拟导航,结合定位信息实现真实导航。在导航过程中,能够显示丰富的指引信息,如当前道路的名称、当前的操作动作、达到终点的距离等,还能以路口放大图的形式准确地描述和指引行驶的路线;同时支持语音播报操作,提供更加友好、科学的智能化引导服务。
- 7.4.2 导航数据组织MapGIS Mobile提供离线模式下的导航功能,实现导航必须要有专业的导航数据作为依托,因此实现移动端地图导航必须先获取导航数据。从根本上来讲,导航数据的内容其实就是由点要素、线要素共同组成的,并且其中包括路段的几何信息、长度、方向等,还有路段、节点之间的拓扑关系。室内导航数据还应该包括楼层等信息。所以,用户可以自己采集不同行业的数据,经过处理、制作后,也能支持导航。目前常用的导航数据格式主要包括shape和MIF两种,不同厂商生产的导航数据具有不同的格式,下面简要介绍这两种常用的导航数据。● shape格式的数据。shape文件是Esri公司提供的一种矢量数据格式,包括以下几种关键文件。*.dbf文件:它是存储属性数据的文件,用于存储地理数据的属性信息。有时候我们也称之为表文件或dbf文件。这里值得注意的是,Excel也能够打开这种文件。*.sbn,*.sbx:地理数据索引文件,这两种文件只有在进行主题间空间关系查询、主题空间联接和对shape字段进行索引的时候才存在。它们用于存储地物特征的索引。*.shx:空间数据索引文件,存储地理数据几何特征的索引。*.shp:存储地理数据的几何特征,如坐标、长度及面积等。*.prj:空间投影文件,用于存储空间参考系,也就是投影方式文件。● MIF格式的数据。MIF是Mapinfo用来向外交换数据的一种中间交换文件。包括后缀为“.MIF”和“.MID”的两种文件。“.MIF”文件保存了Mapinfo表的表结构及表中所有空间对象的空间信息(如每个点对象的符号样式、点位坐标;每个线对象的线样式、节点数据、节点坐标;区域对象的填充模式、每个区域包含的子区域个数及每个区域的节点数等)。而“.MID”文件则按记录顺序保存了每个空间对象的所有属性信息。1.原始导航数据处理移动端使用的导航数据必须经过MapGIS 10.5提供的导航数据转换工具进行转换,此工具操作的数据为MapGIS地理数据库,所以对于各种原始的导航数据,首先需要导入MapGIS地理数据库中,转换为MapGIS格式的数据,再转换为移动端数据。创建数据库并导入数据等其他步骤可参考5.1节。2.室外导航数据转换室外导航数据转换需要使用“室外导航数据转换工具”,此工具用于将高德、四维的室外导航数据转换为MapGIS移动端可以使用的导航数据。室外导航数据转换工具如图7-25所示。[插图]图7-25 室外导航数据转换工具在转换数据时需要配置数据源、属性字段等信息。每种类型的数据配置参数都不一样,为了方便用户使用此工具,让用户快速上手,软件提供了参数配置文件,作为每种类型的参数信息的配置参考。配置文件存储在MapGIS桌面平台软件的安装路径“…\MapGIS 10\Program\MobileTool\Config”中,用户可打开参考。
- ● 高德室外导航数据的参数配置文件:AutoNaviParams.ini。● 四维室外导航数据的参数配置文件:NaviInfoParams.ini。使用转换工具后,软件会将每种类型的参数配置信息保存在转换参数配置文件中,在后续多次转换时自动填充配置信息,减少用户操作。配置文件中说明了各种数据转换时必选的参数。以高德室外导航数据的转换为例,具体流程如下。(1)配置道路节点信息。①数据类型选择。需要在第一步选择数据类型,后续步骤不用选择,单击下拉列表选择数据类型。数据类型包括中地、高德、四维三种,室外导航数据转换只支持高德、四维两种类型,选择不同的数据类型,上面的“地址示例”一栏会给出相应的例子供参考。选择导航数据类型如图7-26所示。
7.5 扩展开发
- 7.5 扩展开发MapGIS Mobile具备强大的扩展性,在GIS内核层、功能服务层、应用层等层次均可灵活扩展。7.5.1 应用功能扩展MapGIS Mobile for Android SDK提供了丰富的移动GIS功能,同时可接入第三方开发功能控件库,如高德地图、百度地图、天地图、Google地图等。本书仅以移动端常用的定位与导航为例,详细说明MapGIS Mobile for Android如何实现应用功能扩展。7.5.1.1 接入高德定位导航定位、导航功能在移动应用,特别是在大众应用中的使用率非常高,目前一些厂商(如高德、百度)提供了非常成熟并且功能强大的定位与导航二次开发库,应用范围非常广泛。高德Android定位、导航SDK:定位模块能够实现定位、逆地理编码、地理围栏功能;导航模块则提供在线导航功能,能够实现路径规划、模拟导航、导航信息播报等功能。使用高德SDK实现所需功能,包括定位、导航功能,其实现流程可分为以下三个步骤。(1)环境配置:申请高德key、下载SDK开发包,创建项目并配置权限(添加key、定位服务、应用权限)。(2)UI搭建:根据实际需求搭建应用显示界面。(3)代码实现:采用SDK提供的接口实现定位/导航功能。
来自微信读书



浙公网安备 33010602011771号