gpt4 book ai didi

buffer - 如何仅在多边形外部进行缓冲而不缓冲共享边?

转载 作者:行者123 更新时间:2023-12-04 08:43:05 26 4
gpt4 key购买 nike

我想要实现的是缓冲一组连接的多边形,同时不缓冲共享边。

经过一些搜索,ArcGIS 的缓冲区向导 + 溶解正是这样做的,但不幸的是没有 Arcgis 许可,我正在寻找使用 QGIS 或其他平台(如 PostGIS)的解决方案。

下图显示了使用 ArcGIS's buffer wizards + dissolve 的结果

期望的结果:

Desired Result

主要的挑战是沿着与未缓冲的多边形等距的线将两个相邻缓冲区的重叠切割成两个不相交的多边形。

添加 JFK 的修改图像以通过示例详细说明我想要的结果,黑色阴影多边形是原始多边形,多边形 A 和 B 是单独的缓冲多边形,具有三个缓冲边和一个非缓冲边( A、B接触的那一侧) enter image description here

最佳答案

文档说向导首先溶解多边形,然后在输出上应用缓冲区。

您可以在 PostGIS 中执行相同的操作:st_collect 将几何图形聚合在一起,如果几何图形不相交,则创建多多边形。 st_buffer 进行缓冲(以 CRS 为单位),st_dump 会将单个多部分缓冲区分解为单独的多边形。

WITH src(geom) AS (values 
('POLYGON((0 0,0 10,10 10, 10 0, 0 0))'::geometry),
('POLYGON((0 0,0 10,-10 10, -10 0, 0 0))'::geometry),
('POLYGON((20 20,20 30,30 30, 30 20, 20 20))'::geometry))
SELECT st_asText(
(st_dump(
st_buffer(
st_collect(geom),
1)
)).geom)
FROM src;

---------
POLYGON((20 19,19.8049096779839 19.0192147195968,19.6173165676349 19.0761204674887,19.4444297669804 19.1685303876975,19.2928932188135 19.2928932188135,19.1685303876975 19.4444297669804,19.0761204674887 19.6173165676349,19.0192147195968 19.8049096779839,19 20,19 30,19.0192147195968 30.1950903220161,19.0761204674887 30.3826834323651,19.1685303876975 30.5555702330196,19.2928932188135 30.7071067811865,19.4444297669804 30.8314696123025,19.6173165676349 30.9238795325113,19.8049096779839 30.9807852804032,20 31,30 31,30.1950903220161 30.9807852804032,30.3826834323651 30.9238795325113,30.5555702330196 30.8314696123025,30.7071067811865 30.7071067811865,30.8314696123025 30.5555702330196,30.9238795325113 30.3826834323651,30.9807852804032 30.1950903220161,31 30,31 20,30.9807852804032 19.8049096779839,30.9238795325113 19.6173165676349,30.8314696123025 19.4444297669804,30.7071067811865 19.2928932188135,30.5555702330196 19.1685303876975,30.3826834323651 19.0761204674887,30.1950903220161 19.0192147195968,30 19,20 19))
POLYGON((0 -1,-10 -1,-10.1950903220161 -0.980785280403231,-10.3826834323651 -0.923879532511287,-10.5555702330196 -0.831469612302547,-10.7071067811865 -0.70710678118655,-10.8314696123025 -0.555570233019605,-10.9238795325113 -0.382683432365094,-10.9807852804032 -0.195090322016134,-11 0,-11 10,-10.9807852804032 10.1950903220161,-10.9238795325113 10.3826834323651,-10.8314696123025 10.5555702330196,-10.7071067811865 10.7071067811865,-10.5555702330196 10.8314696123025,-10.3826834323651 10.9238795325113,-10.1950903220161 10.9807852804032,-10 11,0 11,10 11,10.1950903220161 10.9807852804032,10.3826834323651 10.9238795325113,10.5555702330196 10.8314696123025,10.7071067811865 10.7071067811865,10.8314696123025 10.5555702330196,10.9238795325113 10.3826834323651,10.9807852804032 10.1950903220161,11 10,11 0,10.9807852804032 -0.195090322016128,10.9238795325113 -0.38268343236509,10.8314696123025 -0.555570233019602,10.7071067811865 -0.707106781186547,10.5555702330196 -0.831469612302545,10.3826834323651 -0.923879532511287,10.1950903220161 -0.98078528040323,10 -1,0 -1))
(2 rows)

enter image description here

关于buffer - 如何仅在多边形外部进行缓冲而不缓冲共享边?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64467533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com