硬件环境:

MacBook Pro (15-inch, 2017)

iPhone 8 Plus

macOS Mojave 10.14.5

iOS 12.4

Xcode 10.2.1

Python 3.7.0

sublime text 3.1.1

打开Xcode -> Preferences 添加Apple ID

在Xcode上创建新项目,打开Xcode -> create a new Xcode project

选择ios菜单 -> Single View App,填写项目名 推荐非中文,在事先准备好的文件夹内存放 文件夹推荐非中文

此时将iPhone连接mac 左上角显示连接设备

出现如下结果即为成功:

2.使用Xcode创建一个含有gpx的文件

GPX(GPS eXchange Format,GPS交换格式)是一个XML格式,为应用软件设计的通用GPS数据格式,专门用来存储地理信息

一个GPX文件内包含一些经纬度点组成的轨迹,包含了时间、名字等信息

回到Xcode 打开Xcode -> File -> New -> File...

在IOS菜单下选择GPX File

选择一个位置并命名GPX文件 例:fake_loc.gpx

自动生成如下gpx文件即为成功

分析该gpx文件,格式类似标签语言风格

在 标签内包含经纬度(lat、lon)、该点名称以及时间

第一段注释内容大意为:

“提供一个或多个包含纬度/经度对的点_

如果提供一个点,Xcode将模拟那个特定的点_

如果提供多个点,Xcode将依次模拟每一个点”_

第二段注释内容大意为:

“可以选择为每一个坐标点添加一个时间标签_可,Xcode可以根据时间标签的顺序依次移动到每一个坐标点,并根据时间点来插入速度X

如果不提供一个时间标签,那么Xcode将使用一个固定的速度_

航路点必须按时间升序排序_”

因此,可以通过输入一系列点来模拟位置,让Xcode来依次定为每一个点来模拟人的跑动行为

3.使用Python来自动生成一系列轨迹点

mac下python与sublime text3的环境配置在第一篇随笔中有记录

分析gpx文件结构可以得到目标gpx文件结构应该为:

<?xml version="1.0"?>

#......

#以此类推

在地图经纬度查询网站可以得到指定地点的经纬度信息:http://www.gpsspg.com/maps.htm

我们选择西安市某211高校作为实验地点:

该网站提供多个公司的定位标准下的经纬度信息

由于每一家公司的定位标准不同,经纬度就会存在偏差,这时候就要看用来模拟的APP使用哪家的地图了

我们以某跑步打卡APP 步道乐跑 作为实验对象,在该高校实现水平移动与竖直移动

经过验证该APP使用的是 谷歌地球标准,通过该网站首先得到一段直线的首尾经纬度点:

开始点:

lat:34.3752989239lon:108.9080291565

中间点:

lat:34.3740193255lon:108.9085977848

结束点:

lat:34.3733728774lon:108.9064091023

在该网站可以通过经纬度获得距离信息:http://www.hhlink.com/经纬度/

计算得到距离约为78米

后续可根据需求,通过测距来得到相应距离 从而计算得到水平与竖直移动速度

可以得出结论:

在该高校相对从北到南 经度减少,纬度增加

在该高校相对从东到西 经度减小,纬度减小

在符合跑步打卡APP步道乐跑的配速要求:3~9 min/km,例如从北到南生成100个点

经度依次减少 纬度依次增加,并使得这100个点散布在路径上

每个点之间减少或者增加的距离可以通过乘以指定范围内的随机数,使得点之间呈现左右略为摇摆的路径

在点数量较多的情况下近似为人的跑动轨迹

根据该高校的位置情况编写相应的python程序:

import random #初始点信息

a1 = 34.3752989239;

b1 = 108.9080291565; #中间点信息

a2 = 34.3740193255;

b2 = 108.9085977848; for i in range( 1,1000 ): while( a1 >= a2 ): # 循环条件 经度未到达中间点时执行

xa = round( random.uniform(0.2, 7) ) # 随机数,用于模拟人跑动

xb = round( random.uniform(12, 15) ) # 竖直移动

a1 = round( a1 - 0.0000072 * xa , 10 )

b1 = round( b1 + 0.0000008 * xb , 10 ) # 输出信息

print( '' ) print( '' ) for i in range( 1,1000 ):

xa = round( random.uniform(2, 8) )

xb = round( random.uniform(1, 3) ) # 水平移动

a2 = round( a2 - 0.000003 * xa, 10 )

b2 = round( b2 - 0.000025 * xb, 10 ) print( '' ) print( '' )

得到输出(节选):

将该输出复制并粘贴在gpx文件里

并 command + s 保存

可以在xcode项目目录内找到并打开该文件:

4.开始位置模拟

确保手机连接上电脑,并解锁保持屏幕常亮

点击Xcode右上角开始图标:

第一次会提示iPhone未信任开发者

在设置 -> 通用 -> 设备管理 点击该开发者并选择信任

再次在Xcode上点击右上角图标

一分钟左右手机上会多出一个灰色的app图标

点击后按home键退出,进入步道乐跑

在Xcode下方多出一栏功能,点击位置图标并选择你的fake_loc

此时APP就已经按照gpx文件内的路径开始移动了

总结

在模拟时没有考虑速度的因素,按照默认的Xcode对gpx的点的更新速度来实现的

在控制整体的移动速度时完全是按照点的密集程度,即点的位置变化程度来实现的

后期可以根据时间标签来改进获得更精确的速度

根据步道乐跑后台数据,检测作弊主要依靠平均配速、每公里的步数、设备uuid、设备序列号来检测的

文章的方法可以解决平均配速、uudi、序列号等问题(因为就是使用真机来实现的)

但是对于步数只能依靠在模拟时通过摇晃手机来实现

原文:https://www.cnblogs.com/Joeric07/p/11173651.html

滑动轨迹 曲线 python_Python 模拟真实运动轨迹,轻松完成长跑和打卡相关推荐

  1. 滑动轨迹 曲线 python_python曲线图

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 利用python生成曲线图像的脚本,参考自:http:www.lorenzogi ...

  2. 滑动轨迹 曲线 python_python处理滑块验证的轨迹计算问题

    在上一回中说了五行代码找图中滑块验证的缺口位置<python五行代码解决滑块验证的缺口距离识别,破解滑块验证>,本章讲轨迹相关的问题. 滑块验证核心是后台验证轨迹参数,效验轨迹取点的分布, ...

  3. 滑动轨迹 曲线 python_python – 计算轨迹(路径)中的转折点/枢轴点

    您可以使用 Ramer-Douglas-Peucker (RDP) algorithm来简化路径.然后,您可以计算简化路径每段的方向变化.对应于方向最大变化的点可以称为转折点: RDP算法的Pytho ...

  4. 滑动轨迹 曲线 python_python——自动轨迹绘制

    原博文 2018-11-06 19:03 − import turtle as t t.title("大帅逼") t.setup(800, 600, 0, 0) t.pencolo ...

  5. 滑动轨迹 曲线 python_无人驾驶路径规划技术-三次样条插值曲线及Python代码实现...

    自动驾驶运动规划(Motion Planning)是无人驾驶汽车的核心模块之一,它的主要任务之一就是如何生成舒适的.碰撞避免的行驶路径和舒适的运动速度.生成行驶路径最经典方法之一就是是Sampling ...

  6. 滑动轨迹 曲线 python_滑氏的起源 - 滑氏族谱 - 滑姓

    滑 氏 一.姓氏源流 滑(Huá)姓源流较纯正,源出有一: 出自姬姓,以国名为氏.据<英贤传>载,"同公族后有滑氏."据<通志·氏族略·以国为氏>载,西周时 ...

  7. SimulateSlidingTrack滑动轨迹库:一行代码获取仿真手动滑动轨迹

    SimulateSlidingTrack 仿真滑动轨迹 https://github.com/HuRuWo/SimulateSlidingTrack SimulateSlidingTrack 一行代码 ...

  8. ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程

    从<ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求>我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但 ...

  9. AEscripts Fog for Mac - 模拟真实三维体薄雾AE/PR插件

    AEscripts Fog for Mac是一款无需使用深度贴图,即可立即创建一层雾.扩散和薄雾的模拟真实三维体薄雾插件,AEscripts Fog Mac版可在After Effects和Premi ...

最新文章

  1. 首届UBDC全域大数据峰会:未来的数据一定是全域数据
  2. 敏捷游戏:从硬币游戏学习Scrum敏捷方法
  3. vue日期格式化实例
  4. 【Linux】IPC-消息队列
  5. 用SQL实现记录上下移动的思路
  6. Python的collections模块中namedtuple结构使用示例
  7. matlab myupdatefcn,MATLAB笔记
  8. 牛腩购物网25:购物车的实现
  9. Web开发牛人访谈:你们都在用什么?
  10. 关于上采样方法总结(插值和深度学习)
  11. 如何屏蔽搜狗浏览器中的广告 搜狗浏览器拦截广告的教程
  12. 研究生跟了一个很棒的导师是种怎样的体验?
  13. 鲁大师从服务器获取信息失败怎么办,云服务器 鲁大师
  14. excel两个指标相关性分析_用Excel做相关性分析
  15. 我的世界基岩版json_我的世界 基岩版:官方服务器配置与使用
  16. layer 关闭一个弹窗打不开新的的弹窗_电脑小技巧关闭FF弹窗
  17. daytime协议的服务器和客户端程序,用Socket套接字实现DAYTIME协议的服务器和客户端程序-20210726002244.doc-原创力文档...
  18. SIM900A保姆级调试日记
  19. Neural Network, CNN 简介
  20. 从底层到应用,那些数据人的必备技能

热门文章

  1. React中CSS样式
  2. 质量流量计雷电击故障的应对策略
  3. 按防电击类型分类的II设备(无保护接地线缆)可免于线对地的浪涌实验
  4. 单独给axios设置请求头
  5. 智障的wordpress更换主题之旅
  6. 本人以及硕士期间研究介绍
  7. 2017年支付宝五福活动的python生福脚本。
  8. Nginx运维之一 反向代理、动静分离、负载均衡
  9. ViewPager2页面指示器(圆形)
  10. 新三板上市和主板上市的区别主要是什么?