基于google地图地理定位api的gsm小区位置估计

geocell的Python项目详细描述


google maps地理定位api实际上允许您定义多个gsm 牢房按它的要求而建。但它只会返回位置 基于第一个单元(服务单元)的准确性,不做任何有意义的事情 关于相邻小区,rssi和定时提前值。

所以这是一个尝试,做一些更有意义的事情…

安装

使用pip:

pip install geocell

或者克隆回购协议并:

pip setup.py install

设置您的google maps api密钥

钥匙将用于:

  • google maps geolocation api用于请求单元格位置
  • google maps用于绘制地图的javascript api

如果你没有google maps api密钥。去 here 然后按照指示拿钥匙。

使用以下任一方法设置API密钥:

  • 将密钥设置为GOOGLE_MAPS_API_KEY环境变量
  • import geocell然后geocell.api_key="<your api key>"

用法

简单位置请求

>>>importgeocell>>>sample_cell={"mnc":2,"mcc":286,"cid":51861,"lac":54110}>>>geocell.locate(sample_cell){'location':{'lat':40.7018889,'lng':29.8912834},'accuracy':3250.0}

位置估计

我们需要rssi值和多个单元格信息来生成 估计值

>>>sample_cells=[...{"rssi":-82,"mnc":2,"mcc":286,"cid":51861,"lac":54110},...{"rssi":-85,"mnc":2,"mcc":286,"cid":16116,"lac":54110},...{"rssi":-93,"mnc":2,"mcc":286,"cid":0,"lac":54108},...{"rssi":-94,"mnc":2,"mcc":286,"cid":38344,"lac":54110},...{"rssi":-97,"mnc":2,"mcc":286,"cid":52555,"lac":54110},...{"rssi":-98,"mnc":2,"mcc":286,"cid":51857,"lac":54108},...{"rssi":-99,"mnc":2,"mcc":286,"cid":39684,"lac":54110}...]>>>geocell.estimate(sample_cells){'location':{'lat':40.70356939393244,'lng':29.88564243119295},'accuracy':251.3839360809747}

注意

你会注意到这个函数需要几秒钟 返回,原因是google maps geolocation api 请求需要一些时间。但是单元请求是在内部缓存的 在模块中,因此下次请求同一单元格时, 将立即返回。如果你喜欢,你也可以 geocell.is_multiprocess = True执行多个请求,只需 不要在解释器中使用多处理,它不喜欢这样。

现在让我们看看它的实际效果:

>>>geocell.estimate(sample_cells,"map.html"){'location':{'lat':40.70356939393244,'lng':29.88564243119295},'accuracy':251.3839360809747}

查看生成的地图:

  • 浅黄色圆圈是服务单元格
  • 红色是相邻单元格
  • 蓝线是在 每一步。飞行路线的起点是 服务单元
  • 标记显示飞行路径的终点和最后一个 估计位置
all

让我们仔细看看:

>>>geocell.estimate(sample_cells,"map_estimate.html",cell_display="estimate"){'location':{'lat':40.70356939393244,'lng':29.88564243119295},'accuracy':251.3839360809747}

现在地图只显示估计的位置(标记)和估计的 精度(半径)。箭头指向实际位置。

estimate

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
相对于框架java窗口的鼠标位置错误   Java 8流peek api   java将数据附加到文件中   java使用ExoPlayer 2.8播放播放列表中的特定文件   JavaSpring国际化:如何动态设置语言环境值   java如何在mysql中实现两个表之间的两个关联   java在gradle可执行jar文件中包含运行时参数   surefire插件中的java maven多套测试套件   java试图理解堆分析以确定内存泄漏或所需的大量内存   java识别字符串有数字   数组如何解决错误“java.lang.ArrayIndexOutOfBoundsException:5”   java Swt文件对话框选择的文件太多?   java此登录代码易受SQL注入攻击吗?   Java[3]中的文件<identifier>预期编译错误   java如何在spring webflux中发送列表   jar中未找到java文件异常   如何在java中合并2D数组?   java如何评测本机JNI库