基于另一个几何体使用 geodjango 切片几何体
Slicing geometry with geodjango based on another geometry
我设置了 PostgreSQL 数据库,并使用 Geodjango 与保存在该数据库中的几何图形进行交互。我的用例如下:
- 在数据库中,我有一个复杂的大型多边形,包含该国的所有公园。 这包含在单个几何字段中。
- 我还有另一条包含我所在地区边界的记录。
- 我想做的是以某种方式 truncate/slice 多边形,以便它删除不在边界内的那些。
示例代码:
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)
我设置了 PostgreSQL 数据库,并使用 Geodjango 与保存在该数据库中的几何图形进行交互。我的用例如下:
- 在数据库中,我有一个复杂的大型多边形,包含该国的所有公园。 这包含在单个几何字段中。
- 我还有另一条包含我所在地区边界的记录。
- 我想做的是以某种方式 truncate/slice 多边形,以便它删除不在边界内的那些。
示例代码:
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)