首页 > 解决方案 > 来自 ST_Buffer 的意外几何

问题描述

我正在尝试缓冲一些几何图形,然后将相同的缓冲区作为负数运行。但是在响应的几何图形中出现了意想不到的伪影。

运行正缓冲区(原始几何图形为橙色):

缓冲

运行正负缓冲区(原始geom为橙色):

负缓冲

我可以通过运行第一个缓冲区来生成稍微更好的几何图形,side=left join-mitre但它仍然不完美,因此第二个缓冲区的几何图形被弄乱了。

SELECT st_buffer(st_geomfromtext(‘MULTIPOLYGON(((-99.400052685 43.795919295,-99.400064934 43.795917471,-99.400068168 43.795917099,-99.400072016 43.795917004,-99.400082687 43.795916553,-99.400087109 43.795916442,-99.400091512 43.795916534,-99.400102708 43.795917259,-99.400106058 43.795917354,-99.400109425 43.795917222,-99.400122303 43.795917659,-99.400125003 43.795917529,-99.40012833 43.795917182,-99.400140112 43.79591678,-99.400143939 43.795916284,-99.400151102 43.795914317,-99.400154258 43.795913273,-99.400162849 43.79591142,-99.400171678 43.795912113,-99.400173213 43.795911934,-99.400181806 43.795913203,-99.400190937 43.795912274,-99.400191842 43.795912096,-99.400200734 43.795910966,-99.400206629 43.795909874,-99.400219126 43.79590593,-99.400219643 43.795905808,-99.400219939 43.795905767,-99.400236211 43.795907224,-99.400238595 43.795907054,-99.40023996 43.795906474,-99.400241563 43.795905477,-99.400248384 43.795898859,-99.400257453 43.795894191,-99.400260802 43.795894113,-99.400270951 43.795895604,-99.400276405 43.795895518,-99.400280172 43.795894353,-99.400293104 43.795891574,-99.400294617 43.795891058,-99.40029532 43.79589091,-99.40029628 43.795890866,-99.40031001 43.795888446,-99.400314246 43.79588831,-99.400318686 43.795888268,-99.400328433 43.795888006,-99.400333187 43.795887963,-99.400340961 43.795885765,-99.400343233 43.795884967,-99.400352098 43.795883099,-99.400358531 43.795882286,-99.400366054 43.795881201,-99.400371025 43.79588054,-99.40037636 43.79588142,-99.400383229 43.795882428,-99.400389989 43.79588361,-99.400398278 43.795883486,-99.400400626 43.795883492,-99.400408932 43.795883369,-99.400416942 43.795883221,-99.400420381 43.795882834,-99.400427871 43.795882673,-99.400436963 43.795883927,-99.400437741 43.795883925,-99.400446837 43.795886037,-99.400450791 43.795888167,-99.40045281 43.795891014,-99.400456258 43.795897769,-99.400456352 43.79589789,-99.400458802 43.795904716,-99.400461192 43.795908137,-99.400465993 43.795917742,-99.4004662 43.795918263,-99.400466238 43.795918411,-99.40046624 43.795918586,-99.400469054 43.795929966,-99.400469142 43.795932123,-99.400469118 43.795934307,-99.400469016 43.795943781,-99.400468994 43.795945845,-99.400472371 43.795950296,-99.400474576 43.795953504,-99.400480276 43.795959528,-99.400482491 43.795961504,-99.400485252 43.79596483,-99.400490223 43.795969636,-99.400492709 43.795973206,-99.400495874 43.795979292,-99.400496256 43.795981086,-99.40049846 43.795986907,-99.40050068 43.795989566,-99.400502885 43.79599244,-99.400052685 43.795919295)))’), .0002, ‘join=mitre mitre_limit=5.0’)

标签: gispostgis

解决方案


只需添加一些 0 并更改 st_buffer 的参数

这是您可以使用的示例 SQL 查询

> SELECT  st_buffer( st_geomfromtext('MULTIPOLYGON(((-99.400052685
> 43.795919295,-99.400064934 43.795917471,-99.400068168 43.795917099,-99.400072016 43.795917004,-99.400082687 43.795916553,-99.400087109 43.795916442,-99.400091512 43.795916534,-99.400102708 43.795917259,-99.400106058 43.795917354,-99.400109425 43.795917222,-99.400122303 43.795917659,-99.400125003 43.795917529,-99.40012833 43.795917182,-99.400140112 43.79591678,-99.400143939 43.795916284,-99.400151102 43.795914317,-99.400154258 43.795913273,-99.400162849 43.79591142,-99.400171678 43.795912113,-99.400173213 43.795911934,-99.400181806 43.795913203,-99.400190937 43.795912274,-99.400191842 43.795912096,-99.400200734 43.795910966,-99.400206629 43.795909874,-99.400219126 43.79590593,-99.400219643 43.795905808,-99.400219939 43.795905767,-99.400236211 43.795907224,-99.400238595 43.795907054,-99.40023996 43.795906474,-99.400241563 43.795905477,-99.400248384 43.795898859,-99.400257453 43.795894191,-99.400260802 43.795894113,-99.400270951 43.795895604,-99.400276405 43.795895518,-99.400280172 43.795894353,-99.400293104 43.795891574,-99.400294617 43.795891058,-99.40029532 43.79589091,-99.40029628 43.795890866,-99.40031001 43.795888446,-99.400314246 43.79588831,-99.400318686 43.795888268,-99.400328433 43.795888006,-99.400333187 43.795887963,-99.400340961 43.795885765,-99.400343233 43.795884967,-99.400352098 43.795883099,-99.400358531 43.795882286,-99.400366054 43.795881201,-99.400371025 43.79588054,-99.40037636 43.79588142,-99.400383229 43.795882428,-99.400389989 43.79588361,-99.400398278 43.795883486,-99.400400626 43.795883492,-99.400408932 43.795883369,-99.400416942 43.795883221,-99.400420381 43.795882834,-99.400427871 43.795882673,-99.400436963 43.795883927,-99.400437741 43.795883925,-99.400446837 43.795886037,-99.400450791 43.795888167,-99.40045281 43.795891014,-99.400456258 43.795897769,-99.400456352 43.79589789,-99.400458802 43.795904716,-99.400461192 43.795908137,-99.400465993 43.795917742,-99.4004662 43.795918263,-99.400466238 43.795918411,-99.40046624 43.795918586,-99.400469054 43.795929966,-99.400469142 43.795932123,-99.400469118 43.795934307,-99.400469016 43.795943781,-99.400468994 43.795945845,-99.400472371 43.795950296,-99.400474576 43.795953504,-99.400480276 43.795959528,-99.400482491 43.795961504,-99.400485252 43.79596483,-99.400490223 43.795969636,-99.400492709 43.795973206,-99.400495874 43.795979292,-99.400496256 43.795981086,-99.40049846 43.795986907,-99.40050068 43.795989566,-99.400502885 43.79599244,-99.400052685 43.795919295)))'), 
> 0.00000001,'join=mitre' ) union all  SELECT  st_geomfromtext('MULTIPOLYGON(((-99.400052685
> 43.795919295,-99.400064934 43.795917471,-99.400068168 43.795917099,-99.400072016 43.795917004,-99.400082687 43.795916553,-99.400087109 43.795916442,-99.400091512 43.795916534,-99.400102708 43.795917259,-99.400106058 43.795917354,-99.400109425 43.795917222,-99.400122303 43.795917659,-99.400125003 43.795917529,-99.40012833 43.795917182,-99.400140112 43.79591678,-99.400143939 43.795916284,-99.400151102 43.795914317,-99.400154258 43.795913273,-99.400162849 43.79591142,-99.400171678 43.795912113,-99.400173213 43.795911934,-99.400181806 43.795913203,-99.400190937 43.795912274,-99.400191842 43.795912096,-99.400200734 43.795910966,-99.400206629 43.795909874,-99.400219126 43.79590593,-99.400219643 43.795905808,-99.400219939 43.795905767,-99.400236211 43.795907224,-99.400238595 43.795907054,-99.40023996 43.795906474,-99.400241563 43.795905477,-99.400248384 43.795898859,-99.400257453 43.795894191,-99.400260802 43.795894113,-99.400270951 43.795895604,-99.400276405 43.795895518,-99.400280172 43.795894353,-99.400293104 43.795891574,-99.400294617 43.795891058,-99.40029532 43.79589091,-99.40029628 43.795890866,-99.40031001 43.795888446,-99.400314246 43.79588831,-99.400318686 43.795888268,-99.400328433 43.795888006,-99.400333187 43.795887963,-99.400340961 43.795885765,-99.400343233 43.795884967,-99.400352098 43.795883099,-99.400358531 43.795882286,-99.400366054 43.795881201,-99.400371025 43.79588054,-99.40037636 43.79588142,-99.400383229 43.795882428,-99.400389989 43.79588361,-99.400398278 43.795883486,-99.400400626 43.795883492,-99.400408932 43.795883369,-99.400416942 43.795883221,-99.400420381 43.795882834,-99.400427871 43.795882673,-99.400436963 43.795883927,-99.400437741 43.795883925,-99.400446837 43.795886037,-99.400450791 43.795888167,-99.40045281 43.795891014,-99.400456258 43.795897769,-99.400456352 43.79589789,-99.400458802 43.795904716,-99.400461192 43.795908137,-99.400465993 43.795917742,-99.4004662 43.795918263,-99.400466238 43.795918411,-99.40046624 43.795918586,-99.400469054 43.795929966,-99.400469142 43.795932123,-99.400469118 43.795934307,-99.400469016 43.795943781,-99.400468994 43.795945845,-99.400472371 43.795950296,-99.400474576 43.795953504,-99.400480276 43.795959528,-99.400482491 43.795961504,-99.400485252 43.79596483,-99.400490223 43.795969636,-99.400492709 43.795973206,-99.400495874 43.795979292,-99.400496256 43.795981086,-99.40049846 43.795986907,-99.40050068 43.795989566,-99.400502885 43.79599244,-99.400052685 43.795919295)))')

比较缓冲区


推荐阅读