[QGIS-it-user] La funzione $length restituisci il valore cartesiano se richiamata dalla funzione aggregate

Buongiorno,
scrivo solo per capire se è un comportamento voluto o è un bug quanto in oggetto.

descrizione problema:
ho un layer lineare (testOne) e una tabella (tableOne) senza geometria,
avvio il field calc dalla tabella e scrivo la seguente espressione, per aggiornare l’attributo len:

aggregate(
layer:=‘testOne’,
aggregate:=‘array_agg’,
expression:=$length) [0]

il risultato (126671,709 m) è diverso da quello che mi aspetterei (126721.310 m) , in quanto restituisce il valore cartesiano di $length e non quello ellissoidico, infatti se usassi $length nel vettore testOne otterrei il valore desiderato.

PS. il progetto è impostato correttamente con ellissoide, ovvero siamo al corrente che:‘La lunghezza calcolata da questa funzione rispetta sia l’impostazione dell’ellissoide del progetto corrente che le impostazioni dell’unità di distanza’

Allego dati e progetto di esempio.

Testato sia su QGIS 3.28.13 LTR Firenze che su QGIS 3.34.1 Prizren da OSGeo4W - win 10 PRO 64b

saluti

https://mega.nz/file/pFQnkYxJ#3zNJR0rzH-a4opip3rgkbJoLrRUlNu7-vwXeiUra_Hs

···

Ing. Salvatore Fiandaca
mobile.:+39 327.493.8955
m: pigrecoinfinito@gmail.com
C.F.: FNDSVT71E29Z103G
P.IVA: 06597870820
membro QGIS Italia - http://qgis.it/
socio GFOSS.it - http://gfoss.it/
member OSGeo - https://www.osgeo.org/member/fiandaca/
blog:**** https://pigrecoinfinito.com/
FB: Co-admin - https://www.facebook.com/qgis.it/****
TW: ****https://twitter.com/totofiandaca

43°51’0.54"N 10°34’27.62"E - EPSG:4326

“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?”
R. Stallman

Questo documento, allegati inclusi, contiene informazioni di proprietà di FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario in relazione alle finalità per le quali è stato ricevuto. E’ vietata qualsiasi forma di riproduzione o divulgazione senza l’esplicito consenso di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di informare tempestivamente il mittente e distruggere la copia in proprio possesso.

Ciao Toto’, ho fatto questa verifica :

nella Tabella dello Shape File, ho creato due nuovi campi :

len_iv_1 : length($geometry) — > 126671,70939386162
len_iv_2 : $length — > 126721,31029232376

Definizioni:

$length
Restituisce la lunghezza di una stringa di linee. Se hai bisogno della lunghezza di un bordo di un poligono, usa invece $perimetro.
La lunghezza calcolata da questa funzione rispetta sia l’impostazione dell’ellissoide del progetto corrente che le impostazioni
dell’unità di distanza. Per esempio, se è stato impostato un ellissoide per il progetto, allora la lunghezza calcolata sarà ellissoidale,
e se non è impostato alcun ellissoide, allora la lunghezza calcolata sarà planimetrica.

length($geometry)
Calcola la lunghezza di un oggetto geometria linea. I calcoli sono sempre planimetrici nel Sistema di Riferimento Spaziale (SRS) di questa geometria,
e le unità della lunghezza restituita corrisponderanno alle unità dell’SR. Questo differisce dai calcoli eseguiti dalla funzione $length,
che eseguirà calcoli ellissoidali basati sulle impostazioni di ellissoide e unità di distanza del progetto.

Mentre con le espressioni, si hanno i seguenti risultati :

aggregate(
layer:=‘testOne’,
aggregate:=‘array_agg’,
expression:=$length) [0]

126671,70939386162

aggregate(
layer:=‘testOne’,
aggregate:=‘array_agg’,
expression:=length($geometry))

126671,70939386162

Caricando il file in DB Sqlite :

SELECT ST_Length(geometry) AS length
FROM testOne;

il risultato è : 126671,70939386162

Quindi la differenza del valore restituito, sta applicando la funzione $length nello shape .

Ivano

···

Ing. Salvatore Fiandaca
mobile.:+39 327.493.8955
m: pigrecoinfinito@gmail.com
C.F.: FNDSVT71E29Z103G
P.IVA: 06597870820
membro QGIS Italia - http://qgis.it/
socio GFOSS.it - http://gfoss.it/
member OSGeo - https://www.osgeo.org/member/fiandaca/
blog:**** https://pigrecoinfinito.com/
FB: Co-admin - https://www.facebook.com/qgis.it/****
TW: ****https://twitter.com/totofiandaca

43°51’0.54"N 10°34’27.62"E - EPSG:4326

“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?”
R. Stallman

Questo documento, allegati inclusi, contiene informazioni di proprietà di FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario in relazione alle finalità per le quali è stato ricevuto. E’ vietata qualsiasi forma di riproduzione o divulgazione senza l’esplicito consenso di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di informare tempestivamente il mittente e distruggere la copia in proprio possesso.

ciao a tutti,
[…]
Per esempio, se è stato impostato un ellissoide per il progetto, allora la lunghezza calcolata sarà ellissoidale,

[…]

ovviamente la lunghezza è ellissoidica e non ellissoidale.
ho corretto la traduzione.

s.

···

Ing. Salvatore Fiandaca
mobile.:+39 327.493.8955
m: pigrecoinfinito@gmail.com
C.F.: FNDSVT71E29Z103G
P.IVA: 06597870820
membro QGIS Italia - http://qgis.it/
socio GFOSS.it - http://gfoss.it/
member OSGeo - https://www.osgeo.org/member/fiandaca/
blog:**** https://pigrecoinfinito.com/
FB: Co-admin - https://www.facebook.com/qgis.it/****
TW: ****https://twitter.com/totofiandaca

43°51’0.54"N 10°34’27.62"E - EPSG:4326

“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?”
R. Stallman

Questo documento, allegati inclusi, contiene informazioni di proprietà di FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario in relazione alle finalità per le quali è stato ricevuto. E’ vietata qualsiasi forma di riproduzione o divulgazione senza l’esplicito consenso di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di informare tempestivamente il mittente e distruggere la copia in proprio possesso.