使用GeoDjango检索所有最近的点

时间:2015-03-26 19:17:00

标签: django postgresql postgis geodjango

我必须在我的Django项目中实现一个新功能:我必须检索距离最近的所有对象(纬度,经度),距离= 5km

所以,我使用Postgres + PostGIS并整合了GeoDjango。

在我的模特中,我有类似的东西:

class CarLocation(models.Model):

    carInfo = models.OneToOneField(CarInfo, related_name="carLocation")
    # Car location info
    geom = models.PointField(srid=4326, spatial_index=True)
    objects = models.GeoManager()

此时我可以进行如下查询:

pnt = fromstr('POINT(-96.876369 29.905320)', srid=4326)
qs = CarLocation.objects.filter(point__distance_lte=(pnt, D(km=5)))

我对此有一些疑问......

  • 这是最好的方法吗?

  • CarLocation模型与CarInfo表分开是一个很好的解决方案吗?在我的回复中,我还必须返回包含在CarInfo

  • 中的一些信息
  • 在我的模型中使用spatial_index=True是一个很好的解决方案吗?

  • 如果我有很多积分(例如500-600k)这还不错吗?在这种情况下,可以对结果进行分页(通常在Django中)?

0 个答案:

没有答案