1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 已知A点经纬度坐标 方位角角度 距离 求B点经纬度

已知A点经纬度坐标 方位角角度 距离 求B点经纬度

时间:2022-05-29 06:20:00

相关推荐

已知A点经纬度坐标 方位角角度 距离 求B点经纬度

/*** 度换成弧度* @param {Float} d 度* @return {[Float} 弧度*/LIB.rad = function (d) {return d * Math.PI / 180.0;}/*** 弧度换成度* @param {Float} x 弧度* @return {Float} 度*/LIB.deg = function (x) {return x * 180 / Math.PI;}this.ADestinceAngle_B = function (lonlat, brng, dist) {var u = this;var ct = {a: 6378137,b: 6356752.3142,f: 1 / 298.257223563};var a = ct.a, b = ct.b, f = ct.f;var lon1 = lonlat.lon * 1; //乘一(*1)是为了确保经纬度的数据类型为numbervar lat1 = lonlat.lat * 1;var s = dist;var alpha1 = LIB.rad(brng);var sinAlpha1 = Math.sin(alpha1);var cosAlpha1 = Math.cos(alpha1);var tanU1 = (1 - f) * Math.tan(LIB.rad(lat1));var cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1)), sinU1 = tanU1 * cosU1;var sigma1 = Math.atan2(tanU1, cosAlpha1);var sinAlpha = cosU1 * sinAlpha1;var cosSqAlpha = 1 - sinAlpha * sinAlpha;var uSq = cosSqAlpha * (a * a - b * b) / (b * b);var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 * uSq)));var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));var sigma = s / (b * A), sigmaP = 2 * Math.PI;while (Math.abs(sigma - sigmaP) > 1e-12) {var cos2SigmaM = Math.cos(2 * sigma1 + sigma);var sinSigma = Math.sin(sigma);var cosSigma = Math.cos(sigma);var deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) -B / 6 * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM)));sigmaP = sigma;sigma = s / (b * A) + deltaSigma;}var tmp = sinU1 * sinSigma - cosU1 * cosSigma * cosAlpha1;var lat2 = Math.atan2(sinU1 * cosSigma + cosU1 * sinSigma * cosAlpha1,(1 - f) * Math.sqrt(sinAlpha * sinAlpha + tmp * tmp));var lambda = Math.atan2(sinSigma * sinAlpha1, cosU1 * cosSigma - sinU1 * sinSigma * cosAlpha1);var C = f / 16 * cosSqAlpha * (4 + f * (4 - 3 * cosSqAlpha));var L = lambda - (1 - C) * f * sinAlpha *(sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM)));var revAz = Math.atan2(sinAlpha, -tmp); // final bearingvar lon_destina = lon1 * 1 + LIB.deg(L);var lonlat_destination = {lon: lon_destina, lat: LIB.deg(lat2)};return lonlat_destination;}

已知起点坐标lon:114,lat:38

正北夹角45度

长度距离100米

调用:

var coord = this.ADestinceAngle_B({lon:114,lat:38},45,100)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。