ich bräuchte aus openstreetmap einen export von bibliotheken aus Lateinamerika -
hier jeweis nur die letzten die hinzukommne das ist also ein Adiff soweit ich informiert bin
kann mir jemand bei einem ansatz helfen.
overpass-turbo ist wohl ein guter Anfang hier, oder
werde mal mit dem wizzard einige Sachen ausprobieren.
Was ich mit den Daten machen will - ich hätte gern die Ausgabe in CSV Format. Das ist dann nochmal eine extra-Prozedur. Aber zu alleresrst werd ich mal versuchen die jeweils letzten 20 Bibliotkeseinträge für Lateinamerika aus dem OSM-File zu extrahieren.
Das wäre Schritt 1
Werde das auf overpass-turbo anwenden auf die boundingbox von Südamerika:
Die einzige Schwierigkeit ist es ö - beim Schritt 1 eben die allerneuesten Einträge zu bekommen. Das ist wohl eine Overpass-Turbo Spezialität.
Dann - später im zweiten Schritt (nachgeordnet - das ist im moment noch nicht so wichtig - will ich die DATEN von dem XML befreien.
Wie gesagt - ich will mal versuchen einen allerersten schritt zu machen. Und überhaupt an einen brauchbaren Datensatz ranzukommen…Die letzten 20 (oder meinetwegen auch30 ) Einträge die auf den planetfile eingegangen sind… zu ermitteln … nebst Kontaktdaten, wie Webseite, u.s.w.
danke an euch beide! Toll - ich seh schon dass ich hier noch weiter nachdenken muss
@wambacher: also viele beziehen mexico & panama mit ein. Mach ich für meine Vorhaben auch. Danke für den Screenshot. Wow!!! @fx99 - ich seh mir das mal an.
werde am WE mal ein paar Tests machen… VG
**btw: ** Hab schon mal vor einigen Wochen einige Tests unter einer etwas anderen Fragestellung durchgeführt - das xml-format ist fmir mich bis dato immer ein problem gewesen - gut wenn ich um diese Klippen herumkommen kann…
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2015-03-25T18:11:02Z" areas="2015-03-25T03:32:02Z"/>
<action type="create">
<node id="762936189" lat="-34.5268042" lon="-58.4995007">
<tag k="addr:city" v="Gran Buenos Aires"/>
<tag k="addr:housenumber" v="2599"/>
<tag k="addr:postcode" v="1602"/>
<tag k="addr:street" v="Hipólito Yrigoyen"/>
<tag k="amenity" v="school"/>
<tag k="name" v="Colegio La Salle"/>
<tag k="phone" v="(011) 4791-4333"/>
<tag k="website" v="http://www.ilasalle.com.ar/"/>
</node>
</action>
<action type="modify">
<old>
<node id="961544799" lat="-34.6064077" lon="-58.3749056">
<tag k="website" v="http://www.ibl.com.ar"/>
<tag k="addr:housenumber" v="165"/>
<tag k="addr:street" v="Florida"/>
<tag k="amenity" v="school"/>
<tag k="name" v="IBL - International Bureau of Language"/>
</node>
</old>
<new>
<node id="961544799" lat="-34.6065440" lon="-58.3750010">
<tag k="addr:housenumber" v="165"/>
<tag k="addr:street" v="Florida"/>
<tag k="amenity" v="school"/>
<tag k="name" v="IBL - International Bureau of Language"/>
<tag k="training" v="language"/>
<tag k="website" v="http://www.ibl.com.ar"/>
</node>
</new>
</action>
<action type="delete">
<old>
<node id="1855646908" lat="-32.9057106" lon="-60.9070122">
<tag k="amenity" v="school"/>
<tag k="name" v="Esc. Provincial Nº 6408 "Pedro Dürst""/>
<tag k="website" v="http://web.roldan.gov.ar/home.php?inc=ciudad.instit&instit=EPN6408PD&desc=EPN6408PD&return=instit"/>
</node>
</old>
<new>
<node id="1855646908" visible="false"/>
</new>
</action>
<action type="create">
<node id="1857874422" lat="-26.4049950" lon="-54.6654650">
<tag k="addr:city" v="Eldorado"/>
<tag k="addr:housename" v="Facultad de Ciencias Forestales"/>
<tag k="addr:housenumber" v="124"/>
<tag k="addr:street" v="Bertoni"/>
<tag k="amenity" v="school"/>
<tag k="name" v="Facultad de Ciencias Forestales"/>
<tag k="phone" v="+54 3751 431780"/>
<tag k="website" v="http://www.facfor.unam.edu.ar/"/>
</node>
</action>
/*
This has been generated by the overpass-turbo wizard.
The original search was:
“amenity=library and website~"."”
*/
[out:json][timeout:25];
// gather results
(
// query part for: “amenity=library and website~/./”
node["amenity"="library"]["website"~"."]({{bbox}});
way["amenity"="library"]["website"~"."]({{bbox}});
relation["amenity"="library"]["website"~"."]({{bbox}});
);
// print results
out body;
>;
out skel qt;
ich koennte ja jetzt für ganz lateinamerika das laufen lassen - mit ensprechender angabe in der bbox
Die frage ist wie bekomme ich dann nocch die jeweils letzten Einträge im planet-file?
aber: wenn du Sachen nicht mit der Overpass findest, weil du meinst, die wäre veraltet: Wie willst du denn dann die neuesten Einträge im Planeten finden?
Und wenn du das mit dem Planeten hinbekommst: Warum dann noch die Overpass verwenden?
Ich nehme mal an, du machst einen Download des Planetens, wandelst den um und suchst “irgendwie” darin nach amenity=library. Bis du damit zeitlich durch bist, ist auch der “dein” Planet veraltet. Mach dir das Leben leicht und nimm das, was die Overpass anbietet. Die Zeitdifferenz sollte wirklich nicht gross sein. Ich benutze Overpass nicht, kann dir also nichts über den Lag sagen. Eventuell sagen die Kollegen was dazu.
Ich benutze übrigens eine PostgreSQL/PostGIS-Datenbank mit stets aktuellen Daten und visualisiere das mit QGIS. Bis ich die aber hatte, sind mehrere Monate Arbeit mit teilweise herben Rückschlägen vergangen.
Wie schon oben gesagt, kannst im CSV den timestamp, d.h. den Zeitpunkt der ketzten Änderung, mit ausgeben lassen.
Wenn das nicht reicht, muss Du in die History der jeweiligen OSM Daten einsteigen.
Was sind denn die jeweils letzten?
Die mit der letzten Tag-Änderung (das geht recht einfach; csv-Ausgabe nehmen, nach timestamp sortieren, dann “head -n1” um nur diese eine Zeile zu kriegen), oder die die als letztes “neu” dazugekommen ist (das ist komplexer)?
Letztes ist komplex, weil: was ist denn neu?
Schwierig stelle ich mir die automatische Klassifikation/Erkennung folgender Fälle vor:
Eine bestehende Bibliothek (d.h. ein bestehendes OSM-Objekt) ändert den Namen. “Bibliothek von Santa Anna” → “Bibliothek ‘Mutter Theresa’ von Santa Anna”. Ist sie jetzt neu?
Ein in OSM bestehendes Haus-Objekt wird zusätzlich mit den Bibliotheks-Tags versehen. Ist die Bibliothek jetzt neu?
Ein Bibliotheks-Knoten wird gelöscht, eine gleichnamige Bibliothek als way angelegt
Ein Bibliotheks-Knoten ohne Namen wird gelöscht, die Bibliothek als way angelegt und gleichzeitig ein Name eingetragen
Bibliothek kriegt neue Öffnungszeiten eingetragen
Vielleicht sind das aber auch nur 5% der Bibliotheken, und wenn man mit 5% Ungenauigkeit leben kann, muss man sich da keine Gedanken drum machen.
Du kannst deine Abfragen auch mit adiff auf “welche sind denn seit dem 1.5.2015 geändert worden?” einschränken, z.B. so:
[out:json][timeout:250][adiff:"2015-05-01T00:00:00"];
// gather results
(
// query part for: “amenity=library”
node["amenity"="library"]({{bbox}});
way["amenity"="library"]({{bbox}});
relation["amenity"="library"]({{bbox}});
);
// print results
out meta;
>;
out skel qt;
@wambacher: ich glaube du denkst zu kompliziert . Ich glaube, er meint mit
nur, wie er dann jeweils die “neuste” Bibliothek aus seinem Ergebnis extrahiert, und nicht wie er noch das Delta zwischen der DB der Overpass-API und dem Planeten auflösen soll.
hallo u. guten Abend liebe Community, hallo Wambacher, fx99 und gormo
vorweg: vielen vielen dank für eure Hilfe. Eure Beiträge sind sehr gut - u. weiterführend. Habe das nun mal heruntergebrochen auf Chile u. dann mit einen Timeout von 250 Sekunden laufen lassen:
Fragen;
Stimmt das denn mit dem ADIFF - ist der Ansatz denn so auch richtig? Wenn nicht - dann kann ich ggf. darauf auch verichten für den Anfang.
Ich habe aber eine ganz zentrale Frage noch die die Abfragen berücksichtigen soll(te) Ich will alle Ergbnisse unberücksichtigt lassen die keine WEBSEITE beinhalten: die sollen also gar nicht mit in der Ergebnisliste auftauchen: Dies ist sehr sehr wichtig!
Die Ergebnisse - hier im Auszug:
Man sieht ferner - ein ADIFF ist auch mit drinne. Soweit so gut!
Wie oben schon erwähnt: Ich habe aber eine ganz zentrale Frage noch die die Abfragen berücksichtigen soll(te) Ich will alle Ergbnisse unberücksichtigt lassen die keine WEBSEITE beinhalten: die sollen also gar nicht mit in der Ergebnisliste auftauchen:
Kann ich das dann ggf so machen…
damit hab ich das probiert - aber ohne Erfolg leider…
Das sucht auf der aktuellen Bounding Box.
Die Suche für Chile muss so aussehen:
[out:json][timeout:250];
// fetch area “chile” to search in
{{geocodeArea:chile}}->.searchArea;
// gather results
(
// query part for: “amenity=library and website~/./”
node(area.searchArea)["amenity"="library"]["website"~"."];
way(area.searchArea)["amenity"="library"]["website"~"."];
relation(area.searchArea)["amenity"="library"]["website"~"."];
);
// print results
out meta;
>;
out skel qt;