Eu tenho alguns milhares de polígonos no SpatiaLite. Estou tentando fazer uma consulta "toques":
select map1.* from map1,map2
where touches(map1."Geometry",map2."Geometry")
e uau, é LENTO!
No entanto, se eu pedir para fazer apenas uma parcela no map1, ele será executado muito rápido.
select map1.* from map1,map2
where touches(map1."Geometry",map2."Geometry")
and map1."ROWID" = 753
Espero que a primeira consulta seja mais lenta, mas é incrivelmente lenta. Ele roda muito rápido no SQLServer, Manifold GIS e PostGIS. Spatialite é realmente realmente ineficiente?
spatialite
ajl
fonte
fonte
Respostas:
Não, o SpatiaLite não é tão lento, você só precisa usar um índice espacial. Devido a limitações no design do SQLite, o uso de um índice espacial em uma consulta não é tão invisível quanto no PostGIS.
Aqui está um exemplo modificado do SpatiaLite Cookbook http://www.gaia-gis.it/spatialite-3.0.0-BETA/spatialite-cookbook/html/neighbours.html
Depois de criar um índice espacial em seus conjuntos de dados de polígonos
fonte
No livro de Eric Westra 'Python Geospatial Development', a página 188 mostra que, para a operação CONTAINS, pelo menos o Spatialite pode, talvez surpreendentemente, rodar mais rápido que o MySQL e o PostGIS - se o procedimento de indexação espacial envolvido for seguido.
fonte
Eu escrevi um blog sobre isso há um tempo. Consulte http://www.frogmouth.net/blog/?p=23
Micha também escreveu um blog interessante sobre esse assunto .
fonte