LBS 和 GPRS 定位移动位置比较

news/2024/12/2 14:48:55/
名词释义:
基站定位一般应用于手机用户,手机基站定位服务又叫做移动位置服务(LBS——Location Based Service),它是通过电信移动运营商的网络(如 GSM 网)获取移动终端用户的位置信息(经纬度坐标),在电子地图平台的支持下,为用户提供相应服务的一种增值业务,例如目前中国移动动感地带提供的动感位置查询服务等。其大致原理为:移动电话测量不同基站的下行导频信号,得到不同基站下行导频的TOA(Time of Arrival,到达时刻)或TDOA(Time Difference of Arrivalm,到达时间差),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,就能够计算出移动电话的位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法要复杂很多。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。

技术原理:
移动电话测量不同基站的下行导频信号,得到不同基站下行导频的TOA(Time of Arrival,到达时刻),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,就能够计算出移动电话的位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法要复杂很多。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。 

  手机定位是指通过特定的定位技术来获取移动手机或终端用户的位置信息(经纬度坐标),在电子地图上标出被定位对象的位置的技术或服务。定位技术有两种,一种是基于GPS的定位,一种是基于移动运营网的基站的定位。基于GPS的定位方式是利用手机上的GPS定位模块将自己的位置信号发送到定位 后台 来实现手机定位的。基站定位则是利用基站对手机的距离的测算距离来确定手机位置的。后者不需要手机具有GPS定位能力,但是精度很大程度依赖于基站的分布及覆盖范围的大小,有时误差会超过一公里。前者定位精度较高。此外还有利用Wifi在小范围内定位的方式。

主要应用:
基站定位主要应用于手机用户、GPS手持端等,像中国移动动感地带提供的动感位置查询服务;谷歌手机地图等各类手机地图软件中的粗略定位;和GPS配合产生的 A-GPS 等等都是利用基站定位来实现的。

技术要求:

一、覆盖率要求高   一方面要求覆盖的范围足够大。另一方面要求覆盖的范围包括室内。用户大部分时间是在室内使用该功能,从高层建筑和地下设施必须保证覆盖到每个角落。手机定位根据覆盖率的范围,可以分为三种覆盖率的定位服务:在整个本地网、覆盖部分本地网和提供漫游网络服务类型。除了考虑覆盖率外,网络结构和动态变化的环境因素也可能使一个电信运营商无法保证在本地网络或漫游网络中的服务。 
二、定位精度要求高   手机定位应该根据用户服务需求的不同提供不同的精度服务,并可以提供给用户选择精度的权利。例如美国FCC推出的定位精度在50米以内的概率为67%,定位精度在150米以内的概率为95%。定位精度一方面与采用的定位技术有关,另外还要取决于提供业务的外部环境,包括无线电传播环境、基站的密度和地理位置、以及定位所用设备等。

典型应用:
             家长定位老人、儿童;主要是出于安全和关心的需求;其它用途不必多说大家懂得 

企业对车辆的管理;出于GPS成本高以及地下室等无信号的原因,有些物流企业采用了手机GSM定位技术方案。这种方案的成本是GPS的1/3。但受移动基站网络资源的限制,在连续定位方面的成本较高。 企业对员工的管理;能提供对于有多个分部的销售公司,对销售人员上班时间工作的管理。

总结:
原理就是利用基站定位,只需要在手机上安装一个软件就OK了,软件会从基站上面获取数据,而且没有GPS的手机也能用GOOGLE MAP定位,就是因为GOOGLE MAP里面有一个模块,获取基站的数据去分析得出坐标信息。

整合此板块中:

浅谈定位手机QQ物理地址思路 ,写出以下原理分析和报告,

一般来说连GPRS都不用开,只需要GSM数据就可以了,只需要3个基站 就可以大体知道你的位置,基站越多定位越准确,农村一般是大功率发射器,基站比较少,但是功率大,所以没那么精确,城市里面都是小功率 分布很密集。一般GSM基站会发射它所在的坐标信息和标准时间,根据手机接收到不同基站的时间算出时间差,得到手机到不同基站的距离,然后以各基站为圆心,以这个时间算出来的距离做半径,画圆,相交区域就是你手机所在的位置。
下面是一个转载的安卓基站定位示例源码
package cn.MyAndroid.Test;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.entity.StringEntity;

import org.apache.http.impl.client.DefaultHttpClient;

import org.json.JSONArray;

import org.json.JSONObject;

import android.app.Activity;

import android.content.Context;

import android.os.Bundle;

import android.telephony.TelephonyManager;

import android.telephony.gsm.GsmCellLocation;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

public class MyLocation extends Activity {

TextView mTextView;

Button mButton;

TelephonyManager tm;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mTextView = (TextView) findViewById(R.id.TextView01);

mButton = (Button) findViewById(R.id.Button01);

tm = (TelephonyManager) this

.getSystemService(Context.TELEPHONY_SERVICE);

mButton.setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

GsmCellLocation gcl = (GsmCellLocation) tm.getCellLocation();

int cid = gcl.getCid();

int lac = gcl.getLac();

int mcc = Integer.valueOf(tm.getNetworkOperator().substring(0,

3));

int mnc = Integer.valueOf(tm.getNetworkOperator().substring(3,

5));

try {

//组装JSON查询字符串

JSONObject holder = new JSONObject();

holder.put("version", "1.1.0");

holder.put("host", "maps.google.com");

// holder.put("address_language", "zh_CN");

holder.put("request_address", true);

JSONArray array = new JSONArray();

JSONObject data = new JSONObject();

data.put("cell_id", cid); // 25070

data.put("location_area_code", lac);// 4474

data.put("mobile_country_code", mcc);// 460

data.put("mobile_network_code", mnc);// 0

array.put(data);

holder.put("cell_towers", array);

// 创建连接,发送请求并接受回应

DefaultHttpClient client = new DefaultHttpClient();

HttpPost post = new HttpPost(

"
http://www.google.com/loc/json ");

StringEntity se = new StringEntity(holder.toString());

post.setEntity(se);

HttpResponse resp = client.execute(post);

HttpEntity entity = resp.getEntity();

BufferedReader br = new BufferedReader(

new InputStreamReader(entity.getContent()));

StringBuffer sb = new StringBuffer();

String result = br.readLine();

while (result != null) {

sb.append(result);

result = br.readLine();

}

mTextView.setText(sb.toString());

} catch (Exception e) {

// TODO: handle exception

}

}

});

}

}

注意要给Activity加入以下权限:<uses-permission android:name="android.permission.PERMISSION_NAME" />
< uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
< uses-permission android:name="android.permission.READ_PHONE_STATE" />
< uses-permission android:name="android.permission.INTERNET" />
关于基站查询协议的话,请参考这个链接:
http://code.google.com/intl/zh-CN/apis/gears/geolocation_network_protocol.html
听说如果再加一个获取手机号码的功能和一个向外发送的功能,你就做好了一个定位间谍软件,用途你懂得。
上述文字为今晚噩靈戰隊讨论群里主要议题,欢迎朋友们的参与和指正。

http://www.ppmy.cn/news/521605.html

相关文章

通过GPRS将GPS数据上传到服务器

文章目录 一、目的二、使用的器件1. GPRS模块和物联网卡2. GPS模块3. MCU 三、电路连接四、程序设计五、程序代码 一、目的 将GPS获取到的位置信息&#xff0c;通过GPRS将数据上传到服务器&#xff0c;当然也可以传输其他的信息&#xff0c;这样就可以实现对某些东西的时时定位…

U-BLOX GPS 模块及GPRMC指令解析

受朋友所托&#xff0c;调试一款GPS模块&#xff0c;该模块是UBLOX的NEO-6M GPS模组。想到用这款GPS的人较多&#xff0c;自己日后也有可能在用到这个模块&#xff0c;就写下这份笔记。 一、介绍 基本信息如下&#xff1a; 1、 模块采用U-BLOX NEO-6M模组&#xff0c;体积小巧&…

Gps的GPRMC数据格式详解及要注意的地方

GPRMC数据格式如下&#xff1a; $GPRMC,014600.00,A,2237.496474,N,11356.089515,E,0.0,225.5,310518,2.3,W,A*23 其中&#xff0c;每个字段的描述如下: field 0&#xff1a;$GPRMC, 格式ID&#xff0c;表示该格式为建议的最低特定GPS / TRANSIT数据&#xff08;RMC&#xff…

ora-38500

ORA-38500&#xff1a;USING CURRENT LOGFILE option not available without stand select * from v$standby_log; no rows selecte;主库查询 set linesize 1000 col member for a50 select a.group#,a.thread#,a.bytes/1024/1024/1024 GB,a.status,b.member from v$log a,v$…

福建福安:以茶产业大数据中心为支撑,3800亩智慧茶园走向振兴路

近年来&#xff0c;福安市紧跟数字经济发展步伐&#xff0c;推进当地特色茶产业走规模化、标准化、品牌化的发展之路。由神州信息与福安农垦集团共建的福安市数字农业&#xff08;茶叶&#xff09;项目&#xff0c;通过共建“福安茶产业大数据中心”&#xff0c;基于对多源异构…

金蝶KIS标准版 运行时错误 ‘3800‘: ‘PrimaryKey‘ 不是此表中的一个索引 解决方法

金蝶KIS标准版 运行时错误 3800: PrimaryKey 不是此表中的一个索引。 问题原因&#xff1a;账套数据库表GLVch 丢失主键。 金蝶KIS标准版&#xff0c;凭证查询&#xff0c;提示“运行时错误‘3800’&#xff1a;‘PrimaryKey’不是此表的一个索引”问题描述&#xff1a;KIS标…

年薪90万程序员不如月入3800公务员?安稳与高收入,到底如何选择?

程序员与公务员都是属于令人艳羡的工作&#xff0c;程序员收入高&#xff0c;公务员胜在稳定。两个不同的工种各有优势。但最近一位网友发言&#xff0c; 掀起了工作应该追求收入&#xff0c;还是追求稳定的讨论。 有位网友在职业论坛上分享自己的工作经历&#xff1a;自己毕业…

Keras多层感知器模型对IMDB进行情感分析

面向&#xff1a;对keras、多层感知器模型、IMDb数据有一定认识 参考教材《TensorFLowKeras深度学习人工智能应用》 实现工具&#xff1a;jupyter notebook 基本流程 &#xff08;1&#xff09;数据预处理&#xff08;2&#xff09;建立多层感知器模型&#xff08;3&#xff0…