You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#1 2010-07-11 08:25:38

t7l
Member
Registered: 2010-06-15
Posts: 5

Umkreissuche mit PostGIS

Hallo zusammen!

Ich würde gerne mit PostGIS eine Umkreissuche realisieren.
Dazu nehme ich beispielsweise einen als Restaurant getaggten Punkt aus Köln und möchte Objekt in einem Umkreis von 500m zurückgeliefert bekommen. In den PostGIS-Doku habe ich gelesen, dass das wohl mit ST-DWithin geht (im Teil über ST_Buffer wird auch explizit darauf hingewiesen, dass ST_DWithin dafür geeignet wäre), nur habe ich es bisher nicht geschafft das als PostGIS-Anfrage zu formulieren.
Hat dies vielleicht schon jemand gemacht und kann mir auf die Sprünge helfen?

Vielen Dank schon mal!
Tobi

Offline

#2 2011-05-10 09:21:35

tiototo
Member
From: 10557 Berlin
Registered: 2010-09-13
Posts: 214
Website

Re: Umkreissuche mit PostGIS

Bitteschön:

select b.osm_id, b.name, st_x(b.way) as lon, st_y(b.way) as lat from planet_osm_point as a, planet_osm_point as b where a.osm_id=262818009 and ST_DWithin(a.way, b.way, 500);

Alle Punkte 500 Meter rund um die Weltzeituhr.


Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)

Offline

#3 2013-06-26 22:51:04

manu206
Member
Registered: 2012-05-03
Posts: 12

Re: Umkreissuche mit PostGIS

Hast du hierfür noch eine Abfrage, welche statt 500 Meter alle POIs innerhalb eines Rechteckes oder Quadrats anzieht?
Ich muss alle Restaurants z.b. innerhalb einer Box mit definierten latmax, latmin, lonmax und lonmin bekommen.

Wäre super .. auch wenn der Beitrag etwas alt ist roll

Offline

#4 2013-06-26 23:42:23

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: Umkreissuche mit PostGIS

manu206 wrote:

Hast du hierfür noch eine Abfrage, welche statt 500 Meter alle POIs innerhalb eines Rechteckes oder Quadrats anzieht?
Ich muss alle Restaurants z.b. innerhalb einer Box mit definierten latmax, latmin, lonmax und lonmin bekommen.

Wäre super .. auch wenn der Beitrag etwas alt ist roll

wofür? was willst du mit dem Ergebnis anstellen?

wenn du die gefundenen POI mit OpenLayers darstellen wolltest und dafür die POI im aktuellen Browserfenster sucht, gibt es dafür ganz einfache Methoden. OpenLayers.Strategy.BBOX als Stichwort.

wenn nicht, hast du Pech gehabt musst du selber rechnen.

Gruss
walter

Offline

#5 2013-06-27 00:06:02

woodpeck
Member
Registered: 2009-12-02
Posts: 1,210

Re: Umkreissuche mit PostGIS

wambacher wrote:
manu206 wrote:

Hast du hierfür noch eine Abfrage, welche statt 500 Meter alle POIs innerhalb eines Rechteckes oder Quadrats anzieht?

wenn du die gefundenen POI mit OpenLayers darstellen wolltest und dafür die POI im aktuellen Browserfenster sucht, gibt es dafür ganz einfache Methoden. OpenLayers.Strategy.BBOX als Stichwort.

Naja, aber das OpenLayers fragt ja nicht direkt die Datenbank ab - die BBOX-Strategie generiert ja bloss eine Abfrage, und wie man die Daten dazu dann aus der PostGIS zusammensucht, das muss man immer noch selber machen (oder halt einen fertigen WFS-Server nehmen oder sowas). Oder seh ich das falsch?

Der passende Query waere zumindest einfach ein

SELECT name, st_x(way) as lon, st_y(way) as lat
FROM planet_osm_point
WHERE way && st_makebox2d(st_point(lonmin,latmin),st_point(lonmax,latmax))

wobei es je nach Version von PostGIS sein kann, dass man noch ein st_setsrid(..., 4326) um das makebox2d setzen muss, und wenn man eine Datenbank in Google Mercator hat, dann naturlich noch ein st_transform(..., 3857) drumrum und wieder zurueck beim st_x/st_y.

Bye
Frederik

Offline

#6 2013-06-27 07:04:31

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: Umkreissuche mit PostGIS

woodpeck wrote:

Naja, aber das OpenLayers fragt ja nicht direkt die Datenbank ab - die BBOX-Strategie generiert ja bloss eine Abfrage, und wie man die Daten dazu dann aus der PostGIS zusammensucht, das muss man immer noch selber machen (oder halt einen fertigen WFS-Server nehmen oder sowas). Oder seh ich das falsch?

Stimmt! Ich hatte BBOX mit CLUSTER verwechselt. Das wird ja auf dem Client gemacht. War halt ein bisserl spät.
So, wie du es geschrieben hast, mach ich es natürlich selber auch.

Gruss
walter

Offline

#7 2013-06-27 22:32:45

manu206
Member
Registered: 2012-05-03
Posts: 12

Re: Umkreissuche mit PostGIS

Also ich muss schon sagen ihr habt es echt drauf wink
Das hat mir jetzt eine ganze Menge Einarbeitungszeit erspart. Vielen Dank!

Ich habe das ganze nun mit folgendem Statement hinbekommen:

SELECT name, ST_Y(ST_Transform(way, 4326)) AS lat, ST_X(ST_Transform(way, 4326)) AS long 
FROM planet_osm_point
WHERE ST_Transform(way, 4326) && st_makebox2d(st_point(lonmin,latmin),st_point(lonmax,latmax))

Grüße
Manuel

Last edited by manu206 (2013-06-27 22:33:19)

Offline

Board footer

Powered by FluxBB