【发布时间】:2022-01-10 04:59:59
【问题描述】:
假设我们有以下坐标;基于角度的起点和终点:[(37.040893, -7.83197), (37.042393, -7.83197)]。在地图中,我将它们绘制如下:
如下图所示,我能够成功获得终点,并且效果很好:
import math
end_lat = origin_point[0] + length * math.sin(math.radians(angle))
end_lon = origin_point[1] + length * math.cos(math.radians(angle))
但我想根据原点和终点创建一个长度为x meters、宽度为6 meters 的矩形。而起点和终点都在其顶点的中心。下图解释了我正在尝试做的事情:
现在,我发现纬度 1 度等于 110.574km,经度 1 度等于 111.320*cos(latitude)km。而且,我对数学不太熟悉,我不应该线性地(盲目地)解决这个问题。 我该如何解决这个问题并确保一切正常?
【问题讨论】:
-
我建议不要自己做数学,而是找一个库函数为你做。
-
如果你盲目地这样做,你不能确定它是否完美。您需要充分了解问题,才能知道您的代码正在做它应该做的事情。
-
如图所示,这 2 个点是否总是沿北/南完美运行?如果没有,我认为这个问题会变得更加困难。
-
如果您将公式中的
length替换为3 meters和math.radians(angle)替换为math.radians(angle + 90),您将获得原点左侧矩形角的坐标。如果将length替换为3 meters,将角度替换为math.radians(angle - 90),则得到原点右侧矩形角的坐标。 -
然后,如果您将
origin_point替换为公式中的这两个角之一,您将得到其余两个角之一。
标签: python math geometry maps coordinates