[geloest] ein delta der neuesten einträge v. bibliotheken in s-america

hallo u. guten Tag - guten tag community,

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

Dannu nutze doch erstmal die Gelegenheit für autodidaktischer Erfahrungen mit overpass-turbo.eu …

und probiere da erstmal was über den Wizard-Modus.

Wie lautet für dich denn das OSM-Tagging der gesuchten Bibliotheken generell, egal auf welchem Kontinent?

hallo Stephen, vielen Dank - das werd ich machen. Ich komme mit dem tag weiter: jenem;

http://wiki.openstreetmap.org/wiki/Tag:amenity=library

Tag:amenity=library

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.

melde mich wieder

vieleGruesse
ttw

Aha, Latein-Amerika. Wo siehst du die Abgrenzung? Mexico bis Panama? Oder auch der ganze Süden? Und was noch dazu: Kuba, … ?

Dann kann ich dir demnächst eine Zielvorstellung geben.

Gruss
walter

done: >1286, wenn man einige karibische Inseln ausklammert.

overpass kann csv ausgeben: http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Output_Format_.28out.29
dann noch ::timestamp in die Ausgabeliste und mit Excel nach Zeit sortieren.

hallo Wambacher hallo fx99

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>

Hat der Kollege fx99 doch bereits erwähnt: Overpass kann auch CSV - oder wenn du das lieber hättest auch GeoJson “liefern”.

Gruss
walter

hallo Wambacher

wenn ich das so ansetze

/*
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?

Keine Ahnung.

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.

Gruss
walter

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 :wink: . 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.

Jo, da schein schon was dran zu sein. Da sind wohl zwei Begriffswelten (Planet <—> Planet) aufeinander geprallt.

Gruss
walter

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;

  1. 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.
  2. 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;

Mit meta kommen auch die Meta Daten mit!

hallo u. guten Abend Fx99

vielen Dank für die Tipps. Damit komme ich weiter!!

Vielen Dank an alle hier - ein wirklich unglaublich starkes Forum - Ich bin sehr beeindruckt.

LG TagTheWorld