Eu tenho 150 milhões de pontos em uma tabela de pontos e gostaria de encontrar os poucos pontos fora de uma dada geometria de polígono. Eu sei que 99,9% dos pontos estão dentro da geometria do polígono. Estou interessado em encontrar os poucos pontos que estão fora do polígono.
Minha melhor consulta atual usando tabelas PostGIS indexadas leva cerca de 30 minutos para ser concluída. Existe uma maneira de otimizar a consulta a seguir sabendo que a maioria dos pontos está dentro do polígono (borda)?
SELECT COUNT(*)
FROM italy_points pt
JOIN borders poly
ON ST_WITHIN (pt.the_geom, poly.geom)
WHERE poly.iso3 = 'ITA';
O polígono é basicamente a fronteira administrativa da Itália. Vértices - 405.000. Peças - 510. O envelope é muito maior que o polígono (o polígono cobre 24% do envelope)
GROUP BY
da chave primária dos pontos. (PostgreSQL convenientemente permite fazer referência a quaisquer colunas na SELECT
cláusula que vêm de uma tabela onde a chave primária está incluída na GROUP BY
cláusula.)
ST_Intersects
, pois ST_Within
não corresponderia com segurança às condições de limite interno.