[postgis-users] Problems with st_distance
Nicklas Avén
nicklas.aven at jordogskog.no
Tue Mar 13 04:48:01 PDT 2012
The geography type distance calculations gives answers in meters from
unprojected data (4326).
I see no erason to belive that the postgis answer is wrong, especially
not when Stuart says he knows the distance is 1800 meters and he gets
1179.61 meters from PostGIS.
I don't know anything about that draft-logic site but I would definitly
rely more on the PostGIS answer.
The measurments on Bing, Google maps and so on will be wrong since the
webmercator projection 913900 is a flattened globe. How could it be
correct?
/Nicklas
On Tue, 2012-03-13 at 07:37 -0400, Charles Galpin wrote:
> The distance should be in the projection units, which for 4326 is
> decimal degrees, and if you want meters you'll need to convert the
> results to meters.
>
>
> But first, I suspect your data is not in 4326 then if you get 1179.
> Make sure you are using the SRID when inserting them
>
>
> > update address set geog=ST_GeographyFromText('POINT('||
> > lon||' '||lat||')',4326) where id=?;
> Also see
> http://postgis.refractions.net/docs/ST_Distance.html
> hth
> charles
>
> On Mar 13, 2012, at 2:58 AM, Stuart Guthrie wrote:
>
> > Could it be returning a distance in decimal miles? I'm out by around
> > 1.6 - 1.6km = 1mile?
> >
> > On Tue, Mar 13, 2012 at 5:43 PM, Stuart Guthrie
> > <stuartguthrie at gmail.com> wrote:
> > OK, I'm a newbie to postgis but an old-timer with open
> > source in general.
> >
> > Sorry to bother everyone but this problem is driving me a
> > little nuts.
> >
> > I've bought the 'postgis in action' book and now I think I
> > still know nothing.
> >
> > I'm trying to store long lats and do queries on them to
> > establish distance and use that for reporting.
> >
> > I'm using this to update the table 'address'
> >
> > update address set geog=ST_GeographyFromText('POINT('||
> > lon||' '||lat||')') where id=?;
> >
> > the address table field 'geog' has this definition:
> >
> > geog geography(Point,4326)
> >
> > When I compare two addresses that I know are around 1800m
> > apart I get this:
> >
> > select a.addressline2, a.suburb, ST_Y(a.geog::geometry),
> > ST_X(a.geog::geometry),
> > b.addressline2,b.suburb,ST_Y(b.geog::geometry),
> > ST_X(b.geog::geometry), ST_distance(a.geog,b.geog ) from
> > address a join address b on b.id=41491 where a.id=1238 ;
> >
> > addressline2 | suburb | st_y | st_x |
> > addressline2 | suburb | st_y | st_x |
> > st_distance
> > ---------------+--------+-------------+-------------+----------------+-------------+-------------+-------------+------------------
> > 140 Sussex St | Sydney | -33.8692429 | 151.2036312 | 1
> > Riley Street | Surry Hills | -33.8726426 | 151.2157115 |
> > 1179.61881540556
> >
> > Postgis says they are 1179.61m apart.
> >
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
More information about the postgis-users
mailing list