首页 > 解决方案 > GeoDjango:将坐标沿给定方向移动固定距离(例如,将点向东移动一英里)

问题描述

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

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

我失败的尝试:


标签: pythondjangogeodjango

解决方案


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

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)

推荐阅读