传单 JavaScript 方位与 Python 计算不匹配

Leaflet JavaScript bearings do not match Python calculations

提问人:Denis Kotov 提问时间:11/15/2023 最后编辑:Denis Kotov 更新时间:11/15/2023 访问量:14

问:

在我的应用程序中,我使用方位角来检测信号交叉点。 我使用以下 python 代码来检测轴承的交叉点:

import nvector as nv

def bearing_intersect_nvector(point_0, bearing_0, point_1, bearing_1):
    point_a1 = nv.GeoPoint(point_0[0], point_0[1], degrees=True)
    point_a2 = point_a1.displace(10, bearing_0, degrees=True)[0]
    point_b1 = nv.GeoPoint(point_1[0], point_1[1], degrees=True)
    point_b2 = point_b1.displace(10, bearing_1, degrees=True)[0]
    path_a = nv.GeoPath(point_a1, point_a2)

    path_b = nv.GeoPath(point_b1, point_b2)
    point_c = path_a.intersect(path_b)
    point_c = point_c.to_geo_point()
    lat, lon = point_c.latitude_deg, point_c.longitude_deg
    return Coord(lon, lat)

在 JavaScript 上,我使用以下代码作为绘制方位线的第二个线点:

  const end_x = (startCoords as LatLng).lng + length * Math.cos(-(angle - 90) * Math.PI / 180);
  const end_y = (startCoords as LatLng).lat + length * Math.sin(-(angle - 90) * Math.PI / 180);

但问题是,使用 JavaScript 代码绘制的方位角使用 and 作为端坐标与使用上述 python 代码绘制的方位角计算交点不匹配。end_xend_y

我在以下 python 代码中遇到了同样的问题,它与上面的 JavaScript 方位计算匹配,但方位与 nvector 计算不匹配。

import math
from geojson import LineString, Feature, Point
from turfpy.misc import line_intersect

def bearing_intersect_turfpy(point_0, bearing_0, point_1, bearing_1):
    def add_bearing(coord, angle):
        length = 1
        end_lat = coord["coordinates"][0] + length * math.sin(-(angle - 90) * math.pi / 180)
        end_lon = coord["coordinates"][1] + length * math.cos(-(angle - 90) * math.pi / 180)
        azimuth = Feature(geometry=LineString([coord, Point((end_lat, end_lon))]))
        return azimuth

    point_0 = Point((point_0[0], point_0[1]))
    point_1 = Point((point_1[0], point_1[1]))
    bearing_0 = add_bearing(point_0, bearing_0)
    bearing_1 = add_bearing(point_1, bearing_1)
    point_2 = line_intersect(bearing_0, bearing_1)["features"][0]["geometry"]["coordinates"]
    return Coord(point_2[1], point_2[0])

我想知道为什么??哪种计算是正确的?? 根据我的经验,nvector 实现比计算的简单几何效果要好得多,但我不确定为什么......

javascript python 几何 geojson 测地线球

评论


答: 暂无答案