Js 根据经纬度坐标计算方位角

azimuthUtils

项目源码链接如下:Gitee项目链接

介绍

利用经纬度坐标,求解方位角【JS实现】

安装教程

本实现只用到了一个库 Threejs,Threejs主要用于实现3D场景,本实现利用Three.js中的一些工具类,进行数据转换

安装Threejs

npm install three --save
使用案例
//引入Threrjs
const THREE=require('three')  //npm install three --save
// import * as THREE from 'three'   
//用例数据
	var lonlat0 = [ 34.80770804146611, 113.55585694313051] //参照点
	var lonlat1 = [ 34.807743270320515, 113.55691373348238] //东
    var lonlat2 = [ 34.807139974109454, 113.55676352977753] //东南
    var lonlat3 = [ 34.807003461215416, 113.55584621429445] //南
    var lonlat4 = [ 34.807126763194105, 113.55516493320467] //西南
    var lonlat5 = [ 34.80772125228826,113.5548484325409] //西
    var lonlat6 = [34.80861958322779, 113.55479478836061] //西北
    var lonlat7 = [ 34.80863719746204,113.55581402778627] //北
    var lonlat8 = [ 34.80850949417833, 113.5569351911545] //东北
// lon1经度 lat纬度
//lonlat1 坐标1
//lonlat2 坐标2
function azimuth(lonlat1, lonlat2) {
	var lon1=THREE.MathUtils.degToRad(lonlat1[1])
	var lat1=THREE.MathUtils.degToRad(lonlat1[0])
	var lon2=THREE.MathUtils.degToRad(lonlat2[1])
	var lat2=THREE.MathUtils.degToRad(lonlat2[0])

	if(lon1==lon2){
		if (lat2 >= lat1){
		   return 0
		}else{
		   return 180 
		}
	}
	if (lat1 == lat2){
		if(lon2 > lon1 ){
			return 90
		}else if(lon2 < lon1){
			return 270
		}
	}
	
	var a = THREE.Math.radToDeg(Math.atan((lon2 - lon1) * Math.cos(lat2) / (lat2 - lat1)))
	if(lat2 > lat1){
		if(lon2 > lon1){
			return a
		}else{
			return a + 360
		}
	}else{
		return a + 180
	}
}

console.log("东",azimuth(lonlat0, lonlat1) )
console.log("东南",azimuth(lonlat0, lonlat2) )
console.log("南",azimuth(lonlat0, lonlat3) )
console.log("西南",azimuth(lonlat0, lonlat4) )
console.log("西",azimuth(lonlat0, lonlat5) )
console.log("西北",azimuth(lonlat0, lonlat6) )
console.log("北",azimuth(lonlat0, lonlat7) )
console.log("东北",azimuth(lonlat0, lonlat8) )

执行该程序

 node .\index2.js

方位坐标系参照如下

在这里插入图片描述

结果如下

87.67505557361658
东南 127.34881807813873180.7163204119453
西南 224.34785264592313
西   270.91401595485104
西北 316.26689801310204357.8282236159254
东北 47.8461480246868
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汪随安

朝看天色暮看云行也思君坐也思君

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

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

打赏作者

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

抵扣说明:

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

余额充值