st_buffer的应用

时间:2025-04-08 18:26:50

  在使用st_intersection()计算两个多边形相交的部分时,遇见了单个多边形自相交而无法计算的情况。因为在计算两个相交多边形的时候先通过st_buffer()做了多边形膨胀。 百度一番之后,看一些文章提到要用 st_buffer解决这个问题:但是单纯用st_buffer(geom, 0.001)处理之后发现, buffer范围太大导致相交地块儿差不多都是圆形.....当时感觉很纠结,觉得用st_buffer是不是计算不了,后面有空看了下文档,发现st_buffer() 在应用时依赖数据库所使用的空间引用系统:

Units of radius are measured in units of the spatial reference system.

  经过一阵子的研究,确定了,多边形自相交的话可以通过st_makevalid(geometry)函数解决这个问题。 当然,如果需要批量解决子乡郊问题,一个个处理会很费时, 可以使用st_isvalid(geometry) = 'f' 查出存在问题的 多边形数据进行批量更新。