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 .gather the latest records with osmconvert - OSM Help ) - 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 )
die opaQuery.pl - ist ein kleines, aber doch recht mÀchtiges Perl-Programm (easyclasspage.de )
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- 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:
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
Mir fĂ€llt es grad schwer, dein Ansinnen zu verstehenâŠ
Was meinst du mit âRecordsâ? Meinst du Nodes, Ways oder Relations?
Was ist, wenn ein Way zu den 100 neuen âRecordsâ gehört, sollen die zugehörigen Nodes auch dann in der Ergebnisdatei sein, wenn sie schon lĂ€nger nicht geĂ€ndert wurden?
Warum grad eine feste Anzahl von âRecordsâ? Warum nicht alles ausgeben, was z.B. im Lauf dieser Woche oder z.B. zwischen 12 und 24 Uhr verĂ€ndert wurde? WĂ€re das eine Alternative?
Was ist dein Ziel? Was hast du mit diesen Daten vor?
Zu osmfilter: nach Objekt-Timestamps lĂ€sst sich damit nicht filtern â glaube ich zumindest.
Du könntest diese FunktionalitĂ€t natĂŒrlich fĂŒr deine Zwecke ergĂ€nzen, es handelt sich ja um freie Software. Ebenso könntest du das sehr flexible Framework Osmium von Jochen Topf dafĂŒr verwenden. Vielleicht klappt es sogar mit dem Programm Osmosis, da bin ich mit jetzt allerdings nicht sicher.
vielen Dank fĂŒr deine Antwort. ggf muesste ich oben einfach noch stĂ€rker fokussiert auf die Kernfrage sein: Es gibt sicher mehrere Wege die Fragen zu loesen.
Also bin neu bei opnstreetmap; was mich fasziniert ist die kollaborative Art wie dieses Netz wĂ€chst und zwar allerorten. Ich interessiere ich mich fĂŒr pĂ€d. Initiativen u. Aktionen - v.a. in SĂŒdamerika, Afrika ⊠Besonders beeindruckend finde ich zu beoachten was im Verlauf der Zeit passiert. Also Unterschiede pro Zeit zu beoachten - wie man das auch hier besonders gut sehen kannâŠ:;
Mich interessiert grundsÀtzlich das Wachstum - und eben auch, was zuletzt passiert. ist Bin nicht so sehr an den absoluten Datenmengen interessiert. Die zu extrahieren ist ja auch nicht so schwer. Siehe die jetzt schon lauffÀhigen Abfragen oben.
Jetzt geht es mit um das Herausfiltern spezieller Ergebnisse unter besonderen Randbedinungen: FĂŒr die techn. Umsetzung: Die moeglichen Lösungen die mir noch eingefallen sind:
ich besorge mit mir mit osmconvert u. -filter die Gesamtmenge aller EintrĂ€ge und hab dann eine excel-Tabelle mit - sagen wir 3000 EintrĂ€gen fĂŒr Kolumbien bis ca. 7000 fĂŒr Argentinien. Da sind dann Zeilen mit mehr oder weniger grossen DatensĂ€tzen drinne. In dem Ergebni dasss mit der o.g. Toolchain erreicht wird fehlt z.B. der Timestamp ganz.
**AnsĂ€tze: ** Wenn ich jetzt die Abfragen zu zwei (!!!) Zeitpunkten mache, dann kann ich ĂŒber einen diff der Ergebnissen doch auch die Resultate vergleichen. Das mĂŒsste gehen oder!? Entweder die Differenzen der CSV-formatierten Dateien oder ggf. schon frĂŒher in der Kette. Das ist doch die FRAGE; Und deshalb denke ich dass man ggf mit Timestamps weiterkommt. Deine EinwĂ€nde finde ich plausibel - hier muss ich nochmals nachdenken.
Bei den Resultaten denke ich dass ich insgesamt nodes, ways und relations zusammengenommen haben will. Auf die Zahl 100 bin ich nicht festgelegt. GGF ist es einfach am besten einen oder sagen wir zwei bestimmte Timestamps zu nehmen und dann alle Resultate zu untersuchen. Allerdings ist mir eine Randbediungung wichtig. Ich will fĂŒr diese Abfrage alle Ergebnisse rauswerfen die keine Webseite haben. Das reduziert dann doch erheblich. Die Frage ist - wie kann ich all diese Randbediungungen so in die Toolchain einbauen dass es moeglichst einfach alles wird - und ggf. ich gar nicht so groĂe Datenmengen holen muss. Zwischenbemerkung: kann man dass ggf. auch mit overpass-api machen?
** ZurĂŒck zu osmconvert und -osmfilter: **
Was wĂ€re wenn ich - osmconvert und osmfilter einsetze und dann eben mit der BerĂŒcksichtigung der o.g.Randbediungen: wie könnten ja auch eine Analyse eines Files herstellen und ein Set statistischer Daten herstellen: z.B. auch u.a. folgender Daten:
Aber - und das hab ich durch deine Gedanken erfahren, koennte hier der Einsatz von Timestamps schwierig werden.
GGF koennte ich dann ansetzen wie folgt:
Tag-Filter beziehen sich immer nur auf einzelne Tags. Damit lÀsst sich festlegen, welche Tags erhalten bleiben und welche ausgeschlossen werden.
Bestimmte Tags behalten
Und was wĂ€re wenn ich boolsche Algebra arbeiten und dann etwas folgende VerknĂŒpfung baue und dann noch zusĂ€tzlich den Timestamp mit einbaue?!
Ferner koennte ich das vielleicht auch noch angehen mit
a. overpass-Api
b. dem von dir genannten Tool dem Framework Osmium von Jochen Topf
Hmm - ich werde am WE mal einiges ausprobieren u. meld mich wieder hier.
Freu mich sehr wenn dir ggf. noch etwas einfÀllt.
schon mal ein scheones Wochenende!!
VG TagtheWorld
Wichtig: Ein Planet enthĂ€lt immer nur den aktuellen Stand der OSM Datenbank. Nochmal zum Mitschreiben: Im Planet sind keine Daten zu frĂŒheren Versionen eines Objekts enthalten, insbesondere auch keine gelöschten Objekte. Das bedeutet, dass man damit keine Vergleichsanalysen zwischen zwei verschiedenen Zeitpunkten fahren kann. Nur bei Objekten mit Version 1 kann man das Erstellungsdatum verwenden, fĂŒr jede nachfolgende Version ist aber nicht mehr ermittelbar, wann das Objekt ursprĂŒnglich erzeugt wurde.Das wĂŒrde nur mit einem Full History Dump funktionieren (DateigröĂe >50GB), oder man lĂ€dt sich viele Extrakte von unterschiedlichen Zeitpunkten herunter. Auf keinen Fall funktioniert das nur mit einem Extrakt!
Daher: am besten mit Overpass API probieren und das andere mit osmfilter, osmconvert einfach vergessen. Es funktioniert nicht, da der planet diese Information nicht enthÀlt.
vielen Dank fĂŒr deine rasche Antwort und die tollen Tipps. So funktioniert es bestens. Habe es gleich getestet. Deine ErkĂ€uterungen ĂŒbrigens sind sehr einleuchtend. Wie einfach das mit der Overpass-Api geht ist ĂŒberwĂ€ltigend. Die von mir vergleichsweise sehr sehr kleinen Datenmengen der Abfrage bekommt man mit der gewĂŒnschten PrĂ€zision sehr gut mit overpass-apil.
noch eine letzte VerstÀndnisfrage: :
entsprechend den manuals zu overpass-api kann ich mit union mehrere queries verschachteln:
Ergo: mĂŒsste ich nicht dann so um eine entsprechende verschachtelte / verknĂŒpfte Anfrage durchzufĂŒhren - die mit der Absicht nur jene Ergebnisse in die Resultatliste zu bekommen - die eine Webseite beinhalten - dann so ansetzenâŠ:
2 Ănderungen habe ich vorgenommen:
a) statt [website=yes] einfach [website], da beim Tag website in der Regel irgendeine Adresse steht und nicht âyesâ
b) auch bei den Nodes habe ich [website] hinzugefĂŒgt
Overpass-Api ist super. Und dieses Form ist in der OpenStreetMap-Community - die Perle schlechthin. Super community und Austausch.
Hier ist sooo viel Hilfsbereitschaft und unkomplizierte Hilfe. Wenn man die Threads anguckt - sieht man sofort wie toll das ist.
In einem zweiten Schritt mĂŒsstest du dann die Reduktion auf die gewĂŒnschte Objektanzahl (z.B. die letzten 100) vornehmen. Dies kannst du z.B. mit der Perl-Library âOSM::Treeâ recht einfach erreichen.
GruĂ Klaus
PS: Um alle Objekte vom Typ âamenity=schoolâ zu erhalten, muĂ du zusĂ€tzlich Nodes und Relationen in die obige Abfrage integrieren.
vorweg: bin an vrschiedenen Techniken interessiert - einfach mal auch aus technischer Sicht.
hab mit Ruby, Python, PHP AnsÀtzen Versuche gemacht,
DarĂŒber hinaus mit dem Overpass-API und natĂŒrlich auch mit osmconvert - siehe unten. Was ich am Ende auch erreichen will, ist ein ein Speichern in MySQL DB oder auch in einer PostgreSQL
An Perl hab ich mich bislang noch nciht so rangetraut. Denk aber dass Dein opaquery.pl echt klasse ist - und sehr leistungsfÀhig. Werde in der kommenen Woche mal ein paar Versuche damit machen.
Denke dass ich opaquery.pl sehr sehr gut dazu einsetzen kann - die Abfragen sehr detailiert zu stellen und auch die Anbidung an die DB gut herstellen zu koennen.-âŠ
man kann sehr sehr viel einstellenâŠ
Es kommt in der LeistungsfÀhigkeit sehr sehr den Ideen u. Absichten nahe - mittels einer Toolchain auch die DATEN weiterzuverarbeiten.
mysql- oder postgresql
z.B mit DBI und XML::Twig;
Sehr gut finde ich dass man viel einstellen kann. Timeout u vieles andere mehr.
Eine Frage: Sieht man hier die jeweiligen Timestamps der Bearbitung:
Das ist sehr sehr gut
**
update 2**
die oben erwĂ€hnten Abfragen ergebn ein DATENSET wie hier gezeigt: - Das will ich nun in eine DB ĂŒbergebenâŠ
BTW: hier in dem nachfolgenden Link sieht man es etwas besser http://pastebin.com/mq5kAHyy - da ist ein groesserer DATENAUSSCHNITT sichtbar