[Gfoss] Problema con ST_Distance_Sphere in PostGIS

Probabilmente mi sfugge qualcosa, ma in PostGIS ottengo questo
risultato:

SELECT ST_Distance_Sphere(
    ST_PointFromText('POINT(1626216 4855458)', 3003),
    ST_PointFromText('POINT(1626216 4855459)', 3003)
);
st_distance_sphere
--------------------
   111194.697710286

considerato che EPSG:3003 esprime le coordinate in metri,
considerato che i due POINT differiscono di un solo metro sulla Y

Come mai la distanza risulta 111 km?

È vero che il manuale PostGIS indica ST_Distance_Sphere come
"less accurate", ma mi pare che si esageri!

--
Niccolo Rigacci
Firenze - Italy

Il giovedì 19 novembre 2009, Niccolo Rigacci ha scritto:

Probabilmente mi sfugge qualcosa, ma in PostGIS ottengo questo
risultato:

SELECT ST_Distance_Sphere(
    ST_PointFromText('POINT(1626216 4855458)', 3003),
    ST_PointFromText('POINT(1626216 4855459)', 3003)
);
st_distance_sphere
--------------------
   111194.697710286

considerato che EPSG:3003 esprime le coordinate in metri,
considerato che i due POINT differiscono di un solo metro sulla Y

Come mai la distanza risulta 111 km?

111 km è quasi esattamente un DD....

--
Alessandro Pasotti
itOpen - "Open Solutions for the Net Age"
w3: www.itopen.it
Linux User# 167502

On Thu, 19 Nov 2009 16:14:58 +0100, Niccolo Rigacci wrote

Probabilmente mi sfugge qualcosa, ma in PostGIS ottengo questo
risultato:

SELECT ST_Distance_Sphere(
    ST_PointFromText('POINT(1626216 4855458)', 3003),
    ST_PointFromText('POINT(1626216 4855459)', 3003)
);
st_distance_sphere
--------------------
   111194.697710286

considerato che EPSG:3003 esprime le coordinate in metri,
considerato che i due POINT differiscono di un solo metro sulla Y

Come mai la distanza risulta 111 km?

È vero che il manuale PostGIS indica ST_Distance_Sphere come
"less accurate", ma mi pare che si esageri!

Ciao Niccolo,
a naso mi puzza tanto che ST_Distance_Sphere() si
aspetti coordinate geografiche (lat/long)

guarda caso 111,111111 km corrispondono esattamente
ad un grado sul cerchio massimo [equatore] :slight_smile:

saluti,
Sandro

dalla documentazione:

This function currently does not look at the SRID of a geometry and
will always assume its in WGS 84 long lat. Prior versions of this
function only support points.

quindi restituisce esattamente la distanza di un grado espresso in metri.

Ciao,

Stefano

Il 19 novembre 2009 16.20, <a.furieri@lqt.it> ha scritto:

On Thu, 19 Nov 2009 16:14:58 +0100, Niccolo Rigacci wrote

Probabilmente mi sfugge qualcosa, ma in PostGIS ottengo questo
risultato:

SELECT ST_Distance_Sphere(
ST_PointFromText('POINT(1626216 4855458)', 3003),
ST_PointFromText('POINT(1626216 4855459)', 3003)
);
st_distance_sphere
--------------------
111194.697710286

considerato che EPSG:3003 esprime le coordinate in metri,
considerato che i due POINT differiscono di un solo metro sulla Y

Come mai la distanza risulta 111 km?

È vero che il manuale PostGIS indica ST_Distance_Sphere come
"less accurate", ma mi pare che si esageri!

Ciao Niccolo,
a naso mi puzza tanto che ST_Distance_Sphere() si
aspetti coordinate geografiche (lat/long)

guarda caso 111,111111 km corrispondono esattamente
ad un grado sul cerchio massimo [equatore] :slight_smile:

saluti,
Sandro

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@faunalia.it
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.

On Thu, Nov 19, 2009 at 04:22:38PM +0100, Stefano Salvador wrote:

dalla documentazione:

This function currently does not look at the SRID of a geometry and
will always assume its in WGS 84 long lat. Prior versions of this
function only support points.

Ecco, infatti! Mi era sfuggita la nota!

Però on-line io leggo "WGS 80", è un refuso?
http://postgis.refractions.net/docs/ST_Distance_Sphere.html

Grazie a tutti, rapidissimi e attenti.

Ecco il risultato corretto:

SELECT ST_Distance_Sphere(
    ST_Transform(ST_PointFromText('POINT(1626216 4855458)', 3003), 4326),
    ST_Transform(ST_PointFromText('POINT(1626216 4855459)', 3003), 4326)
);
st_distance_sphere
--------------------
    1.0009418016345

--
Niccolo Rigacci
Firenze - Italy