Ho una tabella PostGIS con alcuni poligoni (memorizzati usando il tipo di dati geografici). Rappresentano regioni su una terra sferica.
Per ogni coppia di vertici scelti tra tutti i poligoni, voglio calcolare se quei due vertici sono "visibili" tra loro. (Esistono n * ( n -1) / 2 coppie di questo tipo, dove n è il numero totale di vertici univoci in tutti i poligoni nella tabella.) Per "visibile l'uno all'altro", intendo che il percorso del grande cerchio tra il due vertici non intersecano nessuno dei poligoni nella tabella.
Qual è il modo più veloce per fare quel calcolo, preferibilmente in PostgreSQL / PostGIS?
Ho qualcosa che funziona, ma è lento. Ho iterato ingenuamente su tutte le coppie e vedo se il LineString tra loro interseca eventuali poligoni. (Il tipo di dati geografici di PostGIS gestisce per me tutta la dura matematica sulla sfera.) Quindi mi chiedo se ci sia una struttura di dati intelligente o un algoritmo che potrebbe accelerare le cose.