【问题标题】:How to find all coordinates efficiently between two geo points/locations with certain interval using python如何使用python有效地查找具有一定间隔的两个地理位置/位置之间的所有坐标
【发布时间】:2020-01-13 10:17:04
【问题描述】:

我想计算地球上两个地理点(纬度/经度)之间的所有地理坐标。我想为这个问题提供一个 python 解决方案。

注意:我不希望两点之间的距离需要坐标来模拟地图上的一个人,以便将他从地图上的一个点移动到另一个点,这就是为什么我需要所有坐标来显示流畅逼真的运动。

【问题讨论】:

  • 我认为在定义“所有坐标”时需要非常小心。这就像询问(0.0, 0.0)(1.0, 1.0) 之间的所有浮点数。除非指定精度,否则您正在查看无限集合。
  • 是的,假设我需要从 p1=(256.8526917702848,34.4067401623357) 到 p2=(256.8519730272503,34.406374419651) 的电线,间隔为 0.0004
  • 因此创建一个循环,每次迭代将每个数字增加0.0004。这里没有任何神奇的算法。
  • 我试过了,但是当我使用这种方法创建路径时它非常慢,而且大多数情况下它永远不会在这个分数 (0.0004) 中找到目标坐标

标签: python python-3.x geolocation gis


【解决方案1】:

这更像是一个几何问题而不是 Python 问题。

以下公式为您提供点 (x1,y1) 和 (x2,y2) 之间的所有点 (x,y):

y = (y1-y2)/(x1-x2) * (x - x1) + y1      for x in [x1, x2]

所以如果你想要一个简单的 python 代码(不是最平滑的增量):

# your geo points
x1, y1 = 0, 0
x2, y2 = 1, 1
# the increment step (higher = faster)
STEP = 0.004

if x1 > x2:           # x2 must be the bigger one here
    x1, x2 = x2, x1
    y1, y2 = y2, y1

for i in range(int((x2-x1)/STEP) + 1):
    x = x1 + i*STEP
    y = (y1-y2)/(x1-x2) * (x - x1) + y1
    do_something(x, y)

【讨论】:

  • 非常感谢@MoaMoak 兄弟,它有效。你让我开心!
  • 如果坐标在同一轴上,这不起作用。例如.. 0,1 和 0, 4. 得到 ZeroDivisionError: 除以零
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多