用Django识别哪个多边形包含一个点?

Pau*_*oon 3 python django polygon geodjango intersect

我需要快速识别 Django 1.9 中一组点属于哪些多边形。

第一个选项是循环遍历所有多边形并检查它们包含哪些点:

for countrypolygon in countrypolygons:
    placesinthecountry = Place.objects.filter(lnglat__intersects=countrypolygon.geom)
Run Code Online (Sandbox Code Playgroud)

这需要很多时间,因为我需要循环遍历很多多边形。

是否可以做相反的事情,即循环遍历每个点并立即获取包含该点的多边形?

Joh*_*fis 6

是的,您可以使用contains

for point in my_points:
    polygons = MyModel.objects.filter(geom__contains=point.geom)  
Run Code Online (Sandbox Code Playgroud)