Python中二维凸包的偏心率

Python中二维凸包的偏心率,python,convex-hull,feature-descriptor,Python,Convex Hull,Feature Descriptor,如何在Python中计算二维凸包的偏心率 偏心率:椭圆(或闭合形状)的一个参数,表示其与圆度的偏差,其值范围为0(圆)到1(线)。对于那些仍然希望看到这个问题答案的人来说:如果我们假设闭合形状是椭圆或类似于椭圆,偏心率定义为sqrt(正方形(长轴长度/2)-正方形(短轴长度/2)),其中长轴和短轴如图所示 轴的端点作为沿每个轴的最小值点和最大值点。对于4个示例地理点(也可以是笛卡尔坐标),我们可以这样写: import numpy as np from scipy.spatial.distanc

如何在Python中计算二维凸包的
偏心率


偏心率:椭圆(或闭合形状)的一个参数,表示其与圆度的偏差,其值范围为0(圆)到1(线)。

对于那些仍然希望看到这个问题答案的人来说:如果我们假设闭合形状是椭圆或类似于椭圆,
偏心率
定义为
sqrt(正方形(长轴长度/2)-正方形(短轴长度/2))
,其中长轴和短轴如图所示

轴的端点作为沿每个轴的最小值点和最大值点。对于4个示例地理点(也可以是笛卡尔坐标),我们可以这样写:

import numpy as np
from scipy.spatial.distance import euclidean

points = np.array([[50.6636778,5.0939791], [50.7674881,5.4663611], [50.94594, 5.48977], [51.0380754,5.4012648]])

small_latwise = np.min(points[points[:, 0] == np.min(points[:, 0])], 0)
small_lonwise = np.min(points[points[:, 1] == np.min(points[:, 1])], 0)
big_latwise = np.max(points[points[:, 0] == np.max(points[:, 0])], 0)
big_lonwise = np.max(points[points[:, 1] == np.max(points[:, 1])], 0)
distance_lat = euclidean(big_latwise, small_latwise)
distance_lon = euclidean(big_lonwise, small_lonwise)
if distance_lat >= distance_lon:
    major_axis_length = distance_lat
    minor_axis_length = distance_lon
else:
    major_axis_length = distance_lon
    minor_axis_length = distance_lat
a = major_axis_length/2
b = minor_axis_length/2
ecc = np.sqrt(np.square(a)-np.square(b))/a
print(ecc)

这将产生
0.0854194406287

发布您的测试结果。我将投票结束这个问题,因为除了没有显示任何研究或努力之外,这个问题实际上与编程无关。