9 votos

Es Spatialite Muy Lento?

Tengo un par de miles de polígonos en SpatiaLite. Estoy tratando de hacer un "toque" de la consulta:

select map1.* from map1,map2
where touches(map1."Geometry",map2."Geometry")

y wow, es LENTO!

Sin embargo, si me piden que acaba de hacer uno para una parcela en map1, se ejecuta muy rápido.

select map1.* from map1,map2
where touches(map1."Geometry",map2."Geometry")
and map1."ROWID" = 753

Espero que la primera consulta se ejecutará más lento, pero es increíblemente lento. Se ejecuta muy rápido en SQLServer, Manifold GIS, y PostGIS. Es Spatialite realmente ineficiente?

14voto

Josh Puntos 569

No, SpatiaLite ¿no es lento, usted sólo tiene que utilizar un índice espacial. Debido a las limitaciones en el SQLite diseño, el uso de un índice espacial en una consulta no es tan invisible como lo es en PostGIS.

He aquí un ejemplo de modificación de la SpatiaLite libro de cocina http://www.gaia-gis.it/spatialite-3.0.0-BETA/spatialite-cookbook/html/neighbours.html

Después de crear un índice espacial en el polígono de conjuntos de datos

    SELECT map1.*
      FROM map1, map2
     WHERE ST_Touches(map1.geometry, map2.geometry)
       AND map2.ROWID IN (
           SELECT pkid
             FROM idx_map1_geometry
            WHERE pkid MATCH RTreeIntersects(
                  MbrMinX(map1.geometry),
                  MbrMinY(map1.geometry),
                  MbrMaxX(map1.geometry),
                  MbrMaxY(map1.geometry)));

4voto

Dwev Puntos 461

En Eric Westra del libro " Python Geoespacial Desarrollo de la página 188 muestra que la CONTIENE operación al menos Spatialite puede, tal vez sorprendentemente baratos, correr más rápido que MySQL y PostGIS - si el que participan los índices espaciales es el procedimiento seguido.

3voto

Nathan Feger Puntos 7675

Escribí un blog sobre esto hace un tiempo. Ver http://www.frogmouth.net/blog/?p=23

Micha escribió también un interesante blog sobre este tema.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X