[Gfoss] Spatialite - calcolo lunghezza 3d

ciao a tutti,
gentilmente volevo sapere se è stata implementata la funzione per calcolare la lunghezza 3d delle polilinee, almeno nelle ultime versioni...
Ho provato con spatialite 4.4 scrivendo:

"SELECT
ST_3DLength(GeomFromText('LINESTRING(0 0 0,1 1 1)'))"
ma ottengo NULL.

Dove sbaglio?
grazie!

Ho fatto un rapida prova con spatialite 4.4 e 4.5, stesso risultato:

SELECT
ST_3DLength(GeomFromText('LINESTRINGZ(0 0 0,1 1 1)'))
risultato:
1.732051

NB: devi uisare LINESTRINGZ

saluti

Il giorno 19 gennaio 2018 12:32, <falcerisimone@inwind.it> ha scritto:

ciao a tutti,
gentilmente volevo sapere se è stata implementata la funzione per
calcolare la lunghezza 3d delle polilinee, almeno nelle ultime versioni...
Ho provato con spatialite 4.4 scrivendo:

"SELECT
ST_3DLength(GeomFromText('LINESTRING(0 0 0,1 1 1)'))"
ma ottengo NULL.

Dove sbaglio?
grazie!
_______________________________________________
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.
796 iscritti al 28/12/2017

--
*Ing. Salvatore Fiandaca*
*mobile*.:+39 327.493.8955
*m*: *pigrecoinfinito@gmail.com <pigrecoinfinito@gmail.com>*
*C.F*.: FNDSVT71E29Z103G
*P.IVA*: 06597870820
*membro QGIS Italia - http://qgis.it/*
*socio GFOSS.it - *http://gfoss.it/
*blog:*
* https://pigrecoinfinito.wordpress.com/
<https://pigrecoinfinito.wordpress.com/&gt; FB: Co-admin
- https://www.facebook.com/qgis.it/**
<https://www.facebook.com/qgis.it/&gt; *
*FB: moderatore - **https://www.facebook.com/groups/GisItalia/
<https://www.facebook.com/groups/GisItalia/&gt;\*\*
<https://www.facebook.com/groups/GisItalia/&gt; *
*TW: <http://goog_95411464>**https://twitter.com/totofiandaca
<https://twitter.com/totofiandaca&gt;\*

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.

On Fri, 19 Jan 2018 13:15:57 +0100, Totò Fiandaca wrote:

Ho fatto un rapida prova con spatialite 4.4 e 4.5, stesso risultato:

la ST_3DLength() richiede il supporto della libreria librttopo,
e quindi e' disponibile solo sulle versioni piu' recenti
(appunto: 4.4 o 4.5)

SELECT
ST_3DLength(GeomFromText('LINESTRINGZ(0 0 0,1 1 1)'))
risultato:
1.732051

NB: devi uisare LINESTRINGZ

forse qua e' opportuno puntualizzare: a differenza di
PostGIS, SpatiaLite segue pedantemente le specifiche OGC,
e queste prevedono che nelle espressioni WKT il tipo
della geometria deve anche dichiarare esplicitamente
le dimensioni supportate.
n.b.: l'anomalia di PostGIS e' largamente giustificata
dal fatto che e' nato prima che OGC formalizzasse
definitvamente le specifiche per il WKT.

giusto alcuni esempi banali:

2D (XY)
-------------------
ST_GeomFromText('LINESTRING(0 0,1 1)')

3D (XYZ)
-------------------
ST_GeomFromText('LINESTRING Z(0 0 0,1 1 1)')

2D + misura (XYM)
-------------------
ST_GeomFromText('LINESTRING M(0 0 0,1 1 1)')

3D + misura (XYZM)
-------------------
ST_GeomFromText('LINESTRING ZM(0 0 0 0,1 1 1 1)')

naturalmente la regola si applica a tutti i tipi
geometrici (POINT, POLYGON etc)

n.b. secondo le specifiche OGC lo stile corretto
e' quello che vede uno spazio tra il nome del
tipo e le dimensioni, quindi p.es. "POLYGON ZM";
spatialite e' piu' tollerante, ed ammette un
numero arbitrario di spazi (anche nessuno) tra
i due elementi: "POLYGONZM" o "POLYGON ZM"
sono perfetti sinonimi.

ovviamente se c'e' conflitto tra la dichiarazione
tipo+dimensioni ed il numero delle coordinate
effettivamente presenti il parsing dell'espressione
WKT fallira' tornando un bel NULL. esempio:

SELECT ST_GeomFromText('LINESTRING(0 0 0,1 1 1)');
-----------
NULL

ciao Sandro