Keine Sorge, du machst schon alles richtig. Du hast nur zur falschen Zeit (ich war gerade online) dieses Thema angefasst
Es gibt fast immer unterschiedliche Meinungen zu einigen Sachen in OSM - und heute war ich halt in der Lage, meine Meinung mit Fakten zu untermauern. Dass die Ergebnisse so krass ausfallen würden, war mir auch nicht klar.
So ist auch mein Verständnis zu Relationen. Da ich mich mit DB-Abfragen oder der Overpass-Api noch nicht auskenne, würde ich mich über ein Beispiel zu den Geschichtsstationen freuen.
Das sieht wie eine Datenbankabfrage aus. Kannst du bitte kurz für Datenbankunkundige erklären was das ist und ob ich und wie diese Datenbankabfrage auch an die OSM-Datenbank stellen kann.
Ich will in Zukunft lieber Datenbankabfragen stellen, als Relationen dafür zumissbrauchen.
Das ist die Anfrage an eine lokal aufgesetzte DB (Postgres + GIS-Erweiterung) mit einem bestimmten Schema und Vorverarbeitung. An die OSM-Datenbank kommst man/frau nur über die API heran.
Der beste Weg ohne Datenbank ist die Nutzung der Overpass-API (Wiki-Seite). Besonders komfortabel geht das mit dem Overpass Turbo. Natürlich gibt es für die Overpass-API eine eigene Syntax (genau genommen mehrere). Die Overpass-API basiert auf einer eigenen Datenbank mit optimierter Struktur für räumliche Abfragen.
Ich habe das selbst (dort) noch nicht probiert, ich würde aber als Datenbank-Unkundiger dringendst davon abraten!
Man sollte schon etwas sql können und auch die Theorie von relationalen Datenbanken ein wenig verinnerlicht haben.
Thema Selektion, Projektion, Joins, Mengentheorie usw…
Eine kleine Anfrage kann sonst bei so einer riesigen Datenbank den ganzen Server lahmlegen oder im besten Fall einfach mal ewig vor sich hin rödeln.
Ich weiss ja nicht, was du genau vor hast, aber wenn es dir z.B. darum gehen sollte, nur etwas mehr Übersicht beim editieren zu bekommen, dann geht das mit josm auch wunderbar mit dem Filter: http://josm.openstreetmap.de/wiki/Help/Dialog/Filter
Dort kann man ziemlich gut alles ausblenden, was stört oder andersherum ausschliesslich das anzeigen lassen, was einen intereressiert.
Hat jetzt aber nicht viel mit der Datenbank zu tun (höchstens abgewandelt im kleinen Rahmen, vermutlich wird sich hinter dem Filter etwas sql-ähnliches verbergen?!).
Eine kleine Frage und schon drei total verschiedene Antworten
Hier meine:
Ja, das ist eine SQL-Abfrage “meiner” lokalen OSM-DB in einem speziellen Format (für die Profis: ein etwas erweitertes Snapshot-Schema * ), die dir so nichts bringt. Diese Abfrage sollte nur das Dilemma mit den Sammelrelationen aufzeigen - sie hilft dir bei deinem Projekt nicht weiter.
Aber: man kann solche Informationen (welcher POI liegt in welchem Stadteil?) wohl auch mit der Overpass-Api aus den Live-Daten extrahieren.
Oder: die Kollegen, die eigene Karten erstellen, benutzen dazu eine mit osm2pgsql erstelle lokale DB (osmosis-Schema), die relativ einfach mit ähnlichen SQL-Befehlen abzufragen ist.
Es hängt halt von deinem Wissen, deine Ressourcen und deinen OSM-Plänen ab. Ich würde zum Start die Overpass-Api vorschlagen.
Gruss
walter
*) ich habe in der Relationen-Tabelle noch die Spalte geom drin. Diese enthält die Geometrie der Fläche, die von dem Multipolygon gebildet wird. Etwa ähnlich den Linestrings mit negativer Id in dem osm2pgsql-Schema.
Im Wiki-Quelltext ist die verwendete Abfrage explizit aufgeführt: Finde alle Nodes, die in Dorsten liegen und das Tag historic=memorial bzw. memorial:type=stolperstein haben.
jo, hab es eben ja mehr per Zufall gefunden. Ein kleiner Satz zur Lösung könnte anderen Mappern wohl weiterhelfen.
Dass sich Wiki-Artikel manche Daten direkt aus OSM besorgen, entspricht genau meinen Vorstellungen. prima gemacht!
Ich sehe gerade in der Übersichtskarte der Geschichtsstationen: Etwas weiter nördlich werden jetzt auch weitere Denkmähler angezeigt.
Im Quellcode wurden jetzt nur explizit die Stolpersteine ausgeklammert, die nicht angezeigt werden sollen.
Kann man die Suchanfrage noch weiter verfeinern? Es sollen nur Denkmähler angezeigt werden, die in “name” ein “Dorstener Geschichte - Station*” oder so enthalten.
Gibt es wildcards? Ich kenne die overpass api (noch) nicht, habe gestern das erste mal davon gehört.
offtopic: Ich bin echt begeistert von diesem Forum! Danke für eure Hilfe!
Danke, das hat funktioniert!
[[Dorsten/Geschichtsstationen | Dorstener Geschichtsstationen]] ([overpass-turbo.eu/map.html?Q={{urlencode:area[name=“Dorsten”];node(area)[historic=memorial][“memorial:type”!=stolperstein**][“name”~“Dorstener Geschichte - Station”];**out;}} Übersichtskarte])
und Beschreibungstext “Übersichtskarte”.
Der Beschreibungstext ist frei wählbar, auch mit weiteren Leerzeichen. In der “”-Syntax wertet das Wiki stets die Zeichenfolge bis zum ersten Leerzeichen als Link aus.
Im Link sorgt die Hilfsfunktion “{{urlencode:}}” des Wikis dafür, dass die Sonderzeichen im Quelltext lesbar und im Link WWW-tauglich kodiert sind (percent encoding). Das Wiki plaziert also für den Browser den Link
Insgesamt gilt also: Das Innenleben von “{{urlencode: }}” bekommt die Abfrage, hinter “}}” und ein Leerzeichen kommt der frei wählbare Beschreibungstext, und der URL-Anfang und die sonstige Syntax sind fix.
ist im Nachherein leicht nachvollziehbar - aber ich hätte mir bestimmt einen mächtig dabei abgebrochen, da ich weder Overpass noch Wiki im Detail beherrsche.
man (ich) könnte ja im wiki mal eine Seite zu dem ganzen Thread hier anlegen. Sowas wird doch sicherlich öfters mal gebraucht, dass jemand eine Gruppierung von Objekten visuell auf der Karte zusammengefasst haben möchte. Zum einen vermeidet man dann (vielleicht) die erneute Diskussion mit den Relationen und dem Datenmüll, zum anderen kann man auf Overpass verweisen, was ich vorher auch noch nicht kannte.
Ich muss mal im wiki suchen, ob es sowas in der Art vielleicht nicht doch schon gibt