Ciao,
innanzi tutto un saluti a tutti voi; sto cercando aiuto per una questione
probabilmente banale ma non per me.
Ho creato una tabella in postgresql 8.4 (postgis 1.5), di seguito la query
CREATE TABLE indagini."Sito_Puntuale"
(
the_geom geometry,
"OBJECTID" integer,
pkey_spu serial NOT NULL,
ubicazione_prov character(3) NOT NULL,
ubicazione_com character(3) NOT NULL,
"ID_SPU" character(15),
indirizzo character varying(255),
"coord_X" integer,
"coord_Y" integer,
mod_identcoord character varying(6),
desc_modcoord character varying(30),
quota_sml smallint NOT NULL,
modo_quota character varying(6),
data_sito date DEFAULT ('now'::text)::date,
note_sito character varying(255),
CONSTRAINT "Sito_Puntuale_pkey" PRIMARY KEY (pkey_spu),
CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) =
'MULTIPOINT'::text OR the_geom IS NULL),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 32633)
)
vorrei popolare i campi coord_X e coord_Y in automatico ad ogni inserimento
con le coordinate del punto generato. Pensavo di utilizzare un Trigger con
le funzioni:
round(ST_XMIN(the_geom)) FROM indagini."Sito_Puntuale"
ma non sono riuscito a far funzionare la cosa. Qualche dritta in proposito?
Grazie a chiunque possa aiutarmi.
--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Calcolo-coordinate-in-una-tabella-Pgsql-tp7593079.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
Ciao.
Forse dovresti utilizzare le funzioni ST_X ed ST_Y
Il 08/07/2015 15:23, aciali ha scritto:
Ciao,
innanzi tutto un saluti a tutti voi; sto cercando aiuto per una questione
probabilmente banale ma non per me.
Ho creato una tabella in postgresql 8.4 (postgis 1.5), di seguito la query
CREATE TABLE indagini."Sito_Puntuale"
(
the_geom geometry,
"OBJECTID" integer,
pkey_spu serial NOT NULL,
ubicazione_prov character(3) NOT NULL,
ubicazione_com character(3) NOT NULL,
"ID_SPU" character(15),
indirizzo character varying(255),
"coord_X" integer,
"coord_Y" integer,
mod_identcoord character varying(6),
desc_modcoord character varying(30),
quota_sml smallint NOT NULL,
modo_quota character varying(6),
data_sito date DEFAULT ('now'::text)::date,
note_sito character varying(255),
CONSTRAINT "Sito_Puntuale_pkey" PRIMARY KEY (pkey_spu),
CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) =
'MULTIPOINT'::text OR the_geom IS NULL),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 32633)
)
vorrei popolare i campi coord_X e coord_Y in automatico ad ogni inserimento
con le coordinate del punto generato. Pensavo di utilizzare un Trigger con
le funzioni:
round(ST_XMIN(the_geom)) FROM indagini."Sito_Puntuale"
ma non sono riuscito a far funzionare la cosa. Qualche dritta in proposito?
Grazie a chiunque possa aiutarmi.
--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Calcolo-coordinate-in-una-tabella-Pgsql-tp7593079.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
_______________________________________________
Gfoss@lists.gfoss.it
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.
750 iscritti al 18.3.2015
in realtà devo usare la “forzatura” della funzione ST_XMIN e ST_YMIN perché
la geometria è multipoint anche se di fatto inserisco solo punti singoli,
sono costretto ad usare una geometria MULTIPOINT perché da QGIS se
inserisco un nuovo punto in editing questo è di tipo MULTIPOINT. Ad ogni
modo il problema è nel catturare la geometria del record inserito prima del
salvataggio, quindi prima che venga inserito in tabella. La funzione trigger
che cerco di usare è:
CREATE OR REPLACE FUNCTION indagini."cal_coord_X"()
RETURNS trigger AS
$BODY$DECLARE
new_x integer;
BEGIN
new_x = round(ST_XMIN(the_geom)) FROM indagini."Sito_Puntuale"
WHERE pkey_spu = NEW.pkey_spu;
NEW."coord_X" = new_x;
RETURN NEW;
END;
$BODY$
……
che quando viene eseguita non da errori, semplicemente restituisce NULL.
Credo che l’errore sia nel catturare il record NEW……ma non so come fare
Alessandro Ciali
--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Calcolo-coordinate-in-una-tabella-Pgsql-tp7593079p7593083.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
http://www.postgresql.org/docs/8.1/static/plpgsql-trigger.html
puoi usare la variabile NEW per beccare il nuovo valore
Il 08/07/2015 16:02, aciali ha scritto:
in realtà devo usare la “forzatura” della funzione ST_XMIN e ST_YMIN perché
la geometria è multipoint anche se di fatto inserisco solo punti singoli,
sono costretto ad usare una geometria MULTIPOINT perché da QGIS se
inserisco un nuovo punto in editing questo è di tipo MULTIPOINT. Ad ogni
modo il problema è nel catturare la geometria del record inserito prima del
salvataggio, quindi prima che venga inserito in tabella. La funzione trigger
che cerco di usare è:
CREATE OR REPLACE FUNCTION indagini."cal_coord_X"()
RETURNS trigger AS
$BODY$DECLARE
new_x integer;
BEGIN
new_x = round(ST_XMIN(the_geom)) FROM indagini."Sito_Puntuale"
WHERE pkey_spu = NEW.pkey_spu;
NEW."coord_X" = new_x;
RETURN NEW;
END;
$BODY$
……
che quando viene eseguita non da errori, semplicemente restituisce NULL.
Credo che l’errore sia nel catturare il record NEW……ma non so come fare
Alessandro Ciali
--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Calcolo-coordinate-in-una-tabella-Pgsql-tp7593079p7593083.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
_______________________________________________
Gfoss@lists.gfoss.it
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.
750 iscritti al 18.3.2015
In un caso identico, la function l'ho definita così:
CREATE OR REPLACE FUNCTION valorizza_x()
RETURNS trigger AS
$BODY$BEGIN
NEW.x := st_x(NEW.geometria);
RETURN NEW;
END$BODY$
Poi l'ho richiamata in un trigger della tabella dove devo valorizzare il
campo x (o analogo y) ad ogni nuovo inserimento:
CREATE TRIGGER t_geo_cippi_x
BEFORE INSERT OR UPDATE
ON t_geo_cippi
FOR EACH ROW
EXECUTE PROCEDURE valorizza_x();
Saluti
--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Calcolo-coordinate-in-una-tabella-Pgsql-tp7593079p7593085.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
Funziona! Grazie ancora, mi stavo incasinando la vita inutilmente...
sto preparando un Db per l'archiviazione dei dati base in linea con le
specifiche nazionali e regionali per la Microzonazione Sismica, utilizzabile
tramite QGIS. Quando lo concluderò posterò il tutto, se qualcuno ne avesse
bisogno mi farebbe piacere condividerlo.
Saluti
--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Calcolo-coordinate-in-una-tabella-Pgsql-tp7593079p7593087.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
Sul sito di arpa Piemonte trovi tutto gia belle che pronto!
Domani ti mando il link, adesso dal telefono non lo ho sottomano.
Il 08/Lug/2015 16:56, “aciali” <alessandro.ciali@gmail.com> ha scritto:
Funziona! Grazie ancora, mi stavo incasinando la vita inutilmente…
sto preparando un Db per l’archiviazione dei dati base in linea con le
specifiche nazionali e regionali per la Microzonazione Sismica, utilizzabile
tramite QGIS. Quando lo concluderò posterò il tutto, se qualcuno ne avesse
bisogno mi farebbe piacere condividerlo.
Saluti
–
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Calcolo-coordinate-in-una-tabella-Pgsql-tp7593079p7593087.html
Sent from the Gfoss – Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
Gfoss@lists.gfoss.it
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.
750 iscritti al 18.3.2015