【发布时间】:2018-01-18 23:43:02
【问题描述】:
序幕:
这是SO中经常出现的一个问题:
- 3d distance calculations with GeoDjango
- Calculating distance between two points using latitude longitude and altitude (elevation)
- Distance between two 3D point in geodjango (postgis)
我想编写一个关于 SO 文档的示例,但 geodjango 章节从未起飞,并且由于文档于 2017 年 8 月 8 日关闭,我将遵循 this widely upvoted and discussed meta answer 的建议并将我的示例编写为自我- 已回答的帖子。
当然,我也很乐意看到任何不同的方法!
问题:
假设模型:
class MyModel(models.Model):
name = models.CharField()
coordinates = models.PointField()
我将coordinate 变量中的点存储为lan, lng, alt 点:
MyModel.objects.create(
name='point_name',
coordinates='SRID=3857;POINT Z (100.00 10.00 150)')
我正在尝试计算两个这样的点之间的 3D 距离:
p1 = MyModel.objects.get(name='point_1').coordinates
p2 = MyModel.objects.get(name='point_2').coordinates
d = Distance(m=p1.distance(p2))
现在d=X 以米为单位。
如果我只更改相关点之一的高度:
例如:
p1.coordinates = 'SRID=3857;POINT Z (100.00 10.00 200)'
从之前的150,计算:
d = Distance(m=p1.distance(p2))
再次返回d=X,就像忽略高度一样。
如何计算我的点之间的 3D 距离?
【问题讨论】:
标签: python django gis postgis geodjango