[Gfoss] inserimento di geometrie in QGIS

Ho dei dati in PostGIS costituiti da una serie di attributi alfanumerici e un
dato spaziale che ne rappresenta la geometria.
Tramite applicazione web vengono inseriti i dati alfanumerici.
***Successivamente*** bisogna inserire le loro geometrie usando QGIS.

C'è un modo per aprire in QGIS la tabella alfanumerica e via via aggiungere le
geometrie mancanti? L'ideale sarebbe esportare uno shapefile con tutti gli
attributi alfanumerici e con le geometrie nulle, e poi disegnare le geometrie
in QGIS. Ma non riesco a creare lo shapefile con le geometrie nulle...

Avete qualche suggerimento?

Grazie in anticipo.
Saluti
Vito
--
Ing. Vito Meuli

Tecnologie Avanzate S.r.l.
via B. Croce, 49
70015 Noci (BA)
tel. +39 080 4979652
fax +39 080 4979263

email: v.meuli@tecnologieavanzate.it
http://www.tecnologieavanzate.it

Ciao Vito,
non ho capito se le geometrie nulle sono tali in quanto hai il campo con le coordinate ma non i dati alfanumerici, oppure hai i dati alfanumerici ma non la geometria.
Se il caso è il secondo prova così:

1 - dividere in due la tua tabella:

  • Tab1 campo ID e campo geometrico
  • Tab2 campo ID (che chiamerai tipo ID_b o come ti pare a te ma non uguale all’ID di tab1) + dati alfanumerici

2 - Qgis carichi la tabella con i dati geometrici e continui a disegnare le tue geometrie inserendo l’ID;
3 - crei una view in postgres che unisce tab1 e tab2
4 - esporti da qgis in formato shapefile la view;
5 - se vuoi ripulisci i campi del dbf lasciando un solo id via Calc di OpenOffice;
6 - tramite SPIT di Qgis o metodo da te preferito importi lo shape in Postgres.
7 - Buona fortuna!!
8 - )

Luca

Alle 18:21, venerdì 6 febbraio 2009, Luca Mandolesi ha scritto:

Ciao Vito,non ho capito se le geometrie nulle sono tali in quanto hai il
campo con le coordinate ma non i dati alfanumerici, oppure hai i dati
alfanumerici ma non la geometria.

Il secondo caso.
Seguo il tuo ragionamento punto per punto.

Se il caso è il secondo prova così:

1 - dividere in due la tua tabella:

   - Tab1 campo ID e campo geometrico
   - Tab2 campo ID (che chiamerai tipo ID_b o come ti pare a te ma non
   uguale all'ID di tab1) + dati alfanumerici

Fatto.

2 - Qgis carichi la tabella con i dati geometrici e continui a disegnare le
tue geometrie inserendo l'ID;

E' quello che vorrei evitare per due motivi:
* evitare all'utente di QGIS di inserire a mano l'ID di collegamento tra le
due tabelle
* permettere all'utente di QGIS di avere disponibili anche i dati
alfanumerici, per essere sicuro che la geometria che inserisce corrisponde
proprio a quei dati alfanumerici

3 - crei una view in postgres che unisce tab1 e tab2

Fatto.

4 - esporti da qgis in formato shapefile la view;

Intendi da postgres, vero?
Se si, fatto.

5 - se vuoi ripulisci i campi del dbf lasciando un solo id via Calc di
OpenOffice;

Per ora non necessario, li lascio stare.

6 - tramite SPIT di Qgis o metodo da te preferito importi lo shape in
Postgres.

Fatto.

7 - Buona fortuna!!

Fatto (pregato :slight_smile:

8 - )

Luca

Ok, il giro funziona.
L'unico appunto è quello del punto 2, che pensavo di risolvere in modo
differente ma molto macchinoso:

1. divido la tab in 2: parte geometrica e parte alfanumerica, legate da un id
comune, come dici tu.
2. creo una view postgres che unisce i campi delle due tabelle,e INSERISCE UNA
GEOMETRIA FITTIZIA (all'equatore, o al polo nord...) per le righe della tab
alfanumerica che non hanno corrispondente riga nella tab geometrica
3. esporto questa view da postgres in shapefile
4 edito lo shapefile con QGIS e, per le righe che hanno la geometria a casa
del diavolo uso Aggiungi Isola per aggiungere la vera geometria; l'utente non
modifica nè gli ID nè gli attributi alfanumerici, ma li vede per poterli
confrontare
5. reimporto la shapefile su postgres (in tabella temporanea, con tutti i
campi della view) mediante procedura Java che:
* elimina la geometria fittizia
* copia le sole geometrie dalla tab temporanea alla tab geometrica, sfruttando
gli ID presenti

Ne ho fatto un prototipo e sembra funzionare, ma si può fare di meglio?
Soprattutto non mi piace l'Aggiungi Isola con un pezzo all'Equatore e un pezzo
in Italia (a parte un bug che è appena stato risolto, vedi altri thread [1] e
[2])

Grazie dei suggerimenti, ci penso un po' su.
Saluti,
Vito

[1] [Gfoss] QGIS: aggiungi isola
[2] [Gfoss] Utilizzo del trac di QGIS

--
Ing. Vito Meuli

Tecnologie Avanzate S.r.l.
via B. Croce, 49
70015 Noci (BA)
tel. +39 080 4979652
fax +39 080 4979263

email: v.meuli@tecnologieavanzate.it
http://www.tecnologieavanzate.it

On Mon, Feb 9, 2009 at 11:18 AM, Vito Meuli <v.meuli@tecnologieavanzate.it> wrote:

Alle 18:21, venerdì 6 febbraio 2009, Luca Mandolesi ha scritto:

Ciao Vito,non ho capito se le geometrie nulle sono tali in quanto hai il
campo con le coordinate ma non i dati alfanumerici, oppure hai i dati
alfanumerici ma non la geometria.

Il secondo caso.
Seguo il tuo ragionamento punto per punto.

Se il caso è il secondo prova così:

1 - dividere in due la tua tabella:

  • Tab1 campo ID e campo geometrico
  • Tab2 campo ID (che chiamerai tipo ID_b o come ti pare a te ma non
    uguale all’ID di tab1) + dati alfanumerici

Fatto.

2 - Qgis carichi la tabella con i dati geometrici e continui a disegnare le
tue geometrie inserendo l’ID;

E’ quello che vorrei evitare per due motivi:

  • evitare all’utente di QGIS di inserire a mano l’ID di collegamento tra le
    due tabelle
  • permettere all’utente di QGIS di avere disponibili anche i dati
    alfanumerici, per essere sicuro che la geometria che inserisce corrisponde
    proprio a quei dati alfanumerici

Faccio fatica a seguirti senza l’esempio sotto. Avevo capito che gli ID li hai già tutti…vabbè, sai meglio tu di me come risolvere. Al massimo ti tieni anche per le geometrie la tabella con i dati alfanumerici

3 - crei una view in postgres che unisce tab1 e tab2

Fatto.

4 - esporti da qgis in formato shapefile la view;

Intendi da postgres, vero?
Se si, fatto.

Dicevo da Qgis, perchè tasto destro sul nome del layer postgis in legenda ed esporti in formato shape. Farlo da shell postgres va bene uguale, chiaro…

5 - se vuoi ripulisci i campi del dbf lasciando un solo id via Calc di
OpenOffice;

Per ora non necessario, li lascio stare.

6 - tramite SPIT di Qgis o metodo da te preferito importi lo shape in
Postgres.

Fatto.

7 - Buona fortuna!!

Fatto (pregato :slight_smile:

8 - )

Luca

Ok, il giro funziona.
L’unico appunto è quello del punto 2, che pensavo di risolvere in modo
differente ma molto macchinoso:

  1. divido la tab in 2: parte geometrica e parte alfanumerica, legate da un id
    comune, come dici tu.
  2. creo una view postgres che unisce i campi delle due tabelle,e INSERISCE UNA
    GEOMETRIA FITTIZIA (all’equatore, o al polo nord…) per le righe della tab
    alfanumerica che non hanno corrispondente riga nella tab geometrica
  3. esporto questa view da postgres in shapefile
    4 edito lo shapefile con QGIS e, per le righe che hanno la geometria a casa
    del diavolo uso Aggiungi Isola per aggiungere la vera geometria; l’utente non
    modifica nè gli ID nè gli attributi alfanumerici, ma li vede per poterli
    confrontare
  4. reimporto la shapefile su postgres (in tabella temporanea, con tutti i
    campi della view) mediante procedura Java che:
  • elimina la geometria fittizia
  • copia le sole geometrie dalla tab temporanea alla tab geometrica, sfruttando
    gli ID presenti

Ne ho fatto un prototipo e sembra funzionare, ma si può fare di meglio?

Mi sono leggermente riperso…ma ok, l’importante è che funzi

Soprattutto non mi piace l’Aggiungi Isola con un pezzo all’Equatore e un pezzo
in Italia (a parte un bug che è appena stato risolto, vedi altri thread [1] e
[2])

Grazie dei suggerimenti, ci penso un po’ su.
Saluti,
Vito

De nada, ciao ciao

[1] [Gfoss] QGIS: aggiungi isola
[2] [Gfoss] Utilizzo del trac di QGIS


Ing. Vito Meuli

Tecnologie Avanzate S.r.l.
via B. Croce, 49
70015 Noci (BA)
tel. +39 080 4979652
fax +39 080 4979263

email: v.meuli@tecnologieavanzate.it
http://www.tecnologieavanzate.it