JS大地测量库geodesy的使用方法

geodesy 是对大地椭球体表面点进行运算的库。可以计算地表两点间的最短距离和路径。或已知距离和方位求终点,并且可以对结果进行格式化输出。

使用方法

在页面中使用

<!doctype html><title>geodesy example</title><meta charset="utf-8">
<script type="module">
    import LatLon from 'https://cdn.jsdelivr.net/npm/geodesy@2.3.0/latlon-spherical.min.js';

    const p1 = new LatLon(50.06632, -5.71475);
    const p2 = new LatLon(58.64402, -3.07009);

    const d = p1.distanceTo(p2);
    console.assert(d.toFixed(3) == '968874.704');

    const mid = p1.midpointTo(p2);
    console.assert(mid.toString('dms') == '54° 21′ 44″ N, 004° 31′ 51″ W');
</script>

在Nodejs中使用

对于无法使用 import ... from "..."语句的场景,可以用import("...")函数引入,在异步和同步场景下也有差异。

安装

一般直接安装geodesy,TS项目中需要安装@types/geodesy

npm install geodesy

import引入

import LatLon from 'geodesy/latlon-spherical.js';
const p1 = new LatLon(50.06632, -5.71475);
const p2 = new LatLon(58.64402, -3.07009);

异步函数中使用

async function amain(){
    const { default: LatLon } = await import('geodesy/latlon-spherical.js');
    const p1 = new LatLon(52.205, 0.119);
}
amain()

同步函数中使用

import('geodesy/latlon-spherical.js')
        .then((s) => {
            const LatLon = s.default
            const p1 = new LatLon(52.205, 0.119);
        })

主要功能

  1. 计算两个经纬度点的距离。
  2. 已知一点坐标及其与另一点的距离和方位,求另一点。
  3. 求两点的途经点。
  4. 坐标格式转换。

已知两点求路径距离、方位和途径点

使用球面算法和vincenty算法具有相同的功能,区别在于球面算法计算速度更快,vincenty算法步骤繁琐但是更精确。

//import LatLon from 'geodesy/latlon-spherical.js';//球面算法
import LatLon from 'geodesy/latlon-ellipsoidal-vincenty.js';//vincenty算法


let p1 = new LatLon(28.2, 113.00);
let p2 = new LatLon(28.3,112.9);

let dist = p1.distanceTo(p2)  //两点最短距离
let brng1 = p1.initialBearingTo(p2) //曲线起始处在的方位
let brng2 = p1.finalBearingTo(p2) //曲线在终止处的方位
let mid = p1.intermediatePointTo(p2,0.5) //途径点,0.5指路径的二分之一处

console.log(dist,brng1,brng2,mid)

已知起始点和距离、方向,求终点

import LatLon from 'geodesy/latlon-ellipsoidal-vincenty.js';//vincenty算法

const dist = 100000;//已知两点间距离
const brng1 = 45; //已知曲线起始处在的方位
let p1 = new LatLon(28.2, 113.00);

let p2 = p1.destinationPoint(dist, brng1); //求终点
let brng2 = p1.finalBearingOn(dist,brng1); //曲线在终止处的方位

console.log(p2,brng2)

格式化坐标点

let s1= p1.toString('dms')
console.log(s1)

参考文档

完整文档:Movable Type — Information Design & Management (movable-type.co.uk)

NPM文档:geodesy - npm (npmjs.com)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用中提到的问题是在编译Ubuntu 20.04系统时出现的报错,报错信息显示找不到名为"GeographicLib"的软件包配置文件。解决这个问题有几种方法。引用中给出的第一种方法使用apt-get命令来安装"GeographicLib"相关的软件包。具体的命令是sudo apt-get install ros-melodic-geographic-* sudo apt-get install geographiclib-* sudo apt-get install libgeographic-*。这些命令将会安装所需的软件包。引用给出了第二种解决方法,即创建一个软链接。根据引用中的指示,在Ubuntu 20.04环境下安装完软件包后,cmake编译依然找不到路径。这是因为FindGeographicLib.cmake文件被安装到了错误的位置。正确的位置应该是/usr/share/cmake-3.16/Modules。可以通过创建一个软链接将其正确地链接到/usr/share/cmake/geographiclib/FindGeographicLib.cmake。 关于引用中提到的问题中关于"geodesy"软件包配置文件的查找,根据报错信息,也可以按照相似的方法进行解决。首先,需要确认"geodesy"软件包是否已经正确安装。然后,可以尝试使用类似的方法来找到"geodesy"软件包配置文件并将其路径添加到CMAKE_MODULE_PATH或设置"geodesy_DIR"的值为包含配置文件的目录。如果"geodesy"提供了单独的开发包或SDK,还需要确保已经安装了它。 总结起来,解决找不到软件包配置文件的问题有以下几个步骤: 1. 确认软件包是否已经正确安装。 2. 尝试使用类似的方法来找到软件包配置文件的路径。 3. 将配置文件路径添加到CMAKE_MODULE_PATH或设置对应的变量。 希望以上信息能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高堂明镜悲白发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值