[Talk-de] "Relationen sind keine Kategorien" aus der Sicht des Mappers

Jo winfixit at gmail.com
So Okt 14 07:30:36 UTC 2012


2012/10/14 Martin Koppenhoefer <dieterdreist at gmail.com>

> Am 14. Oktober 2012 01:02 schrieb Tirkon <tirkon33 at yahoo.de>:
> > Der Pferdefuß an der Sache: Nur eine kleine Minderheit von Mappern ist
> > in der Lage, APIs zu nutzen. Für die gewaltige Mehrheit von Otto
> > Normalmappern - und das sind nicht nur Wikipedianer - sind Relationen
> > das einzige Mittel hierfür. Sie rufen die Relation auf und haben damit
> > alle gewünschten Member. Für sie erscheint die Sache so, als ob sie
> > ausgeschlossen werden, aber kommerzielle Unternehmen mit
> > entsprechendem Sachverstand die Datenbank nutzen können.
>
>
> wobei das nicht mehr ganz so stimmt. Wer alle Objekte mit einem
> bestimmten tag aus der db holen will, muss heutzutage wirklich nur den
> Beispielcode von der overpass-wikiseite kopieren und in den Browser
> pasten, und ggf. das tag anpassen, z.B. (in xapi syntax) halbwegs
> passend zur Relation hier (die BoundingBox ist zufällig):
>
>
> http://www.overpass-api.de/api/xapi?node[natural=cave_entrance][bbox=7.1,51.2,7.8,51.5][@meta]
>
> danach muss man noch ein .xml oder .osm an die Datei hängen, damit
> JOSM sie akzeptiert.
> Das bekommt nicht ganz jeder Nutzer hin, aber wer eine Relation
> anlegen kann, der schafft das auch ;-)
>

Wenn man oft dasselbe aus der DB holen will kann man das etwas weiter
automatisieren:

Hohl wget ab von: http://gnuwin32.sourceforge.net/downlinks/wget.php

Dann kann der Query in eine Tekstdatei eingetragen werden:

z.B.:

<union>
> /*get all numbered cycle node networks in a Dutch province*/
> <query type="relation" into="networks">
> <has-kv k="type" v="network"/>
> <has-kv k="network" v="rcn"/>
> <has-kv k="addr:country" regv="NL"/>
>  <has-kv k="addr:province" regv="Friesland"/>
>  </query>
> /*get all numbered nodes from the network relations*/
> <recurse type="relation-node" from="networks"/>
> /*get all the ways connected to such nodes*/
> <recurse type="node-way" into="parentways1"/>
> /*get all these ways' nodes*/
> <recurse from="parentways1" type="way-node"/>
> /*get all relations these ways are part of*/
> <recurse from="parentways1" type="way-relation"/>
> /*get all route relations from the network relations*/
> <recurse type="relation-relation" from="networks"/>
> /*the ways of the route relations*/
> <recurse type="relation-way"/>
> /*the nodes of the ways*/
> <recurse type="way-node"/>
> /*for each of those nodes, the ways connected to them*/
> <recurse type="node-way" into="parentways"/>
> /*the nodes of these ways*/
> <recurse from="parentways" type="way-node"/>
> <recurse type="node-relation"/>
> <recurse from="parentways" type="way-relation"/>
> </union>
> <print mode="meta"/>


Dies kann also in Friesland.overpass gespeichert werden. OK, das seht
ziemlich kompliziert aus, aber es schaut sehr schön was damit möglich ist.
Es resultiert in ein Skelet van Daten die für die Qualtitätskontrolle vom
Radfahrroutes notwendig sind. Und alle Seitwegen um neue Relationen zu
finden die noch nicht ans Networkrelation hinuzgefügt würden.

Dann eine Datei Friesland.cmd machen mit Folgendes drinn:

cd "C:\Users\Jo\Documents\OSM\"
>
> "C:\Program Files (x86)\GnuWin32\bin\wget.exe"  -O "Friesland.osm"
> --post-file="Friesland.overpass" "http://overpass-api.de/api/interpreter"
>
> "C:\Program Files (x86)\java\jre6\bin\java.exe" -jar -Xmx850m friesland.osm
> pause
>

Man kann eine Shortcut dahin auf dem Desktop setzen.  Doppelclick um das
laufen zu lassen. Rechtermausclick um das zu editieren. Man kann natürlich
auch ein shortcut zum Friesland.overpass auf dem Desktop setzen.

Einmal innerhalb JOSM kann man miet Ctrl-f suchen.

Jo



Mehr Informationen über die Mailingliste Talk-de