Salve a tutti,
sono finalmente giunto, anche grazie al vostro aiuto, alla ricetta #17 dello spatialite cookbook, qualcuno potrebbe aiutarmi a riscrivere la relativa query in modo che sia compatibile con la versione più recente dell'interfaccia dello Spatialindex? La query è la seguente: SELECT rw.name AS Railway, pp_e.name AS PopulatedPlace, (ST_Distance(rw.geometry, Transform(pp_a.geometry, 23032)) <= 1000.0) AS "A class [< 1Km]", (ST_Distance(rw.geometry, Transform(pp_b.geometry, 23032)) > 1000.0) AS "B class [< 2.5Km]", (ST_Distance(rw.geometry, Transform(pp_c.geometry, 23032)) > 2500.0) AS "C class [< 5Km]", (ST_Distance(rw.geometry, Transform(pp_d.geometry, 23032)) > 5000.0) AS "D class [< 10Km]", (ST_Distance(rw.geometry, Transform(pp_e.geometry, 23032)) > 10000.0) AS "E class [< 20Km]" FROM railways AS rw JOIN populated_places AS pp_e ON ( ST_Distance(rw.geometry, Transform(pp_e.geometry, 23032)) <= 20000.0 AND pp_e.id IN ( SELECT pkid FROM idx_populated_places_geometry WHERE pkid MATCH RTreeIntersects( MbrMinX( Transform( ST_Envelope(rw.geometry), 4326)), MbrMinY( Transform( ST_Envelope(rw.geometry), 4326)), MbrMaxX( Transform( ST_Envelope(rw.geometry), 4236)), MbrMaxY( Transform( ST_Envelope(rw.geometry), 4326))))) LEFT JOIN populated_places AS pp_d ON ( pp_e.id = pp_d.id AND ST_Distance(rw.geometry, Transform(pp_d.geometry, 23032)) <= 10000.0 AND pp_d.id IN ( SELECT pkid FROM idx_populated_places_geometry WHERE pkid MATCH RTreeIntersects( MbrMinX( Transform( ST_Envelope(rw.geometry), 4326)), MbrMinY( Transform( ST_Envelope(rw.geometry), 4326)), MbrMaxX( Transform( ST_Envelope(rw.geometry), 4236)), MbrMaxY( Transform( ST_Envelope(rw.geometry), 4326))))) LEFT JOIN populated_places AS pp_c ON ( pp_d.id = pp_c.id AND ST_Distance(rw.geometry, Transform(pp_c.geometry, 23032)) <= 5000.0 AND pp_c.id IN ( SELECT pkid FROM idx_populated_places_geometry WHERE pkid MATCH RTreeIntersects( MbrMinX( Transform( ST_Envelope(rw.geometry), 4326)), MbrMinY( Transform( ST_Envelope(rw.geometry), 4326)), MbrMaxX( Transform( ST_Envelope(rw.geometry), 4236)), MbrMaxY( Transform( ST_Envelope(rw.geometry), 4326))))) LEFT JOIN populated_places AS pp_b ON ( pp_c.id = pp_b.id AND ST_Distance(rw.geometry, Transform(pp_b.geometry, 23032)) <= 2500.0 AND pp_b.id IN ( SELECT pkid FROM idx_populated_places_geometry WHERE pkid MATCH RTreeIntersects( MbrMinX( Transform( ST_Envelope(rw.geometry), 4326)), MbrMinY( Transform( ST_Envelope(rw.geometry), 4326)), MbrMaxX( Transform( ST_Envelope(rw.geometry), 4236)), MbrMaxY( Transform( ST_Envelope(rw.geometry), 4326))))) LEFT JOIN populated_places AS pp_a ON ( pp_b.id = pp_a.id AND ST_Distance(rw.geometry, Transform(pp_a.geometry, 23032)) <= 1000.0 AND pp_a.id IN ( SELECT pkid FROM idx_populated_places_geometry WHERE pkid MATCH RTreeIntersects( MbrMinX( Transform( ST_Envelope(rw.geometry), 4326)), MbrMinY( Transform( ST_Envelope(rw.geometry), 4326)), MbrMaxX( Transform( ST_Envelope(rw.geometry), 4236)), MbrMaxY( Transform( ST_Envelope(rw.geometry), 4326))))); Grazie in anticipo, Beppe |
On Tue, 18 Feb 2014 09:14:38 -0800 (PST), Beppe wrote:
> Salve a tutti, > sono finalmente giunto, anche grazie al vostro aiuto, alla ricetta > #17 dello > spatialite cookbook, qualcuno potrebbe aiutarmi a riscrivere la > relativa > query in modo che sia compatibile con la versione più recente > SELECT rw.name AS Railway, pp_e.name AS PopulatedPlace, (ST_Distance(rw.geometry, Transform(pp_a.geometry, 23032)) <= 1000.0) AS "A class [< 1Km]", (ST_Distance(rw.geometry, Transform(pp_b.geometry, 23032)) > 1000.0) AS "B class [< 2.5Km]", (ST_Distance(rw.geometry, Transform(pp_c.geometry, 23032)) > 2500.0) AS "C class [< 5Km]", (ST_Distance(rw.geometry, Transform(pp_d.geometry, 23032)) > 5000.0) AS "D class [< 10Km]", (ST_Distance(rw.geometry, Transform(pp_e.geometry, 23032)) > 10000.0) AS "E class [< 20Km]" FROM railways AS rw JOIN populated_places AS pp_e ON ( ST_Distance(rw.geometry, Transform(pp_e.geometry, 23032)) <= 20000.0 AND pp_e.id IN ( SELECT rowid FROM SpatialIndex WHERE f_table_name = 'populated_places' AND search_frame = ST_Transform( ST_Envelope(rw.geometry), 4326))) LEFT JOIN populated_places AS pp_d ON ( pp_e.id = pp_d.id AND ST_Distance(rw.geometry, Transform(pp_d.geometry, 23032)) <= 10000.0 AND pp_d.id IN ( SELECT rowid FROM SpatialIndex WHERE f_table_name = 'populated_places' AND search_frame = ST_Transform( ST_Envelope(rw.geometry), 4326))) LEFT JOIN populated_places AS pp_c ON ( pp_d.id = pp_c.id AND ST_Distance(rw.geometry, Transform(pp_c.geometry, 23032)) <= 5000.0 AND pp_c.id IN ( SELECT rowid FROM SpatialIndex WHERE f_table_name = 'populated_places' AND search_frame = ST_Transform( ST_Envelope(rw.geometry), 4326))) LEFT JOIN populated_places AS pp_b ON ( pp_c.id = pp_b.id AND ST_Distance(rw.geometry, Transform(pp_b.geometry, 23032)) <= 2500.0 AND pp_b.id IN ( SELECT rowid FROM SpatialIndex WHERE f_table_name = 'populated_places' AND search_frame = ST_Transform( ST_Envelope(rw.geometry), 4326))) LEFT JOIN populated_places AS pp_a ON ( pp_b.id = pp_a.id AND ST_Distance(rw.geometry, Transform(pp_a.geometry, 23032)) <= 1000.0 AND pp_a.id IN ( SELECT rowid FROM SpatialIndex WHERE f_table_name = 'populated_places' AND search_frame = ST_Transform( ST_Envelope(rw.geometry), 4326))); ciao Sandro _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
This post was updated on .
Grazie di nuovo Sandro per il pronto aiuto!
Colgo l'occasione per chiederti se potresti consigliarmi un testo, possibilmente semplice e magari (anche se non necessariamente) sotto licenza GNU ![]() Beppe |
On Tue, 18 Feb 2014 10:17:46 -0800 (PST), Beppe wrote:
> Colgo l'occasione per chiederti se potresti consigliarmi un testo, > possibilmente semplice e magari (anche se non necessariamente) anche > sotto > licenza GNU, che mi consenta di approfondire in maniera "gently" > quanto sto > apprendendo dallo studio dello "Spatialite cookbook"? > se cerchi un "libro di carta", puoi dare un'occhiata a questo: http://www.darioflaccovio.it/libro.php/gis-open-source-df0149_C794 contiene un capitolo tutto dedicato a SpatiaLite scritto da un autore che dovrebbe intendersene (forse ... comunque e' uno che a me mi sta molto simpatico) :-D se invece preferisci scegliere a gusto tuo tra e-book e "mattone di carta" direi che un serio candidato per approfondire il tema Spatial DBMS e' sicuramente questo qua: http://www.packtpub.com/postgis-to-store-organize-manipulate-analyze-spatial-data-cookbook/book > Per comprendere il mio livello, tieni presente che sono appena > entrato > nel mondo degli Spatial DB grazie al cookbook. > confidenza per confidenza; quando ho iniziato a sviluppare SpatiaLite la mia unica fonte di informazione sugli Spatial DBMS e' stata questa: https://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html da li ho scoperto che sotto a tutta la baracca Spatial SQL c'era uno standard internazionale formalmente definito, e da allora in poi ho sempre tenuto la specifica ufficiale come stella polare. non e' una lettura facilissima, ma e' decisamente autorevole ed altamente istruttiva: http://portal.opengeospatial.org/files/?artifact_id=25354 ciao Sandro _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
In reply to this post by Beppe
Grazie, farò tesoro delle tue indicazioni e le utilizzerò per accompagnarmi in questo per me nuovo mondo che ho scoperto essere molto appassionante oltre che essenziale per chi come me si occupa di cartografia e GIS.
Beppe |
Free forum by Nabble | Edit this page |