Django 的 GEOS API 中的几何交集不再有效



我使用Django的GEOS API已经有一段时间了,它非常有效。我在我的项目中升级了一些东西,我的一些代码决定了点是否在多边形内不再有效。我把它提炼成这个,这说明了问题所在。

我建立了这个模型:

class TestPoint(models.Model):
name = models.CharField(max_length=64)
pickup_location = models.PointField(srid=4326)

然后我运行:

>>> from django.contrib.gis.geos import Point, Polygon
>>> from mytest.models import TestPoint
>>> p1 = TestPoint(name="p1", pickup_location=Point(-118.4, 33.9))
>>> p2 = TestPoint(name="p2", pickup_location=Point(-118.45, 34))
>>> p3 = TestPoint(name="p3", pickup_location=Point(-118.3, 34.02))
>>> p4 = TestPoint(name="p4", pickup_location=Point(-118.46, 34.01))
>>> bbox = (-118.5, 34, -118, 34.5)
>>> poly = Polygon().from_bbox(bbox)
>>> poly.srid = 4326
>>> hits = TestPoints.objects.filter(pickup_location__within=poly)
>>> hits
<QuerySet []>

我希望hits包含3个点,但正如您所看到的,它是空的。

我想知道他们是否改变了from_bbox()中坐标的顺序,但文档显示它仍然是(xmin,ymin,xmax,ymax(。

怎么回事?

您没有将TestPoint保存到数据库中。您用保存这些

p1 = TestPoint.objects.create(name='p1', pickup_location=Point(-118.4, 33.9))

通过使用:

p1 =TestPoint(name="p1", pickup_location=Point(-118.4, 33.9))

您只需在Django/Python层创建一个TestPoint对象,但从未将其放入数据库中。

最新更新