Tengo 150 millones de puntos en una tabla de puntos y me gustaría encontrar los pocos puntos que se encuentran fuera de una geometría de polígono dada. Sé que el 99.9% de los puntos están dentro de la geometría del polígono. Estoy interesado en encontrar los pocos puntos que se encuentran fuera del polígono.
Mi mejor consulta actual usando tablas PostGIS indexadas tarda unos 30 minutos en completarse. ¿Hay alguna manera de optimizar la siguiente consulta sabiendo que la mayoría de los puntos están dentro del polígono (borde)?
SELECT COUNT(*)
FROM italy_points pt
JOIN borders poly
ON ST_WITHIN (pt.the_geom, poly.geom)
WHERE poly.iso3 = 'ITA';
El polígono es básicamente la frontera administrativa de Italia. Vértices - 405,000. Partes - 510. El sobre es mucho más grande que el polígono (el polígono cubre el 24% del sobre)
GROUP BY
la clave principal de los puntos. (PostgreSQL convenientemente le permite hacer referencia a cualquier columna de la SELECT
cláusula que provenga de una tabla donde se incluye la clave primaria en la GROUP BY
cláusula).
ST_Intersects
, ya ST_Within
que no coincidiría de manera confiable con las condiciones de contorno internas.