gpt4 book ai didi

python - GeoDjango 想要在 [-180 -90, 180 90] 范围内协调?

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:57 24 4
gpt4 key购买 nike

这是我的模型:

import datetime
from django.contrib.gis.db import models

class UserLocation(models.Model):
user = models.ForeignKey('auth.User')
coords = models.PointField()
date_created = models.DateTimeField(default=datetime.datetime.now)
objects = models.GeoManager()

@classmethod
def get_latest_location(cls, user):
return cls.objects.filter(user=user).latest()

class Meta:
get_latest_by = 'date_created'

当我尝试像这样查询它时:

coords = Point(x=34.4208305, y=-119.6981901) # in california
UserLocation.objects.distance(coords)

我收到此错误:

DatabaseError: Coordinate values are out of range [-180 -90, 180 90] for GEOGRAPHY type
CONTEXT: SQL function "st_distance_sphere" during inlining

为什么需要它们在 [-180 -90, 180 90] 范围内?这对我来说没有任何意义......

最佳答案

考虑一个球体(假设地球像球一样圆),使用球坐标(r、phi、tau),给定的范围足以识别球体上的每个点。有关坐标系的详细说明,请参阅维基百科 http://en.wikipedia.org/wiki/Spherical_coordinate_system .

如果你有更大的角度,你只需将它们调整到间隔,例如

if (phi > 180):
phi -= 360
elseif (phi < -180):
phi += 360

tau 蛋白也类似。

关于python - GeoDjango 想要在 [-180 -90, 180 90] 范围内协调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20338775/

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