GeoDjango:在给定方向上将坐标移动固定距离(例如,将点向东移动1英里)

时间:2018-08-01 23:28:40

标签: python django geodjango

给定一个点(django.contrib.gis.geos.Point)我如何找到距该Point对象1英里以东的另一个点?

(A) ---[ 1 mile ]---> (B)

我的尝试失败:

  • 我已经考虑过尝试对 1英里东点进行硬编码,但由于 到地球的曲率。每度变化的英里数。

  • 在SO和地理信息交换上搜索谷歌。我以为找不到术语?


  • Python 3.6
  • Django 1.11

1 个答案:

答案 0 :(得分:1)

您可以使用pyproj的Geod class完成此操作。

from pyproj import Geod
geoid = Geod(ellps='WGS84')

def add_distance(lat, lng, az, dist):
    lng_new, lat_new, return_az = geoid.fwd(lon, lat, az, dist)
    return lat_new, lng_new
  • lng:起始经度
  • lat:起始纬度
  • az:方位角,运动方向
  • dist:以米为单位的距离

因此,对于您的特定问题,您可以执行以下操作:

from django.contrib.gis.geos import Point

def move_point_mile_east(point):
    dist = 1609.34
    lat, lng = add_distance(point.y, point.x, 90, dist)
    return Point(lng, lat)