Tengo un conjunto de polígonos que representan grandes áreas, digamos barrios de la ciudad. Quiero identificar las grandes áreas que se superponen entre ellos.
Pero hay un problema: a veces estos polígonos se superponen a lo largo de sus perímetros (porque fueron dibujados con poca precisión). Esto generará solapamientos largos y estrechos que no me importan.
Pero otras veces habrá grandes superposiciones de polígonos robustos, es decir, grandes áreas donde el polígono de un barrio se superpone a otro. Quiero seleccionar sólo estos.
Ver la imagen de abajo de sólo las superposiciones. Imagina que quiero seleccionar sólo el polígono azul de la esquina inferior derecha.
Podría mirar las áreas, pero a veces los estrechos son tan largos que acaban teniendo áreas tan grandes como el polígono azul. He tratado de hacer una relación de área / perímetro, pero eso también ha dado resultados mixtos.
Incluso he intentado usar ST_MinimumClearance
Pero a veces las áreas grandes tendrán una parte estrecha unida a ella, o dos vértices muy cercanos.
¿Alguna idea de otros enfoques?
Al final lo que mejor me funcionó fue usar un buffer negativo, como sugieren @Cyril y @FGreg más abajo.
Usé algo como:
ST_Area(ST_Buffer(geom, -10)) as neg_buffer_area
En mi caso, las unidades eran metros, por lo que 10 m de búfer negativo.
Para los polígonos estrechos, esta área devolvía cero (además, la geometría estaría vacía). Entonces utilicé esta columna para filtrar los polígonos estrechos.
4 votos
Ciertamente, la relación área/perímetro podría utilizarse para ello.
0 votos
Es difícil decir dónde están los polígonos distintos de la imagen, pero haciendo algo como esto gis.stackexchange.com/a/265233/64838 ¿podría funcionar? Calcular el cuadro delimitador mínimo girado y descartar los que tengan una anchura o altura pequeñas.
0 votos
También puedes probar a utilizar un tampón negativo como se describe aquí: ¿Cómo puedo identificar polígonos muy finos en mi archivo shape?