APP下载

基于Google Map的GPS和GSM定位关键技术研究

2014-09-13谢明辉

吉林建筑大学学报 2014年5期
关键词:经纬度卫星精度

谢明辉 张 奇

(吉林建筑大学管理学院,长春 130118)

0 引言

位置信息服务在学生监护、老人定位追踪、移动工作队伍管理等方面展现了巨大的需求[1].目前位置信息服务主要基于GSM(Global System for Mobile Communications:GSM)技术实现定位,在偏远地区和一些无GSM网络的地方,GPS(Global Positioning System:GPS)定位技术应用广泛,但都只能使用其中一种技术定位,越来越不能满足用户的定位需求.本文采用GoogleMap提供的地图数据,设计了可以使用两种不同方式进行定位的地图应用程序.此程序使定位技术更加灵活,能更好地为用户服务.

1 GoogleMap的加载方法

研究利用eclipse加载GoogleMap模块,使用前须向Google公司申请应用权限,首先要获取计算机的SHA码,按照winows->preferance->android->build的流程获取SHA码,然后在Google API Console网站上进行Google Map API v2秘钥的申请,最后把秘钥写入eclipse的程序中从而实现谷歌地图的加载.

android:value="AIzaSyDmekol0xU61tJyJoRjeaq-Ysp0O8-6504"

此代码是对获取秘钥的定义,来验证秘钥,如果是真,则可接收地图数据,否则不能加载地图.

2 GSM和GPS的定位原理

GSM网络的基础结构是由一系列信号塔构成,通信区域被这些信号塔分成一个个的小区域[1].移动终端在GSM网络中通信,依靠这些信号塔来接入GSM网络,实现数据在GSM网络中的传输.位置区识别码(LAC,Lcation Area Code)在GSM的每一个小区域都有且编号(CELLID)唯一.GSM的定位技术是通过获取移动终端所在小区域的LAC和CELLID,并查询两者之间的关联关系来获取信号塔的经纬度数据,从而确定目标的位置[1].GSM定位技术的精度取决于信号塔的密集程度,一般在城市中信号塔覆盖密集,其精度一般在100m~210m之间[2].在精度要求不高的场合可以发挥积极的作用.

GPS是一个由覆盖全球的24颗卫星组成的系统.该系统可保证在任意时刻,地球上任意一点都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,实现导航、定位、授时等功能.该技术可用来引导飞机、船舶、车辆及个人安全、准确地沿着选定的路线准时到达目的地.GPS全球卫星定位系统由三部分组成:空间部分—GPS星座;地面控制部分—地面监控系统;用户设备部分—GPS信号接收机[3].

(1) 空间部分. GPS的空间部分是由位于距地表20 200km的上空,轨道倾角为55°的均匀分布在6个轨道面上(每个轨道面4颗)的24颗工作卫星组成.此外,还有4颗备份卫星在轨运行[2].卫星的分布使得在全球任何地方、任何时间都可观测到4颗以上的卫星,并能保持良好定位解算精度的几何图象,提供在时间上连续的全球导航能力;

(2) 用户设备部分. 用户设备部分即GPS信号接收机.其主要功能是捕获到按一定卫星截止角所选择的待测卫星,并跟踪这些卫星的运行.由接收机硬件、机内软件,以及GPS数据的后处理软件包构成完整的GPS用户设备.目前,各种类型的接受机体积越来越小,重量越来越轻,便于野外观测使用.

3 定位技术的实现

3.1 位置信息获取技术

移动终端通过AT指令控制GSM模块,获取GSM模块中SIM卡在移动通信网络中注册的信息,从而得到距离最近的信号塔编号CEELLID和所在小区域的LAC,根据获取的CEL,LID和LAC的关联关系,取得信号塔的实际经纬度、地理位置描述等位置信息,借助Google Map API实现地图显示和实际位置在地图上的标定[1].定位的关键技术是Google Map API如何获取在GSM方式下的经纬度信息.

findViewById(R.id.button1).setOnClickListener(newView.OnClickListener() //获取信号塔的经纬度信息

{ public void onClick(View v)

{ TelephonyManager mTelephonyManager=(TelephonyManager) //获取lac:mcc:mnc:cell-id

getSystemService(Context.TELEPHONY_SERVICE);}

这里,MCC表示移动国家代码;MNC代表移动网络号码;LAC表示位置区域码;CID表示基站编号[4].

GsmCellLocation location=(GsmCellLocation) mTelephonyManager.getCellLocation();

int lac=location.getLac() //获取LAC

int cellId=location.getCid() //获取CID

GPS定位技术的实现是通过GPS信号接收机捕获到跟踪的卫星信号,测量接收天线至卫星的伪距离和距离的变化率,解调出卫星轨道参数等数据.根据这些数据,接收机中的微处理计算机就可按定位解算方法计算出用户所在地理位置的经纬度、高度、速度和时间等信息[2].最后Google Map API对提供的数据进行获取从而实现定位.

if(alm.isProviderEnabled(android.location.LocationManager.GPS_PROVR))

{Toast.makeText(this,“GPS模块正常”,Toast.LENGTH_SHORT).show();

Return;}

Toast.makeText(this,“请开启GPS!”,Toast.LENGTH_SHORT).show();

Intent intent=new Intent(Settings.ACTION_SECURITY_SETTINGS);

startActivityForResult(intent,0);

private void getLocation()

{ Criteria criteria=new Criteria(); //Criteria类是描述Location Provider的标准;

criteria.setAccuracy(Criteria.ACCURACY_FINE); //获取地理位置的setAccurac精度;

criteria.setAltitudeRequired(false); //是否获取海拔;

String provider=locationManager.getBestProvider(criteria,true); //获取GPS信息;

Location location=locationManager.getLastKnownLocation(provider); //获取位置信息;

updateToNewLocation(location); //设置监听器,位置信息自动更新的最小时间为N秒[5].

locationManager.requestLocationUpdates(provider,100*1000,500,locationListener);}

3.2 定位功能实现效果

Google Map API虽然在GPS和GSM两种方式下获取位置信息,但通过获取的数据进行定位的方法是相同的.

if(location!=null)

{ myPosition.setLocation(location); //对得到的坐标进行设置;

Double geoLat=location.getLatitude()*1E6; //用location的getLatitude()属性获取纬度;

Double geoLng=location.getLongitude()*1E6; //用location的getLongitude()属性获取经度;

mapController.animateTo(point); //实现定位[6]}

运行程序,呈现在屏幕的是世界地图,点击屏幕上的定位按钮程序会自动加载到移动终端所在的地理位置,其精度一般在800m-1 000m.程序运行效果如图1所示;运行程序,输入要定位地点的经纬度,如定位山东济南,点击定位按钮程序就会把可视区域移动到济南从而实现定位,其精度一般在800m~1 000m.程序运行效果如图2所示.

图1 在虚拟机上实现GSM和GPS定位

图2 在虚拟机上实现已知经纬度的定位

定位可以是移动终端自身的定位,也可以是对已知经纬度坐标的定位,并在GoogleMap上显示其所在的位置.这种功能是基于GoogleMap API实现的,由于GoogleMap提供免费的地理数据,因此在eclipse中对GoogleMap进行编程时可以直接用其数据.通过代码的编写来实现已知经纬度坐标的定位及显示.

if(longti.equals(“”)||latti.equals(“”)) //判断输入的经纬度是否正确;

{Toast.makeText(MainActivity.this“请输入正确的经纬度”;

Toast.LENGTH_LONG).show(); //设置消息出现的时间长短;

return;}

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(Double.valueOf(latti),Double.valueOf(longti)),6.0f));}

使用CameraUpdateFactory类构造CameraUpdate对象.根据CameraUpdate对象,调用AMap.moveCamera(CameraUpdate),通过AMap.moveCamera(CameraUpdate)实现已知坐标的定位.

4 结语

Google Map API提供了一种性价比极高的地图应用程序开发方案,综合使用GSM,GPS技术和Google Map API可以快速地构建电子地图并进行当前位置的标定.由于GSM和GPS应用于不同的条件下,二者可以相互结合互相补充,使定位技术更加灵活、实用.基于GoogleMap和Android的定位系统可以应用于生活中的各个方面,如跟踪定位系统、学生监护、物流监控等方面均可发挥积极的作用.

参 考 文 献

[1] 杨 帆.基于GSM和GoogleMap的定位与地图标注关键技术研究[J].山西科技大学学报(自然科学版),2011,(2):122-125.

[2] 张 恒,郭际明,周命瑞,丁 旭.基于GoogleMap的GPS定位跟踪系统研究实现[C].北京:中国卫星导航学术年会组委会,2012.

[3] 李辅成.基于GPS和GIS的车辆监控系统[D].武汉:武汉理工大学,2011.

[4] 陈 星,江兰帆.基于Google Android平台的移动开发研究[J].福建电脑,2008(11):156-157.

[5] 李寿林,张 鹰,李秀萍.利用GSM无线模块收发短消息[J].计算机与数字工程,2005,33(7):79-81.

[6] HE Ting-ting,LUO Xiao-shu,LIAO Zhi-xian,HUANG Xiao-han,Design of Real-time Vehicle Monitoring System Based on GPRS&GPS[J].Modern Electronics Technique,2011,34(17):193-195.

猜你喜欢

经纬度卫星精度
miniSAR遥感卫星
静止卫星派
基于经纬度范围的多点任务打包算法
基于DSPIC33F微处理器的采集精度的提高
自制中学实验操作型经纬测量仪
Puma" suede shoes with a focus on the Product variables
澳洲位移大,需调经纬度
GPS/GLONASS/BDS组合PPP精度分析
改进的Goldschmidt双精度浮点除法器
巧用磨耗提高机械加工精度