Spatialite cookbook

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Spatialite cookbook

Beppe
This post was updated on .
Salve a tutti,
sto studiando spatialite su "Spatialite cookbook" e arrivato alla ricetta #10 mi sono reso conto che alcune funzionalità sono incompatibili con la versione più recente di Spatialite che sto usando...
Ho frugato un po' in rete ed ho trovato un pdf (libspatialite v.2.4.0-RC5b Experimental
Spatial Index UPDATE) che mi ha permesso di andare avanti sino ad ora.
Attualmente sono arrivato alla ricetta #15 ma mi sono bloccato perchè non riesco a capire il modo per far funzionare la seguente query:

SELECT pp1.name AS "PopulatedPlace #1",
  GeodesicLength(
    MakeLine(pp1.geometry, pp2.geometry))
      AS "Distance (meters)",
  pp2.name AS "PopulatedPlace #2"
FROM populated_places AS pp1,
  populated_places AS pp2
WHERE GeodesicLength(
    MakeLine(pp1.geometry, pp2.geometry)) < 1000.0
  AND pp1.id <> pp2.id
  AND pp2.ROWID IN (
    SELECT pkid
    FROM idx_populated_places_geometry
    WHERE pkid MATCH RTreeDistWithin(
      ST_X(pp1.geometry),
      ST_Y(pp1.geometry), 0.02))
ORDER BY 2

Qualcuno potrebbe aiutarmi?
Grazie in anticipo,
Beppe
Reply | Threaded
Open this post in threaded view
|

Re: Spatialite cookbook

a.furieri
On Wed, 12 Feb 2014 13:10:11 -0800 (PST), Beppe wrote:

> Salve a tutti,
> sto studiando spatialite su "Spatialite cookbook" e arrivato alla
> ricetta
> #10 mi sono reso conto che alcune funzionalità sono incompatibili con
> la
> versione più recente di Spatialite che sto usando...
> Attualmente sono arrivato alla ricetta #15 e non riesco a capire il
> modo per
> far funzionare la seguente query:
>
> SELECT pp1.name AS "PopulatedPlace #1",
>   GeodesicLength(
>     MakeLine(pp1.geometry, pp2.geometry))
>       AS "Distance (meters)",
>   pp2.name AS "PopulatedPlace #2"
> FROM populated_places AS pp1,
>   populated_places AS pp2
> WHERE GeodesicLength(
>     MakeLine(pp1.geometry, pp2.geometry)) < 1000.0
>   AND pp1.id <> pp2.id
>   AND pp2.ROWID IN (
>     SELECT pkid
>     FROM idx_populated_places_geometry
>     WHERE pkid MATCH RTreeDistWithin(
>       ST_X(pp1.geometry),
>       ST_Y(pp1.geometry), 0.02))
> ORDER BY 2
>
> Qualcuno potrebbe aiutarmi?
>

ciao Beppe,

effettivamente il cookbook inizia ad invecchiare qua e la, specie
dove c'e' in ballo uno Spatial Index.

le subqueries basate sul meccanismo "WHERE ... MATCH ..." erano
quanto di meglio avevamo a disposizione qualche anno fa.
nel frattempo sono state deprecate (e definitivamente rimosse
dal codice) perche' alla prova dei fatti creavano un sacco di
problemi.

attualmente si usa la nuova interfaccia SpatialIndex, che trovi
descritta in dettaglio in questo documento:
https://www.gaia-gis.it/fossil/libspatialite/wiki?name=SpatialIndex

quindi seguendo le ultime evoluzioni ora quella query diventa:

SELECT pp1.name AS "PopulatedPlace #1",
   GeodesicLength(
     MakeLine(pp1.geometry, pp2.geometry))
       AS "Distance (meters)",
   pp2.name AS "PopulatedPlace #2"
FROM populated_places AS pp1,
   populated_places AS pp2
WHERE GeodesicLength(
     MakeLine(pp1.geometry, pp2.geometry)) < 1000.0
   AND pp1.id <> pp2.id
   AND pp2.ROWID IN (
     SELECT rowid FROM SpatialIndex
     WHERE f_table_name = 'populated_places'
       AND search_frame = ST_Buffer(pp1.geometry, 0.02))
ORDER BY 2

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
Reply | Threaded
Open this post in threaded view
|

Re: Spatialite cookbook

Beppe
Ciao Sandro,

ti ringrazio per l'aiuto.
Se ci fosse la possibilità sarebbe interessante preparare un aggiornamento del cookbook, considerato il suo valore didattico; un suo update mi è sembra di capire, ora come ora interesserebbe solo 1 capitolo per intero ed alcune query... Io purtroppo sono entrato da poco nel mondo degli spatial DB, altrimenti avrei collaborato molto volentieri ad un eventuale progetto in tal senso!
Volevo inolte sapere, visto che i files necessari alla ricetta #19, ovvero i dati Istat 2010 non sono più disponibili neanche dietro richiesta diretta all'Istat, c'è qualche modo per ottenerli?

Di nuovo grazie,
Beppe
Reply | Threaded
Open this post in threaded view
|

Re: Spatialite cookbook

a.furieri
On Thu, 13 Feb 2014 09:33:08 -0800 (PST), Beppe wrote:
> Volevo inolte sapere, visto che i files necessari alla ricetta #19,
> ovvero i
> dati Istat 2010 non sono più disponibili neanche dietro richiesta
> diretta
> all'Istat, c'è qualche modo per ottenerli?
>

certo che si; ISTAT nel frattempo ha rivoluzionato tutta la propria
infrastruttura WEB quando ha deciso di rilasciare questi datasets
come Open Data sotto licenza CC-BY

ora tutti gli SHP con i confini comunali/provinciali/regionali
(2001, 2008, 2010 e 2011) li trovi qua:
http://www.istat.it/it/archivio/24613

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
Reply | Threaded
Open this post in threaded view
|

Re: Spatialite cookbook

Beppe
Grazie!