基于另一个几何体使用 geodjango 切片几何体

Slicing geometry with geodjango based on another geometry

我设置了 PostgreSQL 数据库,并使用 Geodjango 与保存在该数据库中的几何图形进行交互。我的用例如下:

示例代码:

region = Shapefile.objects.get(pk=1)
region_boundaries = region.geometry # this contains the boundaries for the region

all_parks_in_country = Shapefile.objects.get(pk=2)
parks = all_parks_in_country.geometry # and this one now has all the national parks

sliced_geometry = ...
# .... And here is where I am stuck! 

我在下面提供视觉效果。请注意,我正在尝试在 Python 中获取视图中的切片几何图形——一旦我在那里,我将根据需要使用它(在 HTML 文件或任何需要的地方显示它) .

第一张地图显示了整个国家和绿色国家公园。

第二张地图以紫色轮廓显示了我所在地区的边界。

第三张地图以红色显示那些(部分!)国家公园的多边形,理想情况下应该是 'cut out' 的国家几何形状。

由于您已经隔离了几何体,因此您可以对它们使用 GEOS API intersection 方法。

方法:

Returns a GEOSGeometry representing the points shared by this geometry and "other".

因此您可以按如下方式获取“切片”geom:

sliced_geometry = parks.intersection(region_boundaries)