Python Django'中的几何交点;s GEOS API不再工作
我已经使用Django的GEOS API有一段时间了,效果非常好。我升级了我的项目中的一些东西和一些代码,这些代码决定了点是否在多边形中不再起作用。我把它浓缩成这个,这说明了问题所在 我建立了这个模型:Python Django'中的几何交点;s GEOS API不再工作,python,django,geometry,geos,Python,Django,Geometry,Geos,我已经使用Django的GEOS API有一段时间了,效果非常好。我升级了我的项目中的一些东西和一些代码,这些代码决定了点是否在多边形中不再起作用。我把它浓缩成这个,这说明了问题所在 我建立了这个模型: class TestPoint(models.Model): name = models.CharField(max_length=64) pickup_location = models.PointField(srid=4326) 然后我跑: >>> fro
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 []>
来自django.contrib.gis.geos导入点的多边形
>>>从mytest.models导入测试点
>>>p1=测试点(name=“p1”,拾取位置=点(-118.4,33.9))
>>>p2=测试点(name=“p2”,拾取位置=点(-118.45,34))
>>>p3=测试点(name=“p3”,拾取位置=点(-118.3,34.02))
>>>p4=测试点(name=“p4”,拾取位置=点(-118.46,34.01))
>>>bbox=(-118.5,34,-118,34.5)
>>>多边形=多边形()。来自_bbox(bbox)
>>>poly.srid=4326
>>>hits=TestPoints.objects.filter(拾取位置内=多边形)
>>>击中
我希望点击次数
包含3个点,但正如您所看到的,它是空的
我想知道他们是否把中的坐标顺序从bbox()
改成了,但说仍然是(xmin,ymin,xmax,ymax)
发生了什么事?您没有将测试点保存到数据库中。您可以通过以下方式保存这些内容:
p1 = TestPoint.objects.create(name='p1', pickup_location=Point(-118.4, 33.9))
p1=TestPoint.objects.create(name='p1',picku位置=Point(-118.4,33.9))
通过使用:
p1 = TestPoint(name="p1", pickup_location=Point(-118.4, 33.9))
p1=TestPoint(name=“p1”,picku位置=Point(-118.4,33.9))
您只需在Django/Python层创建一个
TestPoint
对象,但从未将其放入数据库。您没有将TestPoint
保存到数据库中。您可以通过以下方式保存这些内容:
p1 = TestPoint.objects.create(name='p1', pickup_location=Point(-118.4, 33.9))
p1=TestPoint.objects.create(name='p1',picku位置=Point(-118.4,33.9))
通过使用:
p1 = TestPoint(name="p1", pickup_location=Point(-118.4, 33.9))
p1=TestPoint(name=“p1”,picku位置=Point(-118.4,33.9))
您只需在Django/Python层创建一个
TestPoint
对象,但从未将其放入数据库。您没有将TestPoint
保存到数据库中。该死,您是对的。这实际上是我的测试示例的失败。实际代码在数据库中有点,但仍然失败。我将尝试从实际代码中提取示例并更新问题。您没有将测试点保存到数据库中。该死,您是对的。这实际上是我的测试示例的失败。实际代码在数据库中有点,但仍然失败。我将尝试从实际代码中提取示例,并更新问题。