Buongiorno,
ho un problema con due punti 3d con quote differenti, qualcuno sa come si fa a calcolare l'angolo zenitale con spatialite, o postgis?
L' azimuth è select degrees(st_azimuth(geoA, geoB)) as 'azimuth';
Grazie!
Buongiorno,
ho un problema con due punti 3d con quote differenti, qualcuno sa come si fa a calcolare l'angolo zenitale con spatialite, o postgis?
L' azimuth è select degrees(st_azimuth(geoA, geoB)) as 'azimuth';
Grazie!
On Wed, 30 Jan 2019 11:40:38 +0100 (CET), falcerisimone@inwind.it wrote:
Buongiorno,
ho un problema con due punti 3d con quote differenti, qualcuno sa
come si fa a calcolare l'angolo zenitale con spatialite, o postgis?L' azimuth è select degrees(st_azimuth(geoA, geoB)) as 'azimuth';
Simone,
l'implementazione di SpatiaLite per ST_Azimuth dovrebbe essere
esattamente la medesima come per PostGIS, visto che il calcolo
vero e proprio lo fanno la lwgeom (per PostGis) e la librttopo
(per splite) che e' semplicemente un porting della lwgeom.
per quanto vedo dai sorgenti funziona solo per punti 2D, il
caso 3D non mi pare che venga mai preso in considerazione.
spero di sbagliarmi, ma non mi pare che quanto chiedi rientri
tra le opzioni supportate.
ciao Sandro
Alla fine ho risolto così con spatialite NEXTGEN, facendo anche un confronto
tra le varie formule, con la bellezza del calcolo 3d =)
--I calcoli geodetici vogliono solo epsg=4326 altrimenti non funzionano!
--CALCOLA RELAZIONE TRA DUE PUNTI: (epsg=4326 WGS84, epsg=25832
ETRS89/UTM_zone_32N)
select
st_distance(st_transform(geoA, 25832), st_transform(geoB, 25832)) as
'distanza_2d',
st_3ddistance(st_transform(geoA, 25832), st_transform(geoB, 25832)) as
'distanza_3d',
degrees(st_azimuth(st_transform(geoA, 25832), st_transform(geoB, 25832))) as
'azimuth',
degrees(asin((st_z(geoA)-st_z(geoB))/st_3ddistance(st_transform(geoA,
25832), st_transform(geoB, 25832)))) as 'angolo_zenitale',
geodesicarclength(geoA, geoB) as 'arcodistanza',
geodesicchordlength(geoA, geoB) as 'corda',
degrees(geodesiccentralangle(geoA, geoB)) as 'angolo_centrale',
geodesicarcheight(geoA, geoB) as 'h_arco'
from
(select
st_geomfromtext('POINTZ(11.040796 46.139230 2071)', 4326) as geoA,
st_geomfromtext('POINTZ(11.160461 46.195844 727.5)', 4326) as geoB);
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
On Mon, 4 Feb 2019 04:13:26 -0700 (MST), Falz wrote:
Alla fine ho risolto così con spatialite NEXTGEN, facendo anche un confronto
tra le varie formule, con la bellezza del calcolo 3d =)--I calcoli geodetici vogliono solo epsg=4326 altrimenti non funzionano!
--CALCOLA RELAZIONE TRA DUE PUNTI: (epsg=4326 WGS84, epsg=25832
ETRS89/UTM_zone_32N)select
st_distance(st_transform(geoA, 25832), st_transform(geoB, 25832)) as
'distanza_2d',
st_3ddistance(st_transform(geoA, 25832), st_transform(geoB, 25832)) as
'distanza_3d',
degrees(st_azimuth(st_transform(geoA, 25832), st_transform(geoB, 25832))) as
'azimuth',
degrees(asin((st_z(geoA)-st_z(geoB))/st_3ddistance(st_transform(geoA,
25832), st_transform(geoB, 25832)))) as 'angolo_zenitale',
geodesicarclength(geoA, geoB) as 'arcodistanza',
geodesicchordlength(geoA, geoB) as 'corda',
degrees(geodesiccentralangle(geoA, geoB)) as 'angolo_centrale',
geodesicarcheight(geoA, geoB) as 'h_arco'
from
(select
st_geomfromtext('POINTZ(11.040796 46.139230 2071)', 4326) as geoA,
st_geomfromtext('POINTZ(11.160461 46.195844 727.5)', 4326) as geoB);
Simone,
hai scritto l'elogio perfetto dello Spatial SQL
quando hai uno strumento di calcolo e di analisi cosi' flessibile
e potente, non e' mai un problema insormontabile se non trovi la
soluzione pre-cotta che ti serve pronta all'uso.
basta un pizzico di fantasia e puoi sempre provare a scrivertela
da solo appoggiandoti alle tantissime funzioni SQL disponibili.
direi che il tuo e' un bel caso da manuale.
ciao Sandro