Camping-Seite Version 2

Hallo OSM-Forum,

das ist eine Fortsetzung des Threads http://forum.openstreetmap.org/viewtopic.php?pid=292804.
Da sich inzwischen einiges grundlegend geändert hat, dachte ich es sei am sinnvollsten ein neues Thema zu erstellen.

Es geht dabei um folgende Seiten:
http://outscout.org
http://m.outscout.org (mobile Version)

Die Seite soll es dem Benutzer ermöglichen Campingplätze zu finden und einzutragen. Die Zielgruppe ist dabei nicht der Dauercamper oder Luxuswohnmobilbesitzer sondern eher der mit einem kleinen Zelt reisende Outdoor-Freak.

Das ist geschehen:

  • Ich habe jetzt - wie von euch vorgeschlagen - alle Nodes und Relations mit dem Tag tourism=camp_site in meine Karte eingebunden.
  • Da das jetzt knapp 30.000 Einträge sind, werden nicht mehr die Daten jetzt erst je nach Zoomstufe und Ausschnitt geladen (im Prinzip wie die BBOX). Die Cluster auf der Karte werden dabei schon auf dem Server generiert um die Datenmengen zu reduzieren.
  • Angemeldete Benutzer können einen OSM-Platz in nach OutScout “übernehmen”.
  • Im Fenster mit den Detail-Infos gibt es einen neuen Reiter “OSM”, der die passenden Daten
  • Alle Testzugänge inkl. der dazugehörigen Daten habe ich gelöscht. Ihr könnt aber natürlich einen neuen Testzugang anlegen.

Mich interessiert weiterhin ob das alles auf diversen Browsern funktioniert und ob es intuitiv zu bedienen ist.

Daran mangelt es noch
Ich habe mir mal die Ways mit dem Tag tourism=camp_site ausgeben lassen.
Das sind auch noch mal ca. 13.000 Plätze. Leider gibt es dabei auch Orte bei denen jeder Weg auf dem Campingplatz diesen Tag hat. Da erscheinen dann zig Plätze an einem Ort.
Ausserdem gibt es einige Ways die auf den selben Platz verweisen wie Nodes ohne das diese miteinander verknüpft sind.
Ich fürchte jedoch für das Problem gibt es keine automatisierte Lösung. ODER?

Ausserdem gibt es auch noch einige AREAS mit dem Tag. Gibt es in Overpass eine Möglichkeit alle Areas mit dem Tag tourism=camp_site inkl der relations,ways und nodes ausgeben zu lassen?

Ich freue mich auf euer feedback
Christian

Meinst du vielleicht so etwas?

<osm-script timeout="800" output="xml">
  <query type="area" into="areas">
    <has-kv k="tourism" v="camp_site"/>
  </query>
  <union>
    <item set="areas"/>
    <area-query from="areas"/>
    <recurse type="up"/>
  </union>
  <print mode="body"/>
</osm-script>

Hallo tyr_asd,

die Abfrage hatte ich auch schon probiert.
Ich sehe in dem XML aber keine Verbindung zwischen den Areas und den Relations, Ways und Nodes. Wie bekomme ich raus zu welcher Area z.B. eine der ausgegebenen Relations gehört?

Gruß
Christian

Hallo Christian

Sinnvollerweise sollte ein Campingplatz ein Knoten oder ein geschlossener Weg oder eine Relation sein, aber nur eines davon.

Nicht geschlossene Wege kannst du als Probleme kennzeichnen.
Entweder ist das nur ein Weg oder aber eine Fläche ist nicht geschlossen.

Lösen kann man das Problem der Doppel-Erfassung mit einer Geo-Datenbank. Da kann man abfragen, ob ein Knoten/Weg innerhalb einer Fläche liegt. Ob es da eine Lösung mit der Overpass-API gibt, kann ich nicht sagen, halte das aber für unwahrscheinlich.

PS:
In Bonn-Mehlem scheint der Campingplatz Genienau und in Rolandseck der Campingplatz Siebengebirgsblick zu fehlen. Der erste ist verständlich, da im wesentlichen Dauercamper, der zweite erlaubt jedoch auch (kleine) Zelte.

Edbert (EvanE)

Hallo Edbert,
das erscheint mir auch sinnvoll, ist aber leider nicht so. Es gibt z.B. Relations mit dem Tag tourism=camp_site, die wiederum Wege mit diesem Tag enthalten welche zum Teil Nodes mit diesem Tag enthalten.
Da ich alleine an Nodes schon fast 30.000 Plätze habe kann ich diese aber unmöglich von Hand prüfen.

Mein Vorgehen ist im Moment folgendes:
Ich schreibe alle Nodes samt ID in eine DB. Wenn ein Node Teil eines Ways mit dem Tag ist, ordne ich die Way-Id dem Node zu. Wenn ein Node nun eine Way-ID hat welche Teil einer Relation mit dem Tag ist, bekommt er zusätzlich die Relation-ID.
Abschliessend füge ich alle Nodes mit der gleichen Relation-Id zusammen, dann die ohne Relation-Id aber mit der gleichen Way-id. Die Position der Relations und Ways ermittle ich aus dem Mittelwert der entsprechenden Nodes.
Zum Schluss bleiben die Nodes ohne Relation und Way-ID welche dann auch in meine DB kommen.

Der Platz scheint dann ausschliesslich bei den Ways zu sein. Diese habe ich noch nicht erfasst, im Moment sind nur Nodes und Relations online.
Ob Dauercamper, Biwak oder Sonstiges erfasse ich im Moment nicht. Es kommt alles in meine DB was den Tag tourism=camp_site enthält.

Hallo Chris,

es gäbe auch noch waterway=biwak, die wohl deinem egtl. Interesse sehr nah kommen sollten. Müssen aber nicht immer vom Land aus zugänglich sein. Davon gibt es 90. Diese können aber auch zusätzlich ein tourism=camp_site haben.

Ebenso gäbe es noch tourism=caravan_site mit einem tent=yes oder tents=yes, wobei diese Gruppe wahrscheinlich für dich eher ungeeignet ist.

Ja die OSM-Daten sind wegen vieler Varianten nicht einfach.
Der Aufwand bei der Verarbeitung von OSM-Daten liegt oft, in der Tatsache, dass man mehrere Varianten (Knoten, Wege, Relationen) und oft auch mehrere Tagging-Schema berücksichtigen muss. Dazu kommen dann die Doppel-Erfassungen.

Wie schon geschrieben, wird das irgendwann mit einer Geo-Datenbank einfacher, weil man topologische Fragen stellen kann. Ob das bei deinem Problem schon der Fall ist, hängt von deinen Kenntnissen (Programmieren, Datenbank) ab. Durch Beschränkung auf tourism=camp_site dürfte die Datenbank recht klein sein. Ebenso sollte durch die geringe Größe Performance kein Problem sein.

Beide sind als geschlossene Wege erfasst, von daher also nachvollziehbar.

Edbert (EvanE)

Um das Ergebnis etwas sortiert zu erhalten, kannst du mit foreach arbeiten:

<osm-script timeout="800" output="xml">
  <query type="area" into="areas">
    <has-kv k="tourism" v="camp_site"/>
  </query>
  
  <foreach from="areas" into="a">
    <print from="a"/>
    <union>
      <area-query from="a"/>
      <recurse type="up"/>
    </union>
    <print order="quadtile"/>
  </foreach>
</osm-script>

So erhältst du immer ein gefolgt von allen Elementen in der jeweiligen Area.

Wie du herausfindest, welche Relation zur Area gehört? Am Besten, indem alle in Frage kommenden Relationen nochmals nach den ursprünglichen Kriterien durchsucht. (Im Prinzip ginge es auch einfach über die Area-ID (siehe hier). Allerdings muss die direkte Zuordnung nicht immer genau so bleiben.)

<osm-script timeout="800" output="xml">
  <query type="area" into="areas">
    <has-kv k="tourism" v="camp_site"/>
  </query>
  
  <foreach from="areas" into="a">
    <print from="a"/>
    <area-query from="a"/>
    <recurse type="up" into="b"/>
    <query type="relation">
      <item set="b"/>
      <has-kv k="tourism" v="camp_site"/>
    </query>
    <print/>
    <query type="way">
      <item set="b"/>
      <has-kv k="tourism" v="camp_site"/>
    </query>
    <print/>
  </foreach>
</osm-script>

Wobei ich denke, dass es für dich wahrscheinlich einfacher sein wird, anstatt über Overpass-Areas direkt die jeweiligen Multipolygon-Relationen zu suchen.

Danke tyr_asd,

das war’s was mir gefehlt hat.
Jetzt muss ich erstmal planen wie ich areas, relations, ways und nodes unter einen Hut bekomme. Und das so, das ich es auch leicht updaten kann.

Gruß
Christian

ich bin kein Programmierer und habe vom zugehörigen backgrund keine Ahnung, aber kannst Du nicht (wenn du die Koordinaten hast) einfach etwas code hinzufügen, der im Radius von z.B. 300 m nur einen Campingplatz zuläßt, egal wieviele nodes, streets etc dort als camping getagged sind?

Naja…das wäre dann Quick&Dirty.

Bei großen Plätzen kann es schon mal vorkommen, dass zwischen Flächenmittelpunkt und bspw. dem POI-Node mehr als 300m liegen und bei recht kleinen Plätzen kann es sein, dass da wirklich im Abstand von 300m zwei Plätze sind. Bspw.: http://osm.org/go/xy85C6B8p-

Hallo Forum,
ich habe jetzt auch die Ways online und damit 42,328 Plätze auf der Karte. Viele Plätze sind zwar doppelt, das entspricht aber dem was die OSM-Karte darstellt.
Desweiteren habe ich einige kleine Bugs beseitigt und wieder alle Testuser samt Einträgen gelöscht. Ihr könnt aber gerne weiter den Testzugang benutzen.

Hier noch mal die Links:
http://outscout.org
http://m.outscout.org (mobile Version)

Wenn jemand noch mit deem InternetExplorer 8 unterwegs ist, würde mich interessieren ob das funktioniert. Z.B. das Schliessen des Fensters mit den Details zu einem Platz.
Um das Fenster auch mit dem Zurück-Buttons (besonders auf dem Smartphone) schliessen zu können habe ich da etwas mit der Browser-History und den Hashs getrickst.
Auf dem IE7 läuft das nicht, aber damit kann ich - und muss der IE7-User - leben.

Danke auch für die Verbesserungsvorschläge und Feedbacks per Mail. Einiges werde ich bestimmt noch umsetzen.

Gruß
Christian

So liebes OSM-Forum,

die Seiten sind jetzt offiiell online:
=> http://forum.openstreetmap.org/viewtopic.php?id=19984

Und nochmal ein Danke für euer Mitwirken,
Christian