OpenLayers学习笔记(十二)— 飞机速度矢量线预测(二)
根据计算公式实现预测线
作者:狐狸家的鱼
GitHub:八至
之前有一篇博客简单写了一个模拟demo,根据物体当前的速度和方向预测多少时间后所在的位置,具体计算是参考《(译)计算距离、方位以及更多经纬度之间的点》,现在重新用计算公式实现,代码如下:
let createVelLine = obj => {
const DEG2RAD = Math.PI / 180;
const RAD2DEG = 180 / Math.PI;
const radius = 6371.0088; //km
const KTS2KPH = 1.85200;
let pred_secs = 30; //预测未来30s的轨迹线
//角度转弧度
let latFrom = obj.latitude * DEG2RAD;
let lonFrom = obj.longitude * DEG2RAD;
let bearing = obj.rotation;
//30s后预测点的距离
if (map.getView().getZoom() < 8) pred_secs *= 4;
let distance = obj.speed * KTS2KPH * (pred_secs / 3600); //公里 H
//计算预测点坐标
let latTo = Math.asin(
Math.sin(latFrom) * Math.cos(distance / radius) +
Math.cos(latFrom) * Math.sin(distance / radius) * Math.cos(bearing));
let lonTo = lonFrom + Math.atan2(
Math.sin(bearing) * Math.sin(distance / radius) * Math.cos(latFrom),
Math.cos(distance / radius) - Math.sin(latFrom) * Math.sin(latTo)
);
lonTo = ((lonTo + 3 * Math.PI) % (2 * Math.PI)) - Math.PI;
//弧度转角度
let lat_dist = latTo * RAD2DEG;
let lon_dist = lonTo * RAD2DEG;
//转换成起点和终点坐标
from = ol.proj.fromLonLat([obj.longitude, obj.latitude]);
to = ol.proj.fromLonLat([lon_dist, lat_dist]);
}
在更新数据的位置调用该函数传参即可。
OpenLayers学习笔记(十二)— 飞机速度矢量线预测(二)的更多相关文章
- OpenLayers学习笔记(十一)— 飞机速度矢量线预测
在机场使用的空管系统中,飞机的速度矢量线差不多是这样的: 模拟飞机飞行时的速度矢量线,这里就大概做个类似效果: 什么叫速度矢量线呢,个人理解就是根据飞机当前速度和航向预测它在未来一段时间内的飞机轨迹, ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
- Go语言学习笔记十二: 范围(Range)
Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...
- Learning ROS for Robotics Programming Second Edition学习笔记(十) indigo Gazebo rviz slam navigation
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 moveit是书的最后一章,由于对机械臂完全不知,看不懂 ...
- WPF学习笔记-用Expression Design制作矢量图然后导出为XAML
WPF学习笔记-用Expression Design制作矢量图然后导出为XAML 第一次用Windows live writer写东西,感觉不错,哈哈~~ 1.在白纸上完全凭感觉,想象来画图难度很大, ...
- python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法
python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然 ...
- python3.4学习笔记(十六) windows下面安装easy_install和pip教程
python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...
随机推荐
- 基于vue的移动端web音乐播放器
声明 以下只是学习完慕课网huangyi老师实战视频课程的笔记内容,仅供个人参考学习使用.如果对Vue2.0实战高级-开发移动端音乐WebApp感兴趣的话,请移步这里:https://coding.i ...
- CF 49E Common ancestor
传送门 模拟赛T1就自闭了( 才不会说我是去刚T2了来着 感觉非常暴力的一个题? 出题人良心开大数据范围 n=100 还是原来的n^4*26算法我也是自闭了 不过貌似跑不到n^4? 真·大力出奇迹 一 ...
- 01.springboot入门--启用自动配置注解EnableAutoConfiguration
springboot入门 <parent> <groupId>org.springframework.boot</groupId> <artifactId&g ...
- Juint test Case 的2种使用方式
通常情况下,我们去测试一个类中的方法,首先是建立一个包,包中建立一个测试类,在建立测试类文件时,选择JUnit Test Case,如下: 建好之后写测试用例: 但是如果偏就想在编写方法的那个java ...
- [ZJOI2019]开关
以下的方案数默认是带权方案数.设\(P=\sum_{i=1}^np_i\). 设\(F(x)\)为按\(i\)次开关后到达终止态的方案数的EGF,\(f\)为\(F\)的OGF,显然\(F(x)=\p ...
- The mook jong
The mook jong Accepts: 506 Submissions: 1281 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- linux设备驱动第三篇:写一个简单的字符设备驱动
在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动.本篇借鉴LDD中的源码,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分 ...
- 建站手册-浏览器信息:Mozilla Firefox 浏览器
ylbtech-建站手册-浏览器信息:Mozilla Firefox 浏览器 1.返回顶部 1. http://www.w3school.com.cn/browsers/browsers_firefo ...
- exception中return方法
public class ExceptionPitfall { public static void main(String[] args) { try { throw new RuntimeExce ...
- How to show out three rows from the same databand On A4?
How to show out three rows from the same databand On A4? Quote Post by DoraHuang » Tue Mar 13, 2018 ...