Skip to main content
 首页 » 编程设计

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

2024年12月31日20oomusou

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

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

我失败的尝试:

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

  • Copius 在 SO 和 Geo Info Exchange 上进行谷歌搜索。我想我找不到术语?


  • python 3.6
  • Django 1.11

请您参考如下方法:

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

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)