我正在使用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)
但是找不到任何坐标,虽然有一些坐标。 请帮我解决问题。感谢
答案 0 :(得分:2)
你应该在"内使用"查找:
shops = Shop.objects.filter(location__within=geom)
答案 1 :(得分:-1)
您的过滤器不正确。
location__bbcontains=geom
表示几何字段(位置,即点)边界框必须包含您创建的边界框(geom,即多边形)。每次因为你的多边形比单个点的bbox更大,这几乎都是假的。
您希望:location__inside=geom
返回geom内的位置。