嵌入式Web服务器的Android空间数据离线解决方法-服务器拒绝了您发送离线文件

点上方蓝字“测绘科学”关注

摘 要

针对移动GIS应用商业开发组件难以进行自由定制与分发的问题,该文提出一种基于嵌入式Web服务器的Android移动端空间数据离线解决方法,该方法通过在Android设备中移植开源的NanoHTTPD 服务器实现了地图瓦片服务和矢量要素服务,并通过编码读取bundle切片数据包和扩展Spatialite空间数据库的方式,解决了切片数据和矢量要素数据的存储,然后利用Webview 控件内嵌HTML5 页面加Leaflet地图库完成了前端功能实现,并进行了实际应用展示。该方案的实现可节省Android端移动GIS应用开发成本,具有推广意义。

引用格式

引用格式:牛艳霞,马秉斌.嵌入式Web服务器的Android空间数据离线解决方法[J].测绘科学,2017,42 (7):178-182,187.

正文

随着IT 技术的发展,各类移动终端的功能不断增强,越来越多的GIS应用从PC 端转移到了移动端,人们应用GIS 的场景也慢慢由内业后期编辑向野外采编一体化发展,基于各类移动终端设备的GIS 数据采集系统得到了长足发展。根据数据获取和服务方式的不同,移动GIS 可分为在线式和离线式,考虑到野外复杂自然环境下无法保证网络的长时间稳定联通, 面向外业数据采集的移动GIS应用多为离线式。

目前,离线式移动GIS 应用开发主要有3 种方式:① 基于定制硬件设备的软硬件一体解决方案;② 基于Windows 移动端设备的定制开发;③ 基于Android 移动端设备的定制开发。其中,方式① 需要较大资金投入,且对技术人员要求较高,中小公司很难介入; 方式② 受限于Windows移动设备本身硬件问题, 市场占有份额较小; 方式③ 因所需资金投入小、技术门槛较低、设备普及率高,已成为移动GIS应用主流开发方式。

国内基于Android设备的移动端离线地图应用主要采用ESRI公司的ArcGIS软件开发工具包、高德地图Android版SDK、跬步科技的UCMAPfor Android等商业化组件进行定制开发。商业组件的引入虽然能够降低移动GIS 应用开发门槛,但却需要开发者付出不菲的代价来购买开发许可, 而且应用会受限于各种许可限制无法进行自由定制与分发。为了解决该问题, 本文提出了一种基于嵌入式Web服务器的Android移动端空间数据离线解决方法。

NanoHTTPD 是一个轻量级HTTP 服务器,被设计用来嵌入到其他应用程序中, 其基于伯克利软件套件许可进行发布,可提供HTTP1.1 支持, 能够响应GET、POST、PUT、HEAD、DELETE 请求,支持基本的cookies、查询参数解析、大文件上传、长连接等功能实现。NanoHttpd占用内存极少, 可根据需要轻松地进行个性化定制和功能扩展, 而且NanoHTTPD 的核心功能实现仅使用了一个Java文件,因此可以非常快速方便地将NanoHTTPD 嵌入到Android应用中以实现各种HTTP服务。

本方法中通过对NanoHTTPD 的扩展定制,在Android应用中实现了嵌入式Web 服务器,用于为应用提供地图切片服务和矢量要素服务。Leaflet是适用于移动端,并具有良好交互性的领先的开源JavaScript地图库, 代码大小仅为38kB,它具备开发者所需的全部地图功能。Leaflet的设计坚持了简便、高性能和高可用性的思想,能够高效运行在所有主流桌面和移动平台上, 可以利用许多插件进行扩展, 拥有漂亮、易用的应用程序编程接口文档和一个简单的、可读的源代码。

SQLite作为一款免费、开源、轻量级、基于文件的嵌入式数据库,它占用资源非常低,是Android操作系统体系结构中的一个重要成员,对于所有Android 系统应用程序都可用。SpatiaLite是构建于SQLite之上的开源空间数据库管理系统,它支持SQL92 和OGCSFS 这两个国际标准,SQLite实现了标准的SQL92 数据引擎,SpatiaLite实现了标准的OGCSFS核心接口,两者结合起来就是功能完备的空间数据库管理系统。SpatiaLite支持点、线、面等多种类型的空间数据,通过扩展的Geometry图形要素对象来进行数据的存取,使用SpatiaLite提供的数据存取函数可以得到空间数据的已知文本表现形式(thewellknowntext, WKT)字符串, 具体实现时将WKT 字符串作为中转格式进行数据的存取。本方法以在Android原生SQLite上加载Spatialite动态链接库的方式将其扩展为空间数据库,通过调用SpatiaLite的空间数据访问函数实现几何数据和属性数据的一体化管理, 这种实现方式可以有效地管理数据, 实现数据的无缝组织, 保证数据的完整性, 减少数据冗余, 并可提高数据的查询速度,减少数据存储空间。

该空间数据离线解决方法在“数字三江源时空信息云平台”Android端应用,“草原确权外业调绘系统”等移动GIS项目中都得到了应用。

“数字三江源时空信息云平台” 是基于“互联网+”理念和空间地理信息技术构建的三江源国家生态保护综合试验区综合信息管理平台, 它以空间信息为载体实现了三江源国家生态保护综合试验区生态环境、植被覆盖、地质条件、交通状况、经济民生等多元专题信息的数据融合、展示与管理,其建设可提高三江源自然保护区生态保护和建设工程中积累的数据资源的利用率,增强“三江源国家生态保护综合试验区”生态保护工作的信息化水平。Android端应用是重要的数据访问终端接口,可供用户在野外区域进行三江源地区相关信息的查询浏览,主要包括区域概况、重大工程、地形地貌、交通旅游等模块,以文字、图形、图表等多种形式对相关专题要素进行综合展示。

草原确权是指在草原资源调查的基础上, 确定草原权属性质,核发草原所有权证或使用权证,通过开展草地确权,可明确草原所有权和使用权,保障草原权利人的合法权益, 是维持国家生态安全、加强对草原监管, 落实草原承包责任制的重要措施。草原确权外业调绘系统是基于Android平板设备开发的用于草原确权工作的外业调绘系统,主要包括牧户信息、草场编辑、草场承包等模块,其中牧户信息模块用于实现对牧户个人和其家庭成员身份信息和照片信息的采集, 草场编辑模块实现了对草场边界的采集和编辑, 草场承包模块用于实现草场承包关系、草场使用权、承包年限等草场权属信息的采集编辑。

在上述两个系统应用中,空间数据离线存储的实现,使得即使在偏远牧区等网络通信无法保证的地区,外业人员仍然能够进行正常调绘作业,延伸了移动GIS使用范围。由于其设计结构清晰、易于使用、扩展灵活,非常适宜于进行Android端移动GIS的开发。

本文提出的Android 端空间数据离线解决方法,不依赖任何商业软件开发包,没有任何使用许可限制,其从前端地图展示到后端服务实现和空间数据离线存储全部采用开源软件进行构建,具有零成本、易于实现、易于扩展、可自由定制等特点,能够满足中小企业或个人创业者实现离线地图应用的需求,可节省Android端移动GIS应用开发成本,具有推广意义。

嵌入式Web服务器的Android空间数据离线解决方法

往期热点文章链接

2017年(第42卷)第6期

关于《测绘科学》

主管:国家测绘地理信息局

主办:中国测绘科学研究院

邮箱:niu@casm.ac.cn

网站:http://chkd.cbpt.cnki.net

编务QQ:2378225509

《测绘科学》微信公众号

推荐阅读