Ho una serie di poligoni che rappresentano grandi aree, dicono i quartieri della città. Voglio identificare le grandi aree sovrapposte tra loro.
Ma c'è un problema: a volte questi poligoni si sovrappongono lungo i loro perimetri (perché sono stati disegnati con poca precisione). Questo genererà sovrapposizioni lunghe e strette che non mi interessano.
Ma altre volte ci saranno grandi sovrapposizioni di robusti poligoni, il che significa grandi aree in cui il poligono di un quartiere si sovrappone a un altro. Voglio selezionare solo questi.
Vedi l'immagine sotto delle sole sovrapposizioni. Immagina di voler selezionare solo il poligono blu nell'angolo in basso a sinistra.
Potrei guardare le aree, ma a volte quelle strette sono così lunghe che finiscono per avere aree grandi come il poligono blu. Ho provato a fare un rapporto area / perimetro, ma questo ha anche prodotto risultati contrastanti.
Ho anche provato a usarlo ST_MinimumClearance
, ma a volte le grandi aree avranno una parte stretta attaccata ad essa, o due vertici molto vicini.
Qualche idea di altri approcci?
Alla fine, ciò che ha funzionato meglio per me è stato usare un buffer negativo, come suggerito da @Cyril e @FGreg di seguito.
Ho usato qualcosa del tipo:
ST_Area(ST_Buffer(geom, -10)) as neg_buffer_area
Nel mio caso, le unità erano metri, quindi un buffer negativo di 10 m.
Per i poligoni stretti, quest'area ha restituito zero (inoltre, la geometria sarebbe vuota). Quindi ho usato questa colonna per filtrare i poligoni stretti.