x

letzte 100 records ausfiltern - die nach bestimmten timestamp kamen


Geschrieben von tagtheworld (Gast) am 02. Juli 2014 18:34:27: [flux]

Hallo und guten Abend

ich will eine Abfrage zu einem OSM-file machen mit dem Ziel mit osmfilter die letzten 100 records ausfiltern die nach einem bestimmten Timestamp gemacht wurden.
vorweg: hier hatte ich die Frage mal angesprochen .https://help.openstreetmap.org/questions/34477/gather-the-latest-records-with-osmconvert ) - aber kam leider nicht weiter.

Es geht darum:

a die sagen wir 100 neuesten Records zu einem Gebiet erhalten - mit dem amenity=School - /(erste Randbedinung) und
b mit einem moeglichst vollständigen Datensatz - z.B. mit einer Website. (zweite Randbedingung)

Hab schon einiges kennengelernt: Kann diese Abfrage durchführen ... mit:

- overpass-API, aber das Gebiet ist zu gross und dann passiert folgendes overpass timed out
- das osmconvert-tool (das Manual: m.m.i24.cc/osmconvert.c )
- das osmfilter-tool (das Manual http://m.m.i24.cc/osmfilter.c )
- die opaQuery.pl - ist ein kleines, aber doch recht mächtiges Perl-Programm (http://www.easyclasspage.de/maptools/seite-2.html )

Die Bedingungen die eingehen müssen in die Suche sind wohl so zu formulieren: alles was (newer:'timestamp') - also nur Objekte neuer als Timestamp (Beispiel: '2014-06-01T07:00:00Z'). Will die letzten 100 records z.B. mit dem amenity=School - z.B. von

a. Süd Amerika
b. Afrika
c. dem Planeten - mein Notebook schafft das sicher nicht. DA werde ich dann umsteigen müsssen.

Starten tu ich mit Südamerika:Ensprechend dem Manual http://m.m.i24.cc/osmconvert.c sollte ich ggf. das Timestamp-Kriterium in Betracht ziehen.

"--timestamp=<date_time> add a timestamp to the data\n"
"--timestamp=NOW-<seconds> add a timestamp in seconds before now\n"
"--out-timestamp **output the file\'s timestamp, nothing else\n"**

Randbedingung: Alle Resultate die zwischen zwei Timestamps gemacht wurden u. eine Webseite enthalten.

a. das reduziert die Records auf ein Minimum - ggf. kann ich sogar festlegen,
b. dass ich die letzten 100 records bekomme

Denke dass man mit osmconvert und osmfilter am schnellsten hinkomme:

wget http://download.geofabrik.de/south-amer … st.osm.pbf
./osmconvert colombia-latest.osm.pbf -o=columbia.o5m
./osmfilter columbia.o5m --keep="amenity=school" -o=columbia-schools.o5m
./osmconvert columbia-schools.o5m --all-to-nodes -o=columbia-schools_nodes.o5m
./osmfilter columbia-schools_nodes.o5m --keep="amenity=school" -o=columbia-schools-results.o5m
./osmconvert columbia-schools-results.o5m --csv="@id @lon @lat name addr:street addr:housenumber addr:city website email" --csv-headline -o=columbia-schools-results.csv

Das läuft schon gut - aber nun will ich die Abfrage gemäß der o.g. Randbedinungen a.und b. noch etwas verbessern. Will nur die neuesten Records oder Einträge.

Für einen Tipp bin ich dankbar - vielen Dank schon im Voraus

Viele Grüße
tag_the_world ;-)


Antworten: