[postgis-users] Issue with spatial query (PostGIS, ST_DWithin, SRID, transform)

Mulone andrea.ballatore at ucd.ie
Fri Jul 24 09:48:50 PDT 2009


If I execute: 

SELECT distance(GeomFromEWKT('SRID=4326;POINT(53.283 -6.195 0)'), way),*
FROM planet_osm_point WHERE osm_id = 47204752

the expected distance is about 100-150 meters, and I get 
84.1155775105245, which is in decimal degrees, but what does that mean?
Degrees from what?

If I re-project everything in another SRID, I get the following values,
which aren't less mysterious to me:
SRID: 32662 ===> distance: 9363703.25625372
SRID: 26986 ====> distance: 9366636.40006539

Any ideas?

Mulone



Mulone wrote:
> 
> Hi Pedro,
> Thanks for your reply.
> 
> I've tried to re-project everything with 
> 
> SELECT osm_id FROM planet_osm_polygon WHERE
> ST_DWithin(ST_transform(way,2163),ST_transform(GeomFromText('POINT(53.30124
> -6.21804 0)', 4326),2163), 100);
> 
> 
> But it doesn't return anything.
> 
> That's my scenario: there is just one polygon within 100m, and I'm
> actually able to get that object if I enter 84.16 as a distance. Is there
> a logical explanation to this? With such a huge distance I would expect
> postigs to return everything.
> 
> 
> Pedro Doria Meunier wrote:
>> 
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>> 
>> Mulone,
>> 
>> Openstreetmap uses a Mercator projection.
>> When you specify '100' you're actually saying 'give me everything
>> within 100 *degrees*'
>> 
>> You should reproject your data to the desired/applicable projection by
>> means of transform();
>> 
>> HTH,
>> 
>> Pedro Doria Meunier
>> GSM: +351 96 17 20 188
>> Skype: pdoriam
>>  
>> 
>> 
>> 
>> Mulone wrote:
>>> [apologies for cross posting]
>>>
>>> Hello,
>>> I'm running some queries on a PostGIS db containing OSM data loaded with
>>> osm2pgsql.
>>> I want to get the geometries within a certain distance from a point.
>>> I've
>>> written this query:
>>>
>>> SELECT osm_id FROM planet_osm_point WHERE
>>> ST_DWithin(way,geomfromtext('POINT(53.30124 -6.21804 0)', 4326), 100);
>>>
>>> where 100 is meant to be 100 meters. This query returns all the objects
>>> in
>>> the table, and running it with different distances I found a sort of
>>> threshold around 84.16, where I start getting less objects.
>>>
>>> I thought it was an issue related to the system reference, so I tried
>>> with
>>> this conversion:
>>>
>>> SELECT osm_id FROM planet_osm_point WHERE
>>> ST_DWithin(transform(way,2163),transform(geomfromtext('POINT(53.30124
>>> -6.21804 0)', 4326),2163), 5740000);
>>>
>>> The threshold in this case seems to be about 5740000, which is
>> obviously not
>>> meters.
>>> How can I figure out the units DWithin is working in?
>>> Besides, I doubt this is the best way to do what I want, any better
>>> ideas?
>>>
>>> Thanks in advance!
>>> Mulone
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v1.4.7 (GNU/Linux)
>> Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org
>> 
>> iD8DBQFKaK5G2FH5GXCfxAsRAiNvAJwND0pmRWNaODnJ0foW9uraaS1YnACfbdIX
>> +de0ZbKmALUpjlFbzbO/rnk=
>> =eWY7
>> -----END PGP SIGNATURE-----
>> 
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Issue-with-spatial-query-%28PostGIS%2C-ST_DWithin%2C-SRID%2C-transform%29-tp24631779p24647972.html
Sent from the PostGIS - User mailing list archive at Nabble.com.




More information about the postgis-users mailing list