【发布时间】:2020-10-29 03:31:36
【问题描述】:
我正在尝试提出一个功能...
输入:以英里或公里为单位的测地距离
输出:任意两个gps点之间的欧式距离,即输入距离
我觉得我有一些组件
import numpy as np
from numpy import linalg as LA
from geopy.distance import geodesic
loc1 = np.array([40.099993, -83.166000])
loc2 = np.array([40.148652, -82.903962])
这是这两点之间的欧几里得距离
LA.norm(loc1-loc2)
#0.2665175636332336
这是这两点之间的测地线距离
geodesic(loc1,loc2).miles
#14.27909749425243
我的大脑现在的汁液不足,任何人都对我如何制作如下函数有任何想法:
geodesic_to_euclidean(14.27909749425243)
#0.2665175636332336
【问题讨论】:
-
假设地球表面是一个球体,你想要连接两个地理位置的弧的距离吗?
-
我只查看 50 英里以内的范围,所以我认为假设平坦的表面是公平的?
-
LA.norm无论如何都不会给你正确的值,因为你没有使用笛卡尔坐标。您需要计算两个位置相对于地球中心的角度(以弧度为单位),然后乘以地球的半径。 -
好吧,所以我在聚类算法 DBSCAN 中使用欧几里德距离作为参数。输入到算法中的唯一维度是纬度和经度。所以我不需要欧几里得距离来表示任何真实的东西,只需要任何两个向量之间的 2-Norm 距离。这有问题吗?...我对 GIS 的东西超级陌生...
-
@Jamalan 越靠近两极,准确性就会下降。这也是墨卡托地图投影将南极洲炸得比实际大得多的原因。