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

标签 python django geodjango

给定一个点 (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)

关于python - GeoDjango:在给定方向上将坐标移动固定距离(例如,将一个点向东移动一英里),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51643573/

相关文章:

python - 在 Python (Matplotlib) 中重用模块引用

python - 检索数据时显示 "Unable to get repr for <class ' django.db.models.query.QuerySet'>"

python - 如何在Django中上传多个文件

Django 和架构 : how to share a "referencial" database between projects?

python - 如何编写代码以避免 pep8 W502 和 E504 问题

python - Sqlite3不从数据库读取

javascript - Python 和 Angular 在变量值上存在分歧

python - django save(commit=False) 与 full_clean

python - 在geodjango中按距离排序效率如何(整张表)

django - 错误 : Please install the PostgreSQL server development packages and re-run configure