毕业设计实现思路-算法部分
原理
已有AP的坐标信息是提前录入系统的,客户端是可以拿到这个信号的,拿到信号后与自己扫描到的周边信号信息进行运算,从而确定位置
发现一个新的定位技术叫wifiRTT,根据往返时间计算设备距离AP距离,
离线检测阶段
ISODATA 算法应用于离线定位阶段
通过账号区分用户类型
一个单独的管理员账号负责离线信号采集工作
用户账号则面向使用
在线检测阶段
自适应加权 K 近邻算法用于在线定位阶段的定位
算法计算时需要和对应的ap进行运算,所以在数据库表中进行存储时需要对应存储
当设备处于一个位置时,可以扫描到周围wifi信号,此时数据库中存储的是多个参考点的wifi指纹,对于一个参考点录入的各个wifi的RSSI,和当前位置的RSSI计算差值的平方和,这样计算出的就是当前位置和该参考点的欧氏距离,按照这种方式,计算出当前位置距离所有参考点的欧式距离,选出最小值,对应的参考点即为当前位置
参考
- [1] Golang 调用python
仿真测试
参考
- [1] excel数据导入mysql
坐标映射
算法到底怎么跑的,算出来个啥
坐标转换地图显示
单纯依靠wifi指纹条目,随着条目增多,计算速度大幅度降低
现在的理解是,聚类算法就是把已有AP分类形成几个大类,然后先确定所出大类,再进入大类确定细节,有点类似分块算法
分成几个大类就是 ISODATA做的事情,在此数据的基础上,应用K邻近算法确定细节
可以先考虑没有 ISODATA,现在只考虑确定细节的K邻近是如何处理指纹信息确定位置的
-
首先需要确定示例中
-
定位点如何显示(定位点图标如何显示)
需要理解2个概念,一是图层类
FMLocationLayer
,一个是标记类FMLocationMarker
大致理解就是获取图层,然后创建标记,并且把标记添加到图层中
- 获取图层
- 创建标记,包括设置坐标、图像,大小
- 将标记添加到图层中
-
定位点如何变动位置
简单来说标记类是具有更新位置的方法的,设置刷新间隔时间,每次向api发送当前位置的ap信息,由服务器计算当前位置的坐标并返回app端
-
坐标如何计算,坐标计算有两方面问题,一方面是算法的计算过程,这部分放在在线检测阶段来解决;另一方面是地图的点是如何表示的
图片映射到fengmap,只需要确定两者部分点之间的映射关系,给定一个相对坐标即可确定在fengmap上的位置
-
参考
- [1] 室内定位