Re: Openstreetmap Objektabfrage programmieren für den eigenen Server
Geschrieben von street-sytle (Gast) am 24. Juni 2019 11:18:01: [flux]
Als Antwort auf:
Openstreetmap Objektabfrage programmieren für den eigenen Server
geschrieben von
street-sytle
(Gast)
am
16. Juni 2019 22:16:
maxbe wrote:
Ich habe OSM als Datenbank. Was kann ich nun machen?
Fertigen Quellcode hab ich nicht, wüsste auch nicht, wo einer rumliegt. Ich stells mir auch im Detail dann schwierig vor...
Wennst wirklich so tief einsteigen willst, hätte ich hier ein paar Codeschnipsel, aber zwischen den Abfragen "was liegt in der Nähe?" und der Aussage "diese Koordinate liegt in der Fußgängerzone" ist es ein weiter weg, zumal die meisten Läden ja eher am Rand der Fußgängerzone liegen, in der Regel durch eine Mauer davon getrennt... Die Abfragen würde ich auch nicht bei jedem Klick machen, sondern einmal pro Laden und das Ergebnis dann in die Datenbank mit den Läden schreiben.
Als Einstieg würde ich mich mal mit der Datenbank beschäftigen, damit man mal sieht, wie das Zeug da rumliegt. Ein paar Abfragen, was in der Nähe ist...
Z.B. die nächsten Straßen neben der Koordinate (11.5773E 48.1429N), was eine willkürlich geklickte Apotheke ist:
select␣osm_id,name,highway,st_distance(way,(st_transform(ST_SetSRID(ST_Point(11.5773,48.1429),4326),3857)))␣as␣D␣␣from␣planet_osm_line␣where␣highway␣is␣not␣null␣and␣way␣&&␣st_expand(st_transform(ST_SetSRID(ST_Point(11.5773,48.1429),4326),3857),100)␣order␣by␣D␣limit␣15; osm_id␣␣␣|␣␣␣␣␣␣name␣␣␣␣␣␣␣|␣highway␣␣|␣␣␣␣␣␣␣␣d -----------+-----------------+----------+------------------ 160015857␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣steps␣␣␣␣|␣20.6111222899325 259225347␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣footway␣␣|␣20.6553013969454 124731780␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣service␣␣|␣22.2407377921109 259225354␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣footway␣␣|␣23.3234748002828 100024916␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣footway␣␣|␣23.3234748002828 259225358␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣steps␣␣␣␣|␣24.3270956351648 124731779␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣footway␣␣|␣24.4010027396479 259225384␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣footway␣␣|␣25.5356156859112 383062077␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣footway␣␣|␣25.6348916126084 124731785␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣service␣␣|␣26.1510713497584 93192050␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣cycleway␣|␣27.0560931013162 160015867␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣footway␣␣|␣28.3127129175133 259225366␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣footway␣␣|␣28.3127129175133 380407135␣|␣Brienner␣Straße␣|␣tertiary␣|␣␣37.283306230963 259131001␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣footway␣␣|␣␣38.581421159909Du siehst die erste Tücke: Die nächsten paar Straßen sind uninteressant für deine Frage.
Das gleiche mit den Flächen in der Nähe:
select␣osm_id,name,highway,st_distance(way,(st_transform(ST_SetSRID(ST_Point(11.5773,48.1429),4326),3857)))␣as␣D␣␣from␣planet_osm_polygon␣where␣highway␣is␣not␣null␣and␣way␣&&␣st_expand(st_transform(ST_SetSRID(ST_Point(11.5773,48.1429),4326),3857),100)␣order␣by␣D␣limit␣15; osm_id␣␣␣|␣␣␣␣␣␣␣␣␣␣␣␣␣name␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣highway␣␣␣|␣␣␣␣␣␣␣␣d -----------+------------------------------+------------+------------------ -4867157␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣pedestrian␣|␣13.9424240990391 373507751␣|␣Odeonsplatz␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣footway␣␣␣␣|␣33.8960242000467 259225398␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣corridor␣␣␣|␣35.0847037484837 -4777267␣|␣Platz␣vor␣der␣Feldherrnhalle␣|␣pedestrian␣|␣44.1651891044458 338648411␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣corridor␣␣␣|␣48.6153744550434 370023036␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣elevator␣␣␣|␣55.7213597425854 370023039␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣elevator␣␣␣|␣55.7279320129047 370023038␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣elevator␣␣␣|␣55.7562136041321 -4867158␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣pedestrian␣|␣␣66.249728742952 259225400␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣corridor␣␣␣|␣71.7758202509272 3812120␣|␣Wittelsbacherplatz␣␣␣␣␣␣␣␣␣␣␣|␣pedestrian␣|␣100.633779838114 370023037␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣elevator␣␣␣|␣111.794196943487 338648414␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣elevator␣␣␣|␣␣111.84608657919Flächen, in denen dieser Punkt liegt:
select␣osm_id,name,highway,landuse,amenity,boundary␣from␣planet_osm_polygon␣where␣st_contains(way,st_transform(ST_SetSRID(ST_Point(11.5773,48.1429),4326),3857)); osm_id␣␣␣|␣␣␣␣␣␣␣␣␣␣␣␣name␣␣␣␣␣␣␣␣␣␣␣␣|␣highway␣|␣␣␣landuse␣␣␣|␣amenity␣|␣␣␣␣␣boundary -----------+----------------------------+---------+-------------+---------+------------------- -4016166␣|␣Umweltzone␣München␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣low_emission_zone -56388␣|␣Stadtbezirk␣03␣Maxvorstadt␣|␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣administrative -62428␣|␣München␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣administrative -66090␣|␣Bezirksteil␣Universität␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣administrative -1100796␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣postal_code 259759831␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣residential␣|␣␣␣␣␣␣␣␣␣| -3146360␣|␣München-Nord␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣political -422653␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣| -2145274␣|␣Oberbayern␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣administrative -415051␣|␣Südbayern␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣region 25507206␣|␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣␣␣␣␣|␣␣␣␣␣␣␣␣␣|
Vielen Dank. Das sind soweit die richtigen Daten, bzw. der richtige Weg.