基于GPS定位模块制作高精细校园地图

2018-02-27 21:38张紫甜古丽米拉·克孜尔别克
计算机时代 2018年2期
关键词:路径规划

张紫甜+古丽米拉·克孜尔别克

摘 要: 以大学的空间信息为基础,采集学校的地理信息,利用高德地图免费接口,实现了基于高德地图API的高精细校园地图导航APP。开发中充分利用了高德地图 API 接口,实现了自身定位、地图加载、校园内地点搜索和路线导航等功能。该APP方便学校师生及外来人员找寻在校园内的任何地点, 能有效缓解新生入校找不到各个报名点而造成的校园拥挤的情况。

关键词: 校园导航; 自身定位; GPS; 高德地图API; 路径规划

中图分类号:TP302 文献标志码:A 文章编号:1006-8228(2018)02-55-03

Abstract: Based on the spatial information of the University, to collect the geographic information of the school and make use of the free interface of Amap API, an APP of high-precision campus map navigation is realized. In the development, the API interface is fully utilized to realize the functions of self positioning, map loading, campus location search and route navigation. The APP facilitates school teachers, students and the external personnel, to find anywhere in campus, which can effectively alleviate the situation of campus congestion caused by the new students who cannot find their registration points.

Key words: campus navigation; self positioning; GPS; Amap API; path planning

0 引言

國内各大高校快速发展,校园内部的教学楼、宿舍楼、大小食堂、各学院楼、实验楼等地理位置错综复杂,即使在学校工作生活多年的教职工以及进校多年的学生,也未必能清楚的对学校各地方清楚的了解, 对于刚入学的大一新生或者来访的外来人员更是有许多不便之处。为了给广大师生带来便利,本系统是在高德地图开放平台的基础上进行了二次开发,实现一个简单操作但富有极强实用性的校园地图。

1 API接口

现如今,有越来越多的地图应用程序在市场上出现,人们熟悉的有搜狗地图、高德地图、百度地图、谷歌地图、腾讯地图等等。成熟的地图API接口也被各行各业广泛使用,例如福建省农业科学院农业生物资源研究所研究的土壤标本地理分布信息系统[1] ,而我们开发的系统就是采用的高德地图API接口。高德地图API可以为开发者免费提供基于高德地图的应用程序接口。我们只需申请密钥,然后填写开发者信息,即可利用高德平台上的资源进行开发。

2 系统的需求分析总体设计

本系统是以新疆农业大学为例,研究校园内部分师生用户对校园地图导航系统的需求,并根据其需求提供了相应的功能。主要包括:校园内详细地图的显示,能有效的帮助学校内部的师生了解校园内的各个设施[2]。当然用户也不只是本学校的师生们,对于初次来新疆农业大学参观、找朋友,或者是刚进大学的大一新生来说,本系统都能为其提供有效的帮助,为其提供校园内各地方的详细位置,并为其导航。

2.1 功能设计

根据校园内广大师生的需求,系统提出以下功能:自身实时定位、地图加载、路线导航、校内搜索等功能。系统功能结构图如图1所示。

[校园高精细地图] [自身实时定位][地图加载][路线导航][校内搜索]

⑴ 自身定位功能

用户一打开软件,就可以得到当前自身所在的位置,如校园内的道路名称位置等。并且在地图上你能看到自己的所在位置,地图也会实时的根据你位置的改变而相应的发生改变。为用户提供准确的位置信息。

⑵ 地图加载功能

基于高德地图的校内导航系统,相应的需要获取高德地图的使用权限和开发权限。高德地图提供的是相对较大的区域地图,虽然校内很多建筑物在高德地图上都有体现,但精确度不够,还有很多我们农大师生熟悉的有别名的小地方,地图中没有标识。所以,系统在加载高德地图时,也必须显示出我们自定义添加的校园内部更为精确的详细标注,使用户有更好的体验。

⑶ 路线导航

路线导航功能是现在所有地图的基本功能,系统提供的路线导航功能是从自身出发,搜索目的地后,系统自动给出可行路线,并提供实时导航。

⑷ 校内搜索

系统界面中提供了搜索框,用户可以通过搜索框查询校园内的各个设施的具体位置,并为其导航路线。例如你在宿舍想要去计算机学院,只需在搜索框点击计算机学院,系统就会为你导航。

2.2 性能需求

⑴ 系统安全性设计

由于系统涉及到定位服务,为了确保用户信息的安全性,本系统是基于GPS定位,在用户安装和使用软件前,系统会提示用户是否打开手机GPS定位功能,以确保用户的信息不回泄露。

⑵ 时间特性设计

系统响应时间应在人的感觉和视觉事件范围内,例如在用户输入目的地名称后,系统应在5秒内给出导航路线。为用户带来好的用户体验。

⑶ 可维护性

在系统的设计与实现中,系统分析阶段的可维护性设计是精髓所在[3],系统在运行中发现软件错误和设计缺陷,这些错误和缺陷在测试阶段未能发现,改进应用程序的设计,以便于增强软件的基本功能,系统拥有的良好的可维护性,也便于后期的系统维护。endprint

3 实现方案

本系统主要是以新疆农业大学为例,实现校园内部的高精细地图。前期工作主要为信息的收集,之后再进行程序的开发。

3.1 信息收集

由于本系统是要高精细的导航校园内的所有地点,所以高德地图原有的一些地点信息并不能满足我们的需求,还有一些校内师生自己惯用的名称地点,高德地图都无法满足于用户,所以我们需要收集校内各个地点的信息,例如:行政楼、ATM取款机、小商店、洗衣房等等。

3.2 关键技术

⑴ 数据存储的方式也有多种,传统的方法是将地图的数据放置到自己的服务器上,然后通过专业的复杂的空间检索算法,并且结合地图SDK/API完成一个地图应用的开发[4]。

⑵ 本系统使用较为简便的方法,开发人员直接将校园内部的详细地理信息数据存储在高德云图上,可以一步搞定地图展现、索引等。高德云图数据管理台是一个可视化数据管理工具,开发者可以自主开发自己需要的地图。将前期收集的信息地点,在云地图中一个一个地标记出来,就可以直接生成我们想要的高精细地图了。

⑶ 坐标系转换。地球坐标系按照其坐标原点的位置可分为参心坐标系和地心坐标系[5],本系统采用火星坐标系统,火星坐标系统是一种国家保密插件,其实就是对真实坐标系统进行人为的加偏处理,而这个加偏并不是线性的加偏,所以各地的偏移情况都会有所不同。

本系统就是这样一个加密算法,从手机GPS获得的精确的经纬度,经过一系列的加减乘除运算,转换为一种火星坐标,以用来保密。通过transformLat和transformLon函数,在精确地经纬度上经过相应的计算转换得到一定的偏移量的经纬度。再通过gpsLatLng.getLatitude()函数将其转换为弧度制,代码如图2所示。

private NaviLatLng gpsLatLngToAMapLatLng

(NaviLatLng gpsLatLng) {

double a=6378245.0;

double ee=0.00669342162296594323;

double dLat=transformLat(gpsLatLng.getLongitude()-105.0,

gpsLatLng.getLatitude()-35.0);

double dLon=transformLon(gpsLatLng.getLongitude()-105.0,

gpsLatLng.getLatitude()-35.0);

double radLat=gpsLatLng.getLatitude()/180.0*Math.PI;

double magic=Math.sin(radLat);

magic=1-ee*magic*magic;

double sqrtMagic=Math.sqrt(magic);

dLat=(dLat*180.0)/((a*(1-ee))/(magic*sqrtMagic)*Math.PI);

dLon=(dLon*180.0)/(a/sqrtMagic*Math.cos(radLat)

*Math.PI);

return new NaviLatLng(gpsLatLng.getLatitude()

+dLat, gpsLatLng.getLongitude()+dLon);

}

private static double transformLat(double x, double y) {

double ret=-100.0+2.0*x+3.0*y+0.2*y*y+0.1*x*y

+0.2*Math.sqrt(x>0?x:-x);

ret+=(20.0*Math.sin(6.0*x*Math.PI)+20.0*Math.sin

(2.0*x*Math.PI))*2.0/3.0;

ret+=(20.0*Math.sin(y*Math.PI)+40.0*Math

.sin(y/3.0*Math.PI))*2.0/3.0;

ret+=(160.0*Math.sin(y/12.0*Math.PI)+320*Math

.sin(y*Math.PI/30.0))*2.0/3.0;

return ret;

}

private static double transformLon(double x,double y) {

double ret=300.0+x+2.0*y+0.1*x*x+0.1*x*y+0.1*Math

.sqrt(x>0?x:-x);

ret+=(20.0*Math.sin(6.0*x*Math.PI)+20.0*Math

.sin(2.0*x*Math.PI))*2.0/3.0;

ret+=(20.0*Math.sin(x*Math.PI)+40.0*Math

.sin(x/3.0*Math.PI))*2.0/3.0;

ret+=(150.0*Math.sin(x/12.0*Math.PI)+300.0*Math

.sin(x/30.0*Math.PI))*2.0/3.0;

return ret;

}

3.3 系統主界面实现

系统主界面的整体布局简洁明了,打开软件就是地图界面。顶端是一个Spinner下拉框控件,这里有校园里各个精细的地点,用户可以在这里选择导航的终点。顶端右边是一个Button按钮,上,上面的TextView 控件用于显示文本信息“开始导航”,系统主界面如图3所示。

4 结束语

目前市场上成熟的地图有很多,百度高德谷歌等都相当成熟,但校园地图相对较少,所以校园地图的前景较为不错。相应的,校园地图也需要更为精确的定位以及地点坐标。本系统是基于Android平台的新疆农业大学校园高精细导航系统是为了给校园内地师生以及外来人员来访时带来了实用价值,能够让大家更加迅速的了解熟悉新疆农业大学,方便大家寻找目的地,更快的熟悉校园。特别对于每年大一入学的新生来说,本系统能够带来极大的便利,除了其功能可以解决用户的问题,还能提高用户的办事效率、为用户节约时间。

参考文献(References):

[1] 林营志,苏明星,刘丹莹,刘波.基于51Ditu公用API接口的土壤标本地理分布信息系统[J].中国农学通报,2008.24(12):490-494

[2] 孙杰,秦健勇,樊春年.基于Android的校园导航系统的设计与实现[J].智能计算机与应用,2016.6(3):90-92

[3] 伍华健,洪月华,刘力.远程教育支持系统中的可维护性设计[J].微电子学与计算机,2006.6:65-67

[4] 谢党恩,顿贝贝,张志立.基于百度地图API的校内路径导航系统的实现[J].许昌学院学报,2014.33(2):78-81

[5] 马家琼,杨晓英,崔文刚,陈涛,胡君.WGS-84与西安80坐标转换研究[J].测绘与空间地理信息,2013.36(4):158-160

[6] Naresh Kumar Agarwal, Harrison Lawrence. Office Location Map of Individuals in the Library and Other College Campus Buildings: A Proof-of-Concept Wayfinding System[J]. Journal of Web Librarianship,2014.8(3).endprint

猜你喜欢
路径规划
公铁联程运输和售票模式的研究和应用
基于数学运算的机器鱼比赛进攻策略
清扫机器人的新型田埂式路径规划方法
自适应的智能搬运路径规划算法
基于B样条曲线的无人车路径规划算法
基于改进的Dijkstra算法AGV路径规划研究