Python GeoDjango位于东北、西南接线盒内

Python GeoDjango位于东北、西南接线盒内,python,postgis,geodjango,Python,Postgis,Geodjango,我正在使用Google Maps创建一个geo应用程序,收到的边界框为2个坐标: 东北部 西南部 我有一个带点域的模型 from django.contrib.gis.db import models class Place(models.Model): name = models.CharField(max_length=200) address = models.CharField(max_length=200) loca

我正在使用Google Maps创建一个geo应用程序,收到的边界框为2个坐标:

  • 东北部
  • 西南部
我有一个带点域的模型

from django.contrib.gis.db import models

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

    location        = models.PointField()
如何执行查询以获取边界框中的所有位置?

假设“2个坐标”是x,y元组,例如:

ne = (50.0, -90)
sw = (45.5, -95)
可以提取坐标并创建边界框元组:

xmin = sw[0]
ymin = ne[1]
xmax = sw[1]
ymax = ne[0]
bbox = (xmin, ymin, xmax, ymax)
使用边界框几何图形,使用以下工具查询位置记录:


@泰勒的答案在很多方面都是错误的。正确的代码是:

ne = (latitude, longitude)
sw = (latitude, longitude)

xmin=sw[1]
ymin=sw[0]
xmax=ne[1]
ymax=ne[0]
bbox = (xmin, ymin, xmax, ymax)

from django.contrib.gis.geos import Polygon
geom = Polygon.from_bbox(bbox)
queryset = Place.objects.filter(poly__contained=geom)

谢谢,这很有效,但是xmin和ymin不应该来自同一个元组吗?(与xmax/ymax相同)不应该是?同意博尔赫斯的观点。“objects.filter(poly_uuucontained)”是查找边界框中具有poly字段的所有对象的正确查找。否则这个答案让我得到了90%的答案!它不是包含了位置吗?如果是地理类型的点,您必须使用“位置覆盖者”正确。你说得对。伙计,你能看看我的问题吗?这是关于多边形边界与日期更改线(也称为反子午线)相交的情况-我知道,对吗?泰勒的回答让我很困惑,因为我把sw[0]和其他分数都搞砸了!
ne = (latitude, longitude)
sw = (latitude, longitude)

xmin=sw[1]
ymin=sw[0]
xmax=ne[1]
ymax=ne[0]
bbox = (xmin, ymin, xmax, ymax)

from django.contrib.gis.geos import Polygon
geom = Polygon.from_bbox(bbox)
queryset = Place.objects.filter(poly__contained=geom)