Tengo una tabla PostGIS con algunos polígonos (almacenados utilizando el tipo de datos geográficos). Representan regiones en una tierra esférica.
Para cada par de vértices elegidos entre todos los polígonos, quiero calcular si esos dos vértices son "visibles" entre sí. (Hay n* ( n -1)/2 tales pares, donde n es el número total de vértices únicos en todos los polígonos de la tabla). Por "visibles entre sí", quiero decir que la trayectoria del círculo máximo entre los dos vértices no se cruza con ninguno de los polígonos de la tabla.
¿Cuál es la forma más rápida de hacer ese cálculo, preferiblemente en PostgreSQL/PostGIS?
Tengo algo que funciona, pero es lento. Simplemente itero ingenuamente sobre todos los pares y veo si la LineString entre ellos interseca algún polígono. (El tipo de datos de geografía de PostGIS maneja toda la matemática difícil en la esfera para mí). Así que me pregunto si hay una estructura de datos inteligente o algoritmo que podría acelerar las cosas.