maxbe
(Max)
12
Mir fällt da nur die Entfernungssuche ein. Geht aber halt oft in die Hose, weil Gemeinden nicht kreisförmig sind…
Alle Restaurants im Umkreis von 500 Metern um den Node 22281426:
select osm_id,name from osm_point where amenity='restaurant' and distance((select way from osm_point where osm_id=22281426),way) <500;
osm_id | name
------------+------------------------
440673818 | Station Karwendelblick
440683734 | da Mamma Lucia
1102296676 | Amalfi Da Francesco
440683942 | Dubrovnik
684507857 | Platzl
1094868694 | Zur Kutsche
684507872 | Gasthof Stern
Die nächsten 5 Gemeinden um den “Gasthof Stern”:
select osm_id,name,place,distance((select way from osm_point where osm_id=684507872),way) as entfernung from osm_point where place in ('town','city','hamlet') order by entfernung limit 5;
osm_id | name | place | entfernung
-----------+--------------+--------+------------------
22281426 | Mittenwald | town | 442.255007126766
295561265 | Aschaualm | hamlet | 5677.14077266822
868310644 | Unterkirchen | hamlet | 7119.16013808037
366475858 | Kranzbach | hamlet | 7271.41171456213
868308776 | Lochlehn | hamlet | 9988.93895602725
Alles nicht wirklich schön… In besser gemappten Gegenden könntest Du noch den nächsten Node mit “addr:city” suchen, ist sicher oft besser als der Gemeinde-Node, in diesem Beispiel aber nicht, der nächste liegt 12km weit weg.
Grüße, Max
PS: Das da oben ist alles unoptimierter Code, ich weiss nicht, wie viele Restaurants da gesucht werden und wie oft die Entfernung berechnet wird. Eventuell wär noch eine vorangestellte Abfrage mit bounding box gut, damit nicht sämtliche Kneipen der Welt durchgerechnet werden um dann die im 500m-Radius auszugeben. Ich habs mal damit probiert, aber bei meiner winzigen Gegend gabs keinen Unterschied, könnte bei einer Deutschlandkarte anders sein…