APP下载

基于天地图的校园导航系统移动端的设计与开发

2014-12-13钱康,荀启峰,柳盛

软件工程 2014年12期
关键词:导航系统队列起点

钱康,荀启峰,柳盛

摘  要:本文主要介绍了一款基于天地图及其移动API的校园导航系统移动端的开发过程及关键技术。该系统主要包括校园浏览,查询与定位校园路线导航,以及数据管理等主要功能。该系统为师生、员工提供查询校园信息、选择路径等功能。

关键词:天地图API;校园导航系统;Android手机客户端

中图分类号:TP311.52           文献标识码:A

1   引言(Introduction)

“天地图”是国家测绘地理信息局建设的地理信息综合服务网站。它是“数字中国”的重要组成部分,是国家地理信息公共服务平台的公众版[1]。通过天地图用户可以进行地理位置的信息查询、浏览、搜索、路线规划等操作,用户也可以通过服务接口调用地理信息服务,在各类应用系统中嵌入天地图的服务资源。本文以天地图移动API为基础,设计开发校园导航系统的Andriod手机客户端,为师生、员工提供查询校园信息、选择路径等功能。

2   系统功能设计(The system function design)

校园导航系统总体功能包括校园浏览、校园查询与定位、校园路线导航和数据管理,如图1所示。

图1 系统功能模块图

Fig.1 The system function module diagram

(1)校园浏览

校园浏览主要包括校园地图(矢量、影像图层)的放大、缩小、漫游等。

主要便于同学了解和熟悉校园,如教学楼、食堂、校医院、图书馆、宿舍、教学行政办公室、体育馆、操场等。同事选中某栋学校建筑或者设施,会显示一些提示信息,如图书馆开馆时间,行政办公楼的功能划分以及联系方式等。

(2)校园查询与定位

校园的查询包括属性查询和空间查询。属性查询支持模糊查询,比如输入宿舍,将会显示所有宿舍信息。空间查询包括矩形查询,多边形查询,按照设置距离后的圆查询。查询结果加亮显示。

(3)校园路线导航

设置(或以当前定位点)起点和终点,地图在这选定的两点间显示标记,再选择导航,地图上将会显示一条最佳导航路径。

(4)数据管理

根据需求将权限分为两类:一类是管理员,一类是普通用户。管理员可以对学校的矢量数据图层空间信息以及相关的属性数据信息进行管理。普通用户比如学生或者教学管理人员,可以对自己感兴趣的位置添加标注。

3   系统环境搭建(System environment)

选择下载、安装操作系统对应的JDK(包括Java运行环境,基础类库和Java工具,是Java运行的基础)、Eclipse(开放源代码的、基于Java的可扩展开发平台)、Andriod SDK(Andriod专属的软件开发工具包)、天地图API[2]。将API文件tiandituapi.jar拷贝到工程根目录下,并在工程属性->;Java Build Path->;Libraries中选择“Add External JARs”,tiandituapi.jar。在Mainfest中添加权限等。

4  开发流程及关键技术(The process and key

technology development)

4.1   开发流程

系统开发的主要流程如图2所示。

图2 系统开发流程图

Fig.2 The system development flow chart

4.2   关键技术-导航算法

当用户设置起点和终点后,地图会显示出从起点到终点的一条最优路径。系统采用Dijkstra算法实现最短路径的选择。

Dijkstra算法为典型的单源最短路径算法,用于计算一个节点到其他节点的最短路径。以起点Start为中心,逐步拓展,直到所有点都遍历完作为结束。其算法主要过程如下:

首先,初始化:

设起点Start的距离dis[S]=0(不包括环,自己到自身距离为0),到除起点外的其他点i的距离dis[i]均设置为INF(无穷大),同时把所有的点的状态都设为遍历状态。

其次,循环V次(V为节点数目):

在未遍历的点中取一个dis值最小的点i,把点i标记为已遍历的,同时对和点i相邻的每一个点j进行松弛操作,更新起点Start到点j的距离dis[j]的值。

算法终止后,对于任意的点i,dis[i]为起点Start到结点i的最短距离。

算法的伪代码如下:

while(v∈V(G)&;&;v不为start起点)

{ dis[v]=INF;}

dis[s]=0;

把除起点Start的其他点插入优先队列HQ(High Priority Queue)

while (HQ!=NULL)

{

i=HQ.top(); //遍历点i

while( edge(i,j))//点i和点j相邻

{

if  ((j未遍历)&;&; dis[j]>;dis[i]+w[i,j]

{ dis[j]=dis[i]+w[i,j]}

优先队列的内部实现一般都是使用优先队列,所以建立和维护这个优先队列的时间复杂度是O(log|V|),Dijkstra算法的总时间复杂度是O(E+V*log|V|),空间复杂度是O(V+E)。

5   结论(Conclusion)

通过该系统,同学们尤其是新生可以更好地了解校园设施环境等信息,更快捷地找到目的地。然而本系统功能还不够完善,仍有待添加,比如添加教学系统接口,可以更加准确的知道教室使用情况。另外手机端除了Andriod系统外,还有苹果公司的IOS,微软公司Windows Phone系统,基于这些系统的校园导航手机系统将是下一步努力实现的目标。

参考文献(References)

[1] 天地图官网:http://www.tianditu.cn/.

[2] 陈强.Android实例开发完全手册[M].北京:人民邮电出版社,

2012.

[3] Satya Komatineni,Dave MacLean,Sayed Hashimi.精通Android

3[M].北京:人民邮电出版社,2011.

作者简介:

钱  康(1993-),男,本科生.研究领域:软件开发.

荀启峰(1980-),男,硕士,讲师.研究领域:嵌入式系统设

计,计算机硬件教学.

柳  盛(1981-),男,硕士,助教.研究领域:GIS理论与技

术,空间数据挖掘.endprint

摘  要:本文主要介绍了一款基于天地图及其移动API的校园导航系统移动端的开发过程及关键技术。该系统主要包括校园浏览,查询与定位校园路线导航,以及数据管理等主要功能。该系统为师生、员工提供查询校园信息、选择路径等功能。

关键词:天地图API;校园导航系统;Android手机客户端

中图分类号:TP311.52           文献标识码:A

1   引言(Introduction)

“天地图”是国家测绘地理信息局建设的地理信息综合服务网站。它是“数字中国”的重要组成部分,是国家地理信息公共服务平台的公众版[1]。通过天地图用户可以进行地理位置的信息查询、浏览、搜索、路线规划等操作,用户也可以通过服务接口调用地理信息服务,在各类应用系统中嵌入天地图的服务资源。本文以天地图移动API为基础,设计开发校园导航系统的Andriod手机客户端,为师生、员工提供查询校园信息、选择路径等功能。

2   系统功能设计(The system function design)

校园导航系统总体功能包括校园浏览、校园查询与定位、校园路线导航和数据管理,如图1所示。

图1 系统功能模块图

Fig.1 The system function module diagram

(1)校园浏览

校园浏览主要包括校园地图(矢量、影像图层)的放大、缩小、漫游等。

主要便于同学了解和熟悉校园,如教学楼、食堂、校医院、图书馆、宿舍、教学行政办公室、体育馆、操场等。同事选中某栋学校建筑或者设施,会显示一些提示信息,如图书馆开馆时间,行政办公楼的功能划分以及联系方式等。

(2)校园查询与定位

校园的查询包括属性查询和空间查询。属性查询支持模糊查询,比如输入宿舍,将会显示所有宿舍信息。空间查询包括矩形查询,多边形查询,按照设置距离后的圆查询。查询结果加亮显示。

(3)校园路线导航

设置(或以当前定位点)起点和终点,地图在这选定的两点间显示标记,再选择导航,地图上将会显示一条最佳导航路径。

(4)数据管理

根据需求将权限分为两类:一类是管理员,一类是普通用户。管理员可以对学校的矢量数据图层空间信息以及相关的属性数据信息进行管理。普通用户比如学生或者教学管理人员,可以对自己感兴趣的位置添加标注。

3   系统环境搭建(System environment)

选择下载、安装操作系统对应的JDK(包括Java运行环境,基础类库和Java工具,是Java运行的基础)、Eclipse(开放源代码的、基于Java的可扩展开发平台)、Andriod SDK(Andriod专属的软件开发工具包)、天地图API[2]。将API文件tiandituapi.jar拷贝到工程根目录下,并在工程属性->;Java Build Path->;Libraries中选择“Add External JARs”,tiandituapi.jar。在Mainfest中添加权限等。

4  开发流程及关键技术(The process and key

technology development)

4.1   开发流程

系统开发的主要流程如图2所示。

图2 系统开发流程图

Fig.2 The system development flow chart

4.2   关键技术-导航算法

当用户设置起点和终点后,地图会显示出从起点到终点的一条最优路径。系统采用Dijkstra算法实现最短路径的选择。

Dijkstra算法为典型的单源最短路径算法,用于计算一个节点到其他节点的最短路径。以起点Start为中心,逐步拓展,直到所有点都遍历完作为结束。其算法主要过程如下:

首先,初始化:

设起点Start的距离dis[S]=0(不包括环,自己到自身距离为0),到除起点外的其他点i的距离dis[i]均设置为INF(无穷大),同时把所有的点的状态都设为遍历状态。

其次,循环V次(V为节点数目):

在未遍历的点中取一个dis值最小的点i,把点i标记为已遍历的,同时对和点i相邻的每一个点j进行松弛操作,更新起点Start到点j的距离dis[j]的值。

算法终止后,对于任意的点i,dis[i]为起点Start到结点i的最短距离。

算法的伪代码如下:

while(v∈V(G)&;&;v不为start起点)

{ dis[v]=INF;}

dis[s]=0;

把除起点Start的其他点插入优先队列HQ(High Priority Queue)

while (HQ!=NULL)

{

i=HQ.top(); //遍历点i

while( edge(i,j))//点i和点j相邻

{

if  ((j未遍历)&;&; dis[j]>;dis[i]+w[i,j]

{ dis[j]=dis[i]+w[i,j]}

优先队列的内部实现一般都是使用优先队列,所以建立和维护这个优先队列的时间复杂度是O(log|V|),Dijkstra算法的总时间复杂度是O(E+V*log|V|),空间复杂度是O(V+E)。

5   结论(Conclusion)

通过该系统,同学们尤其是新生可以更好地了解校园设施环境等信息,更快捷地找到目的地。然而本系统功能还不够完善,仍有待添加,比如添加教学系统接口,可以更加准确的知道教室使用情况。另外手机端除了Andriod系统外,还有苹果公司的IOS,微软公司Windows Phone系统,基于这些系统的校园导航手机系统将是下一步努力实现的目标。

参考文献(References)

[1] 天地图官网:http://www.tianditu.cn/.

[2] 陈强.Android实例开发完全手册[M].北京:人民邮电出版社,

2012.

[3] Satya Komatineni,Dave MacLean,Sayed Hashimi.精通Android

3[M].北京:人民邮电出版社,2011.

作者简介:

钱  康(1993-),男,本科生.研究领域:软件开发.

荀启峰(1980-),男,硕士,讲师.研究领域:嵌入式系统设

计,计算机硬件教学.

柳  盛(1981-),男,硕士,助教.研究领域:GIS理论与技

术,空间数据挖掘.endprint

摘  要:本文主要介绍了一款基于天地图及其移动API的校园导航系统移动端的开发过程及关键技术。该系统主要包括校园浏览,查询与定位校园路线导航,以及数据管理等主要功能。该系统为师生、员工提供查询校园信息、选择路径等功能。

关键词:天地图API;校园导航系统;Android手机客户端

中图分类号:TP311.52           文献标识码:A

1   引言(Introduction)

“天地图”是国家测绘地理信息局建设的地理信息综合服务网站。它是“数字中国”的重要组成部分,是国家地理信息公共服务平台的公众版[1]。通过天地图用户可以进行地理位置的信息查询、浏览、搜索、路线规划等操作,用户也可以通过服务接口调用地理信息服务,在各类应用系统中嵌入天地图的服务资源。本文以天地图移动API为基础,设计开发校园导航系统的Andriod手机客户端,为师生、员工提供查询校园信息、选择路径等功能。

2   系统功能设计(The system function design)

校园导航系统总体功能包括校园浏览、校园查询与定位、校园路线导航和数据管理,如图1所示。

图1 系统功能模块图

Fig.1 The system function module diagram

(1)校园浏览

校园浏览主要包括校园地图(矢量、影像图层)的放大、缩小、漫游等。

主要便于同学了解和熟悉校园,如教学楼、食堂、校医院、图书馆、宿舍、教学行政办公室、体育馆、操场等。同事选中某栋学校建筑或者设施,会显示一些提示信息,如图书馆开馆时间,行政办公楼的功能划分以及联系方式等。

(2)校园查询与定位

校园的查询包括属性查询和空间查询。属性查询支持模糊查询,比如输入宿舍,将会显示所有宿舍信息。空间查询包括矩形查询,多边形查询,按照设置距离后的圆查询。查询结果加亮显示。

(3)校园路线导航

设置(或以当前定位点)起点和终点,地图在这选定的两点间显示标记,再选择导航,地图上将会显示一条最佳导航路径。

(4)数据管理

根据需求将权限分为两类:一类是管理员,一类是普通用户。管理员可以对学校的矢量数据图层空间信息以及相关的属性数据信息进行管理。普通用户比如学生或者教学管理人员,可以对自己感兴趣的位置添加标注。

3   系统环境搭建(System environment)

选择下载、安装操作系统对应的JDK(包括Java运行环境,基础类库和Java工具,是Java运行的基础)、Eclipse(开放源代码的、基于Java的可扩展开发平台)、Andriod SDK(Andriod专属的软件开发工具包)、天地图API[2]。将API文件tiandituapi.jar拷贝到工程根目录下,并在工程属性->;Java Build Path->;Libraries中选择“Add External JARs”,tiandituapi.jar。在Mainfest中添加权限等。

4  开发流程及关键技术(The process and key

technology development)

4.1   开发流程

系统开发的主要流程如图2所示。

图2 系统开发流程图

Fig.2 The system development flow chart

4.2   关键技术-导航算法

当用户设置起点和终点后,地图会显示出从起点到终点的一条最优路径。系统采用Dijkstra算法实现最短路径的选择。

Dijkstra算法为典型的单源最短路径算法,用于计算一个节点到其他节点的最短路径。以起点Start为中心,逐步拓展,直到所有点都遍历完作为结束。其算法主要过程如下:

首先,初始化:

设起点Start的距离dis[S]=0(不包括环,自己到自身距离为0),到除起点外的其他点i的距离dis[i]均设置为INF(无穷大),同时把所有的点的状态都设为遍历状态。

其次,循环V次(V为节点数目):

在未遍历的点中取一个dis值最小的点i,把点i标记为已遍历的,同时对和点i相邻的每一个点j进行松弛操作,更新起点Start到点j的距离dis[j]的值。

算法终止后,对于任意的点i,dis[i]为起点Start到结点i的最短距离。

算法的伪代码如下:

while(v∈V(G)&;&;v不为start起点)

{ dis[v]=INF;}

dis[s]=0;

把除起点Start的其他点插入优先队列HQ(High Priority Queue)

while (HQ!=NULL)

{

i=HQ.top(); //遍历点i

while( edge(i,j))//点i和点j相邻

{

if  ((j未遍历)&;&; dis[j]>;dis[i]+w[i,j]

{ dis[j]=dis[i]+w[i,j]}

优先队列的内部实现一般都是使用优先队列,所以建立和维护这个优先队列的时间复杂度是O(log|V|),Dijkstra算法的总时间复杂度是O(E+V*log|V|),空间复杂度是O(V+E)。

5   结论(Conclusion)

通过该系统,同学们尤其是新生可以更好地了解校园设施环境等信息,更快捷地找到目的地。然而本系统功能还不够完善,仍有待添加,比如添加教学系统接口,可以更加准确的知道教室使用情况。另外手机端除了Andriod系统外,还有苹果公司的IOS,微软公司Windows Phone系统,基于这些系统的校园导航手机系统将是下一步努力实现的目标。

参考文献(References)

[1] 天地图官网:http://www.tianditu.cn/.

[2] 陈强.Android实例开发完全手册[M].北京:人民邮电出版社,

2012.

[3] Satya Komatineni,Dave MacLean,Sayed Hashimi.精通Android

3[M].北京:人民邮电出版社,2011.

作者简介:

钱  康(1993-),男,本科生.研究领域:软件开发.

荀启峰(1980-),男,硕士,讲师.研究领域:嵌入式系统设

计,计算机硬件教学.

柳  盛(1981-),男,硕士,助教.研究领域:GIS理论与技

术,空间数据挖掘.endprint

猜你喜欢

导航系统队列起点
队列里的小秘密
基于多队列切换的SDN拥塞控制*
在队列里
弄清楚“起点”前面有多少
起点
丰田加速驶入自动驾驶队列
我的“新”起点
一种GNSS/SINS容错深组合导航系统设计
解读全球第四大导航系统
新年的起点