Problema (bug?) esportando da PG a SQLITE con ogr2ogr

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

Problema (bug?) esportando da PG a SQLITE con ogr2ogr

Alessandro Pasotti
Ciao

esportando una tabella fatta così:

         Colonna         |           Tipo           | Modificatori                          
-------------------------+--------------------------+------------------------
 id                      | integer                  | not null preimpostato
nextval('routing_arc_id_seq'::regclass)
 geom                    | geometry                 | not null

con questo comando:

$ ogr2ogr -f SQLite -dsco SPATIALITE=yes myfile.sqlite PG:"host=localhost
dbname=miodb" routing_arc

ottengo un sqlite senza la colonna ID

se invece, provo con:

$ ogr2ogr -f SQLite -dsco SPATIALITE=yes myfile.sqlite PG:"host=localhost
dbname=miodb" -sql "select id, * from routing_arc"

ottengo un sqlite con la colonna ID ma con i valori ID tutti impostati a NULL

l'unico modo che ho trovato di fargli riempire correttamente l'id è:

$ ogr2ogr -f SQLite -dsco SPATIALITE=yes myfile.sqlite PG:"host=localhost
dbname=miodb" -sql "select id as gid, * from routing_arc"

curiosamente, con quest'ultimo comando mi trovo un sqlite con 2 colonne, ID e
GID entrambe compilate correttamente.


C'è qualche logica in questo comportamento o è un baco ?


Versioni:

$ apt-cache policy libspatialite2
libspatialite2:
  Installato: 2.4.0~rc4-2~lucid1

$ apt-cache policy libgdal1-1.7.0
libgdal1-1.7.0:
  Installato: 1.7.2-4~lucid3

$ apt-cache policy postgis
postgis:
  Installato: 1.5.1-3~lucid1

--
Alessandro Pasotti
itOpen - "Open Solutions for the Net Age"
w3:  www.itopen.it
Linux User# 167502
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[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 rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
474 iscritti al 18.9.2010
Reply | Threaded
Open this post in threaded view
|

Re: Problema (bug?) esportando da PG a SQLITE con ogr2ogr

Giuseppe Sucameli
Ciao Alessandro,

2010/9/24 Alessandro Pasotti <[hidden email]>
$ ogr2ogr -f SQLite -dsco SPATIALITE=yes myfile.sqlite PG:"host=localhost
dbname=miodb" routing_arc

ottengo un sqlite senza la colonna ID
La colonna ID (chiave primaria) viene rimpiazzata con la colonna OGC_FID,
colonna usata internamente per identificare le features.

se invece, provo con:

$ ogr2ogr -f SQLite -dsco SPATIALITE=yes myfile.sqlite PG:"host=localhost
dbname=miodb" -sql "select id, * from routing_arc"

ottengo un sqlite con la colonna ID ma con i valori ID tutti impostati a NULL
Usando la query invece, la colonna con chiave primaria non viene rimpiazzata.
Infatti la colonna OGC_FID viene compilata senza considerare la colonna ID
poiché la query che hai inserito potrebbe anche non contenere un campo univoco
tra quelli restituiti.

In questo caso quindi è come se avessi inserito 2 volte la colonna ID.
Forse a seguito di conflitto di nomi di colonna (in quanto ripetuti) viene lasciata
a NULL.

l'unico modo che ho trovato di fargli riempire correttamente l'id è:

$ ogr2ogr -f SQLite -dsco SPATIALITE=yes myfile.sqlite PG:"host=localhost
dbname=miodb" -sql "select id as gid, * from routing_arc"

curiosamente, con quest'ultimo comando mi trovo un sqlite con 2 colonne, ID e
GID entrambe compilate correttamente.
Ovviamente ti ritrovi il campo ID e quello GID, perché come ti dicevo sopra tutti
i campi vengono mantenuti usando una query come parametro.

C'è qualche logica in questo comportamento o è un baco ?
Sei arrivato vicinissimo alla soluzione ;)
Prova questa:

$ ogr2ogr -f SQLite -dsco SPATIALITE=yes myfile.sqlite PG:"host=localhost
dbname=miodb" -sql "select * from routing_arc"

e tutto dovrebbe andare.

Saluti!!

--
Giuseppe Sucameli

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[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 rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
474 iscritti al 18.9.2010
Reply | Threaded
Open this post in threaded view
|

Re: Problema (bug?) esportando da PG a SQLITE con ogr2ogr

Alessandro Pasotti
In data venerdì 24 settembre 2010 11:39:05, Giuseppe Sucameli ha scritto:
: > Ciao Alessandro,

>
> 2010/9/24 Alessandro Pasotti <[hidden email]>
>
> > $ ogr2ogr -f SQLite -dsco SPATIALITE=yes myfile.sqlite PG:"host=localhost
> > dbname=miodb" routing_arc
> >
> > ottengo un sqlite senza la colonna ID
>
> La colonna ID (chiave primaria) viene rimpiazzata con la colonna OGC_FID,
> colonna usata internamente per identificare le features.
>
> se invece, provo con:
> > $ ogr2ogr -f SQLite -dsco SPATIALITE=yes myfile.sqlite PG:"host=localhost
> > dbname=miodb" -sql "select id, * from routing_arc"
> >
> > ottengo un sqlite con la colonna ID ma con i valori ID tutti impostati a
> > NULL
>
> Usando la query invece, la colonna con chiave primaria non viene
> rimpiazzata.
> Infatti la colonna OGC_FID viene compilata senza considerare la colonna ID
> poiché la query che hai inserito potrebbe anche non contenere un campo
> univoco
> tra quelli restituiti.
>
> In questo caso quindi è come se avessi inserito 2 volte la colonna ID.
> Forse a seguito di conflitto di nomi di colonna (in quanto ripetuti) viene
> lasciata
> a NULL.
>
> l'unico modo che ho trovato di fargli riempire correttamente l'id è:
> > $ ogr2ogr -f SQLite -dsco SPATIALITE=yes myfile.sqlite PG:"host=localhost
> > dbname=miodb" -sql "select id as gid, * from routing_arc"
> >
> > curiosamente, con quest'ultimo comando mi trovo un sqlite con 2 colonne,
> > ID e
> > GID entrambe compilate correttamente.
>
> Ovviamente ti ritrovi il campo ID e quello GID, perché come ti dicevo sopra
> tutti
> i campi vengono mantenuti usando una query come parametro.
>
> C'è qualche logica in questo comportamento o è un baco ?
>
> Sei arrivato vicinissimo alla soluzione ;)
> Prova questa:
>
> $ ogr2ogr -f SQLite -dsco SPATIALITE=yes myfile.sqlite PG:"host=localhost
> dbname=miodb" -sql "select * from routing_arc"
>
> e tutto dovrebbe andare.

Perfetto!

Grazie.

--
Alessandro Pasotti
itOpen - "Open Solutions for the Net Age"
w3:  www.itopen.it
Linux User# 167502
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[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 rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
474 iscritti al 18.9.2010