PointField如果我具有从Google Maps API进行地理编码的经度和纬度,则保存的语法是什么?
GeoDjango文档缺少此类信息(感觉像他们仅为专业人士写了足够的细节才能有效地使用它),而我所发现的只是一个没有被接受的答案:如何分配给Django PointField模型属性?
对于上下文,这是我想要做的:
class Point(models.Model):
geography = models.PointField(geography=True)
geometry= models.PointField(srid=3348) #Statistics Canada Lambert projection
Run Code Online (Sandbox Code Playgroud)
我的用户发出的大多数查询的类型都是“向我显示距离该点大约20公里的所有点,并从最远到最远对它们进行排序”。即使数据在加拿大各地都有点,用户对任何给定查询都只对小范围内的点感兴趣,因此geometryPointField可以满足99%的使用率。
如果需要以米为单位的距离测量(而不是简单地从最近到最远排序),则将使用geographyPointField。
小智 5
通过查看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')
Run Code Online (Sandbox Code Playgroud)
它表明任何可以转换为 GEOSGeomtery 的输入都可以。因此,您可以使用任何小部件(例如 TextField/HiddenField),但您返回的文本值应具有 WKT、HEX、WKB 或 GeoJSON 的语法。(https://docs.djangoproject.com/ja/1.9/ref /contrib/gis/geos/#creating-a-geometry)您链接到的示例(如何分配给 Django PointField 模型属性?)正在使用 WKT 格式。
| 归档时间: |
|
| 查看次数: |
1065 次 |
| 最近记录: |