从特定的飞行计划航点获取 GPS 坐标

Posted

技术标签:

【中文标题】从特定的飞行计划航点获取 GPS 坐标【英文标题】:Getting GPS Coordinates from a specific flight plan waypoints 【发布时间】:2017-10-27 14:42:28 【问题描述】:

我正在开发一张传单地图,我想根据从 A 到 B 的航路点(交叉点)列表在其上显示飞行计划,例如在网站 http://onlineflightplanner.org/ 上显示飞行路线地图。

我的问题是,如何从航路点获取后面的 gps 坐标(例如:ADABI : N44°4943.15 / W000°42'55.24''?是否有任何 javascript 库可以做到这一点?非常感谢

【问题讨论】:

【参考方案1】:

您确实可以使用像Javascript GeoPoint Library 这样的库,但是这样的转换很容易实现。此外,上述库希望您已经知道哪个值是纬度(北),哪个值是经度(东),如果您的输入是 "N44°49'43.15 / W000°42'55.24''",则可能不是这种情况。

在Converting latitude and longitude to decimal values 的基础上,我们可以轻松制作适合您情况的特定转换实用程序:

var input = "N44°49'43.15 / W000°42'55.24''";

function parseDMS(input) 
  var halves = input.split('/'); // Separate northing from easting.
  return  // Ready to be fed into Leaflet.
    lat: parseDMSsingle(halves[0].trim()),
    lng: parseDMSsingle(halves[1].trim())
  ;


function parseDMSsingle(input) 
  var direction = input[0]; // First char is direction (N, E, S or W).
  input = input.substr(1);
  var parts = input.split(/[^\d\w.]+/);
  // 0: degrees, 1: minutes, 2: seconds; each can have decimals.
  return convertDMSToDD(
    parseFloat(parts[0]) || 0, // Accept missing value.
    parseFloat(parts[1]) || 0,
    parseFloat(parts[2]) || 0,
    direction
  );


function convertDMSToDD(degrees, minutes, seconds, direction) 
  var dd = degrees + minutes/60 + seconds/(60*60);

  if (direction == "S" || direction == "W") 
      dd = dd * -1;
   // Don't do anything for N or E
  return dd;


console.log(input);
console.log(parseDMS(input));

【讨论】:

以上是关于从特定的飞行计划航点获取 GPS 坐标的主要内容,如果未能解决你的问题,请参考以下文章

从 Ar Drone 2.0 获取 GPS 数据

Loj #3085. 「GXOI / GZOI2019」特技飞行

飞行模式开启时 CLLocationManager 是如何获取位置的

基于与给定点的距离的最近 GPS 坐标

无人飞行器巡检输电线路的杆塔和导线跟踪算法

无人机飞行数据java版本api大疆无人机SpringBoot