I'm trying to write a query that will return all OSM ways which are contained within a bounding box of min/max gps coordinates.
I get these cooridinates from the greater london bounding box on http://wiki.openstreetmap.org/wiki/Bounding_Box
From googling I have this query, but it doesn't return any results:
SELECT planet_osm_roads.* FROM planet_osm_roads WHERE ST_Contains( ST_SetSRID( ST_MakeBox2D( ST_Point(0.3340155, 51.2867602), ST_Point(-0.5103751, 51.6918741) ), 4326 ), planet_osm_roads.way ) Any idea what I'm doing wrong?
Update
So I've swapped the points around, tested that the polygon created is what I expect by getting the geometry as geojson and visualising it on geojson.io - it looks fine, however I still get 0 results and it happens basically instantly (which seems weird). The table is definitely fully populated! I also changed to use ST_Intersects but that hasn't made it return anything either
SELECT planet_osm_roads.* FROM planet_osm_roads WHERE ST_Intersects( planet_osm_roads.way, ST_SetSRID( ST_MakeBox2D( ST_Point(0.3340155, 51.2867602), ST_Point(-0.5103751, 51.6918741) ), 4326 ) ) It gives me this GeoJSON when I SELECT ST_AsGeoJSON
{ "type": "Polygon", "coordinates": [ [ [-0.5103751, 51.2867602], [-0.5103751, 51.6918741], [0.3340155, 51.6918741], [0.3340155, 51.2867602], [-0.5103751, 51.2867602] ] ] } Which as I said, looks correct on geojson.io :)
Update #2
I've copied a query from another SO question that gets the closest point on a road or something, with a point in London, it returns some results roughly as I expect
SELECT osm_id, highway, name, ref, ST_X(ST_ClosestPoint(ST_Transform(r.way, 4326), point.geom)), ST_Y(ST_ClosestPoint(ST_Transform(r.way, 4326), point.geom)), ST_Distance_Sphere(ST_ClosestPoint(ST_Transform(r.way, 4326), point.geom), point.geom) FROM planet_osm_roads r, (Select ST_SetSRID(ST_MakePoint(-0.1367229, 51.5377733), 4326) as geom) point ORDER BY 7 ASC LIMIT 10; returns
41383228;"trunk";"Camden Street";"A400";-0.137183850111055;51.5373791549638;54.195918203 253353304;"primary";"Royal College Street";"A5202";-0.13568782069246;51.538616921758;118.002625807 17513372;"primary";"Royal College Street";"A5202";-0.134746843460286;51.5374616146768;140.996741591 166369355;"primary";"Royal College Street";"A5202";-0.136110935219222;51.5391336013284;157.068830304 253352352;"primary";"Royal College Street";"A5202";-0.136578148998492;51.5397000983131;214.484260552 6247747;"primary";"Pratt Street";"A503";-0.140021211819466;51.5376420920654;228.588127843 211950233;"primary";"Bayham Street";"A503";-0.140021211819466;51.5376420920654;228.588127843 253350830;"primary";"St. Pancras Way";"A5202";-0.135177855133607;51.5396274637255;232.22039167 11266300;"primary";"Royal College Street";"A5202";-0.136734905015571;51.5398841985372;234.722999647 253350834;"primary";"St Pancras Way";"A5202";-0.135399101773244;51.5397738652997;240.557396864 The point is actually closest to Mandela Street which runs next to Camden Street, but I'll worry about that after I have my initial query working.
My data came from download england osm data and running this command:
osm2pgsql --create --database england_osm -C 6144 ~/Downloads/england-latest.osm 
select st_astext(st_makebox2d(st_makepoint(50,50), st_makepoint(5,5)) );