具有顶部和底部坐标的GeoDjango边界框滤镜

时间:2014-06-19 05:28:27

标签: django geodjango

我正在使用Google地图创建一个GEO应用,我收到了2个坐标的边界框: 左上角(top_lat,top_long)和右下角(bot_lat,bot_long)

我有一个PointField模型。

from django.contrib.gis.db import models

class Shop(models.Model):
    name            = models.CharField(max_length=200)
    address         = models.CharField(max_length=200)

    location        = models.PointField()

创建一个边界框元组:

    bbox = (top_lat,top_long, bot_lat, bot_long)
    geom = Polygon.from_bbox(bbox)

我使用了边界框几何:

    shops = Shop.objects.filter(location__bbcontains=geom)

但是找不到任何坐标,虽然有一些坐标。 请帮我解决问题。感谢

2 个答案:

答案 0 :(得分:2)

你应该在"内使用"查找:

shops = Shop.objects.filter(location__within=geom)

答案 1 :(得分:-1)

您的过滤器不正确。

location__bbcontains=geom表示几何字段(位置,即点)边界框必须包含您创建的边界框(geom,即多边形)。每次因为你的多边形比单个点的bbox更大,这几乎都是假的。

您希望:location__inside=geom返回geom内的位置。