gpt4 book ai didi

GeoDjango - 保存 PointField 的语法?

转载 作者:行者123 更新时间:2023-12-04 19:49:11 26 4
gpt4 key购买 nike

保存 PointField 的语法是什么? ,如果我有从 Google Maps API 进行地理编码的经度和纬度?

GeoDjango 文档缺乏这种信息(感觉他们只写了足够的细节供专业人士有效地使用它),我发现的只是这个没有接受的答案:How to assign to a Django PointField model attribute?

对于上下文,这就是我想要做的:

class Point(models.Model):
geography = models.PointField(geography=True)
geometry= models.PointField(srid=3348) #Statistics Canada Lambert projection

我的用户的大多数查询都属于“向我显示距该点大约 20 公里范围内的所有点,并将它们从最近到最远排序”的类型。即使数据在加拿大各地都有点,但用户只对具有任何给定查询的小范围内的点感兴趣,因此 geometry PointField 足以满足 99% 的使用。

如果需要以米为单位的距离测量(而不是简单地从最近到最远排序),则 geography将使用 PointField。

最佳答案

从查看 https://github.com/django/django/blob/master/django/contrib/gis/forms/fields.py 中的源代码开始:

if not isinstance(value, GEOSGeometry):
try:
value = GEOSGeometry(value)
except (GEOSException, ValueError, TypeError):
raise forms.ValidationError(self.error_messages['invalid_geom'], code='invalid_geom')

它表明任何可以转换为 GEOSGeomtery 的输入都可以。因此,您可以使用任何小部件(例如 TextField/HiddenField),但您返回的文本值应具有 WKT、HEX、WKB 或 GeoJSON 的语法。( https://docs.djangoproject.com/ja/1.9/ref/contrib/gis/geos/#creating-a-geometry )
您链接到的示例 ( How to assign to a Django PointField model attribute? ) 使用的是 WKT 格式。

关于GeoDjango - 保存 PointField 的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34955739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com