[Gfoss] query aggiornamento dati in postgis

Salve a tutti,
colgo l'occasione per ringraziare luca delucchi e flavio rigolon per
l'aiuto in un mio precedente post (non ho risposto prima per assenza di
internet!!!) e vi pongo un altro piccolo quesito:
ho sempre la mia solita tabella con un campo spaziale creato con la
funzione AddGeometryColumn, l'inserimento dei dati avviene in momenti
diversi: per esigenze di lavoro (sono archeologo) durante lo scavo
vengono inseriti i dati alfanumerici, poi viene disegnato lo shape e
infine lo shape dovrebbe essere inserito nel record già creato (es.
scavo un muro, salvo i suoi dati alfanumerici in un record che ha come
chiave primaria il suo identificativo, chiamiamolo "usm1", poi faccio i
rilievi del caso e lo disegno, lo shape creato vorrei salvarlo nel
record "usm1". Ho dei dubbi sul procedimento:
ho visto che le opzioni "-a" e "-g" di shp2pgsql aggiungono un nuovo
record, ma per aggiornarlo?
Immagino ci voglia una query tipo "update table..." ma non riesco a
costruirmela!
Non conosco altre strade...

p.s. come mai shp2pgsql mi stampa l'output della query ma non mi crea il
file .sql? Il comando che ho dato è:
shp2pgsql path/shape.shp path/tabella/database > path/file.sql

Saluti
-beppe-

Ciao Beppe,

sono anche io archeologo e anche io ho dovuto affrontare questo “problema”.
Io ho scelto una strada un po’ diversa:

sapendo che parte grafica e parte alfanumerica sono fisicamente slegate nel corso dello scavo
ho ricreato anche a livello di base GIS questa situazione e per ora sto avendo grossi vantaggi;
in pratica ho un layer tabellare postgis sul quale chiunque può aggiungere le nuove unità stratigrafiche;

poi ho un DBMS con tabella in postgres nel quale inserisco i dati della scheda US tramite un’interfaccia realizzata in
python+pyQt.

A livello di visualizzazione sul GIS, non faccio altro che realizzare una vista in postgres
che fa il join della tabella postgis e della scheda US, visualizzati poi con QGIS. In questo modo
chi compila le schede e chi disegna possono tutti lavorare in maniera indipendente e fondere in seguito
i dati.

Ti consiglio inoltre di tenere l’univocità dei tuoi record (US a livello alfanumerico ma anche grafico) basata
su una chiave che unisca sigla o codice di scavo, area o ambiente e US o USM. In questo modo potrai realizzare
in futuro una piattaforma unica in cui farai query su più scavi alla volta.

Qui puoi trovare una misera paginetta con lo schema logico che sto usando per la scheda US e se ti interessa possiamo ragionare su questo
argomento per sviluppare qualcos’altro.

Per la tua query non devi fare altro che un:

UPDATE nome_tabella SET nome_colonna = nuovo_valore, nome_colonna_2 = nuovo_valore WHERE campo_ID = ID

chiaramente se vorrai prelevare i dati da una tabella e inserirli nella tua tabella “buona”, dovrai scriptare (io uso python) un ciclo
che faccia il lavoro al posto tuo.
Non so a che livello di dimestichezza stai con l’SQL; siccome io non ho memoria mi rifaccio sempre a questo sito:

http://www.w3schools.com/sql/sql_update.asp

spero di esserti stato utile

ciao ciao

luca

PS:
VIVA GLI ARCHEOLOGI CHE CHE USANO L’OPENSOURCE!!