У меня есть Region
модель GeoDjango (производная от django.contrib.gis.db.models.Model
), с полем geom
, которое является django.contrib.gis.db.models.MultiPolygonField
.
Я хотел бы вычислить пересечение этой модели(представляющий набор полигональных областей, хранящихся в PostGIS) с многоугольным «запросом» GeoJSON:
from django.contrib.gis.geos import GEOSGeometry
query = GEOSGeometry(
'{"type":"Polygon","coordinates":[[[-80.983786,43.929011],[-80.511513,43.778458],[-80.291852,44.079184],[-80.775108,44.232127],[-80.983786,43.929011]]]}'
)
Я пробовал много вещей:
results = Region.objects.all().intersection(query)
или
from django.contrib.gis.db.models.functions import Intersection
results = Intersection(Region.objects.all(), query)
но, похоже, у меня нет правильного подхода.
Обратите внимание, что я не хочу просто вычислять подмножество областей, которые пересекаются с запросом, а скорее их точное пересечение (другими словами, результатнабор полигонов должен иметь ту же форму, что и запрос).