[Gfoss] Confronto calcolo di aree tra QGIS e POSTGIS con TRIGGER

solo un'ipotesi, ma in QGIS il progetto è impostato sul sistema di riferimento del dato ovvero 3857?

Il 27/dic/2019 15:48 Massimiliano Moraca <info@massimilianomoraca.it> ha scritto:

Salve a tutti e buon Natale passato.
Sto sperimentando i TRIGGER usando PostGIS ed ho creato un semplice vettore
poligonale in cui è presente una colonna area che deve riempirsi
automaticamente dopo la creazione del poligono. L'area deve essere in
ettari.

Ho quindi creato il mio vettore:

> CREATE TABLE buffer
> (
> id INTEGER PRIMARY KEY,
> area_ha DECIMAL
> );
> SELECT AddGeometryColumn(
> 'buffer',
> 'geom',
> 3857,
> 'POLYGON',
> 2
> );

Ed i TRIGGER associati:

> CREATE FUNCTION areabuffer_trigger_function() RETURNS trigger AS $$
> BEGIN
> NEW.area_ha = ST_AREA(NEW.geom)/10000;
> RETURN NEW;
> END;
> $$ language plpgsql;
>
> CREATE TRIGGER areabuffer_trigger
> BEFORE INSERT OR UPDATE
> ON buffer
> FOR EACH ROW
> EXECUTE PROCEDURE areabuffer_trigger_function();

Creando il poligono o i poligoni in QGIS e salvando l'editing, il campo
*area_ha* viene effettivamente riempito con un valore. Come test ho creato
un field virtuale nel calcolatore di campi usando la funzione `*$area/10000*`
ma noto che i valori di area calcolati in QGIS sono diversi da quelli che
calcola PostGIS usando il TRIGGER.
Ad esempo il poligono 1 ha un valore di area da TRIGGER pari a 36,6917
mentre il corrispettivo da QGIS è 20,9879.

Come mai?

*ing.Massimiliano Moraca*
*Analisi, progettazione e sviluppo di soluzioni GIS e WebGIS*
*P.IVA*: 08700081212
*CELL*: 333 59 49 583 (*lun - ven 9.00 - 18.00*)
*WEB*: www.massimilianomoraca.it
* Attività svolta ai sensi della Legge 4 del 14 gennaio 2013, art.1*
_______________________________________________
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.
764 iscritti al 23/08/2019