gpt4 book ai didi

django - 在 geodjango 按纬度排序

转载 作者:行者123 更新时间:2023-12-04 07:34:34 25 4
gpt4 key购买 nike

我有以下模型:

class Stop(models.Model):
name = models.CharField(max_length=50)
point = models.PointField()
objects = models.GeoManager()

我想从北到南对我的停靠点进行排序。我该怎么做呢? Stop.objects.order_by('point')将它们从西到东排序。

谢谢。

这是我的完整模型:
from django.contrib.gis.db import models
from django.core.urlresolvers import reverse

class Stop(models.Model):
gtfs_stop_id = models.IntegerField(db_index=True, unique=True)
name = models.CharField(max_length=50)
point = models.PointField()
parkings = models.GeometryCollectionField(null=True, blank=True)
objects = models.GeoManager()

def get_absolute_url(self):
return reverse('core:stop', args=(self.id,))

def __str__(self):
return self.name

最佳答案

由于您的点场是几何而不是地理,因此您很幸运。

from django.db.models import F, Func
Stop.objects.annotate(lat=Func('point',function='ST_X')).order_by('lat')

我在这里使用 ST_X 而不是 ST_Y 因为 PostGIS 是最好的 geodjango 数据库,惯例是存储 lng,lat
如果您的点字段是 geography,则上述函数调用将不起作用,因为 ST_X和 ST_Y 仅适用于几何字段。 Geography 字段需要转换为 Geometry 才能使用这些函数。

关于django - 在 geodjango 按纬度排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37380265/

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