BEV-Adressen (incl. Subadressen) als .osm-Files (neue Daten 10/19)

Eine neue Methode der Adressvervollständigung in Österreich, bei der es nicht mehr notwendig ist, bereits bestehende Adresselemente vom Gebäudepolygon in einen Node zu verlagern. Bereits gemappte Informationen bleiben hierbei erhalten. Differenzen werden mit dieser Methode gut sichtbar gemacht, deren Auflösung erfolgt nach guter Mapper Manier jeweils von Hand. Der Arbeitsaufwand bleibt -da Übereinstimmungen ausgefiltert werden- überschaubar.

Folgende Vorgangsweise:
Editor JOSM, Adresselemente eines Gemeindegebietes unter Anwendung folgender Overpass- Turbo Abfrage vollständig in den Editor laden.

[out:xml][timeout:25][bbox:{{bbox}}];
{{geocodeArea:Beispielgemeinde,Austria}}->.searchArea;
(
 node
  ["addr:housenumber"](area.searchArea)({{bbox}});
  way
  ["addr:housenumber"](area.searchArea)({{bbox}});
  relation
  ["addr:housenumber"](area.searchArea)({{bbox}});
);
(._;>;);
out meta;

Nun BEV Daten einer Gemeinde https://drive.google.com/open?id=1G8F4TWd6OXFFym-N9u4oTQ91WKKUAKtp vollständig in einem eigenen Layer sammeln, eventuelle Luzandro Orte in Suburb umwandeln, addr:city Gemeinde wieder vervollständigen.
Die nun vollständigen BEV Adressdaten -die sich nun in Datenebene 2 befinden- kopieren, und in die Datenebene 1 per strg+alt+v einkopieren.
Daten hochladen, hierbei sämtliche Fehlermeldungen ignorieren.

Änderungssatz ID eruieren, und vorläufig notieren. Einige Minuten warten.

Editor JOSM,
Folgende Overpass Turbo Abfrage anwenden,
dazu ein JOSM Auswahlfenster über das geamte Gemeindegebiet aufziehen, und Prüfung durchführen.


[bbox:{{bbox}}];
nwr["addr:city"]["addr:housenumber"];
for(t["addr:city"] + " " + t["addr:street"] + " " + t["addr:unit"] + " " + t["addr:flats"] + " " + t["addr:place"]+ " " + t["shop"] + " " + t["addr:housenumber"] + " " + t["name"]+ " " + t["amenity"]+ " " + t["shop"]+ " " + t["note"])
{
  if (count(nodes) + count(ways) + count(relations) > 1)
  {
   (._;>;); out meta;
  }
};

nun: strg+F Suchen nach changeset:1234567letzte ID

Nun sämtliche Elemente der Auswahl entfernen, anschließend “leere” Nodes zum Vermeiden von Konflikten aber vorläufig bestehen lassen.
Änderungssatz daher samt “leere” Nodes hochladen. Fehlermeldungen beim hochladen ignorieren.

Mehrere Minuten warten,
Nun JOSM erneut starten und folgende Abfrage nach leere Nodes laufen lassen:

[out:xml][timeout:25][bbox:{{bbox}}];
rel; > -> .r;
way; > -> .w;
(( node(if:count_tags()==0); - node.r; );  - node.w; );
out meta;

Die so gefundenen leeren Nodes, kann man nun allesamt ohne Konfliktgefahr löschen,
Änderungssatz hochladen.

Erneut mehrere Minuten warten,
JOSM neu starten und mit der Bereinigung der verbliebenen Duplikate beginnen:
Duplikate per Geometrie ersetzten auflösen.
Ich verwende hierbei eine Funktion meines in meinem Blog beschriebenen Gampepad Logitech G13, das geht aber ebenso gut per JOSM Tastenkombination.


edit: linkfix + Text

Dank:

Hinweis: Die Vorgangsweise benötigt Erfahrung im Umgang mit dem Editor JOSM. Mapper welche üblicherweise den Editor ID benutzen bitte ich von Experimenten in Adresserfassung Abstand zu nehmen, und sich erst ausreichend Erfahrung mit dem Editor JOSM anzueignen.

Yay, du machst endlich, was alle dir schon lange vorgechlagen haben, weils sowieso einfacher ist.

Wobei ich mich immer noch frage, warum du nur einen Teil der Daten herunterlädst? Früher war das Argument ja wegen der großen Datensätze, Gemeindeweise ist das ja hinfällig. Hat den Vorteil, dass man die JOSM internen Filter benutzen kann und die Checker alle funktionieren. So könntest du in einem Zuge direkt alles machen und auch die Korrekturen vornehmen und brauchst dann auch die Fehlermeldungen nicht ignorieren.

Okay, also mal wieder absichtlich Fehler erzeugen anstatt gleich ordentlich zu arbeiten. Das ist schade :frowning:

Die konkrete Frage hier ist folgende:
Warum ladest du nicht einfach die gesamte Gemeinde herunter und bearbeitest diese?

So würden sich viele Probleme mit dem doppelt hochladen usw. auflösen.

Im PLZ Bereich 3830 Waidhofen auf der Thaya https://www.openstreetmap.org/changeset/63659700#map=12/48.8191/15.2969
sind wir mit einer geradezu unglaublichen Übereinstimmung von 0% Adressen, zu amtlichen Open Source Adressen konfrontiert. Das muss man erst einmal zuwegebringen, ich finde das an aufgewendeter Energie beachtlich. Die Region ist zudem systematisch mit überlagert gezeichneten Gebäudepolygonen gleichsam zubetoniert.

OSM gleicht dort einer einzigen Festung. In unser Projekt haben sich dort Leute eingenistet, deren einziges Ziel offensichtlich darin besteht, OpenStreetMap mit aller Macht zu

be, und
ver,
hindern.

https://www.openstreetmap.org/changeset/35569541#map=12/48.8014/15.4142

Laut Entwurf von Nakaner https://forum.openstreetmap.org/viewtopic.php?pid=721084#p721084
sollen Mapper verpflichtend auf Kommentare reagieren müssen. Meine Bedenken, man gibt so Leuten -die wie hier am Beispiel Region Waidhofen auf der Thaya- den Mapping- Fortschritt in einer Region zu verhindern versuchen, ein mächtiges Werkzeug in die Hand.

Bei diesem Changeset https://www.openstreetmap.org/changeset/63659700 teste ich nun eine -in Komplexität drastisch reduzierte- neue Form der Adresserfassung. Das Ergänzen von Adressen erfolgt hierbei nicht mehr nach Gemeinde, sondern nach PLZ Bereich.
Das hat den eleganten Vorteil, dass so das Ergänzen von BEV Adressdaten in unser Projekt mit Luzandros erster BEV Aufbereitung kompatibel ist (Link in meiner Signatur). Beim Erfassen von Adressen je Gemeindegebiet, besteht immer Risiko, dass man abgelegene Ortsteile welche vom Briefträger aus der Nachbargemeinde versorgt werden, -oft nur wenige Gebäude mit abweichende PLZ- hierbei leicht übersieht. In der Arbeitsweise je PLZ Bereiche entfällt dieses Risiko komplett.

Folgende Vorgangsweise:
Editor JOSM, Adresselemente einer PLZ Region unter Anwendung folgender Overpass- Turbo Abfrage in den Editor laden.
(Es genügt hierbei ein lediglich geschätztes Auswahlfenster um den PLZ Bereich aufzuziehen)

[out:xml][timeout:25][bbox:{{bbox}}];
{{geocodeArea:Austria}}->.searchArea;
(
 node
  ["addr:housenumber"](area.searchArea)({{bbox}});
  way
  ["addr:housenumber"](area.searchArea)({{bbox}});
  relation
  ["addr:housenumber"](area.searchArea)({{bbox}});
);
(._;>;);
out meta;

Nun einen PLZ Bereich https://drive.google.com/open?id=1G8F4TWd6OXFFym-N9u4oTQ91WKKUAKtp in einem eigenen Layer sammeln.
Die PLZ BEV Adressdaten -die sich nun in Datenebene 2 befinden- kopieren, und in die Datenebene 1 per strg+alt+v einkopieren.
Daten hochladen, hierbei sämtliche Fehlermeldungen ignorieren.

Änderungssatz ID eruieren, und vorläufig notieren. Einige Minuten warten.

Editor JOSM,
Folgende Overpass Turbo Abfrage anwenden,
dazu ein JOSM Auswahlfenster über das geamte Gemeindegebiet aufziehen, und Prüfung durchführen.


[bbox:{{bbox}}];
nwr["addr:city"]["addr:housenumber"];
for(t["addr:city"] + " " + t["addr:street"] + " " + t["addr:unit"] + " " + t["addr:flats"] + " " + t["addr:place"]+ " " + t["shop"] + " " + t["addr:housenumber"] + " " + t["name"]+ " " + t["amenity"]+ " " + t["shop"]+ " " + t["note"])
{
  if (count(nodes) + count(ways) + count(relations) > 1)
  {
   (._;>;); out meta;
  }
};

nun: strg+F Suchen nach changeset:1234567letzte ID

Nun sämtliche Elemente der Auswahl entfernen, anschließend “leere” Nodes zum Vermeiden von Konflikten aber vorläufig bestehen lassen.
Änderungssatz daher samt “leere” Nodes hochladen. Fehlermeldungen beim hochladen ignorieren.

Mehrere Minuten warten,
Nun JOSM erneut starten und folgende Abfrage nach leere Nodes laufen lassen:

[out:xml][timeout:25][bbox:{{bbox}}];
rel; > -> .r;
way; > -> .w;
(( node(if:count_tags()==0); - node.r; );  - node.w; );
out meta;

Die so gefundenen leeren Nodes, kann man nun allesamt ohne Konfliktgefahr löschen,
Änderungssatz hochladen.

Erneut mehrere Minuten warten,
JOSM neu starten und mit der Bereinigung der verbliebenen Duplikate beginnen:
Duplikate per Geometrie ersetzten auflösen.
Ich verwende hierbei eine Funktion meines in meinem Blog beschriebenen Gampepad Logitech G13, das geht aber ebenso gut per JOSM Tastenkombination.
Eventuelle Luzandro Orte in Suburb umwandeln, addr:city je Gemeinde wieder vervollständigen.


Dank:

Hinweis: Die Vorgangsweise benötigt Erfahrung im Umgang mit dem Editor JOSM. Mapper welche üblicherweise den Editor ID benutzen bitte ich von Experimenten in Adresserfassung Abstand zu nehmen, und sich erst ausreichend Erfahrung mit dem Editor JOSM anzueignen.

edit:typo

Ich habe grad den Link geöffnet, dann die Region im ID-Editor geöffnet und im Ortsgebiet Groß-Siegharts kein einziges MP gefunden! :expressionless: Bitte, wo sind die?

Klar gibt es viel Verbesserungs- und vor allem Ergänzungspotential in dieser Ortschaft, aber von systematischen-überlagerten MPs habe ich nichts gefunden. Schaue dazu bitte mal in die Region AUT-HUN-SLO (Thread hier im Forum), dort ist die Sache echt arg. Ich habe in diesem Grenzgebiet auf HUN-Seite versucht, den Wald etwas zu lichten - und bin von mehrere Hundert Kilometer weit entfernten Mappern nur angekreidet worden mit Vorwürfen der Zerstörung von OSM-Daten und dergleichen.

Damit werden diese Duplikate von deinem Import schon einmal nicht gefunden, weil dort das optionale addr:city nicht gesetzt ist:
https://www.openstreetmap.org/node/5996497538

Wenn du wie oben angegeben die lokalen JOSM Checks verwendet und nicht ignoriert, bzw. addr:city zuvor über die Gemeinde gesetzt hättest, wären die gefunden worden.
Zum Filter-Script schreibe ich später mehr.

Es fehlen vielfach auch die Straßen, bzw. liegen in einer anderen Schreibweise vor.

Ich fände es sehr hilfreich wenn wir einen selbst definierten Filter wie


[bbox:{{bbox}}];
nwr["addr:city"]["addr:housenumber"];
for(t["addr:city"] + " " + t["addr:street"] + " " + t["addr:unit"] + " " + t["addr:flats"] + " " + t["addr:place"]+ " " + t["shop"] + " " + t["addr:housenumber"] + " " + t["name"]+ " " + t["amenity"]+ " " + t["shop"]+ " " + t["note"])
{
  if (count(nodes) + count(ways) + count(relations) > 1)
  {
   (._;>;); out meta;
  }
};

auch auf bereits in JOSM geladene Daten anwenden könnten. Leider fehlen mir hierfür die für ein JOSM Plugin notwendigen JAVA Programmier Kenntnisse. Daher lade ich das Changeset derzeit als OSM Realdaten hoch, und prüfe anschließend mit verfügbaren einfachen, aber auch sehr mächtigen und flexiblen JOSM Overpass- Turbo Werkzeugen, auf Duplikate.

Die in JOSM eingebaute Prüfroutine ist aktuell sehr unflexibel, meine Vorgangsweise durch Prüfung in mehreren Schritten glänzt auch dadurch, dass so die Arbeit anderer Mapper wesentlich mehr Wertschätzung erfährt. Mann kann sogar sagen Priorität vor neueren amtlichen Daten eingeräumt bekommt.

edit: text

Du hast uns bis heute nicht erklärt, was du damit überhaupt erreichen möchtest, was du nicht genauso gut lokal in JOSM vor dem Hochladen machen kannst

Das hat damit zu tun, dass Du uns Dein Script erst einmal näher bringen musst. Ideal wäre ein Videomitschnitt mittels VLC Player.
Videoanleitung eigenen sich auch für nicht eingeweihte, die seltene Linux Konfigurationen durchführen möchten, aber nicht eimal wissen wie man eine Kommandozeile öffnet.

Übrigens die in JOSM integrierte Prüfung wende ich abschließend sehr wohl an, ich nenne diesen eigenen Bearbeitungsschritt
“Cleanup & Finish”
Das schöne daran, wir sind keine Maschinen deren Zeit man fix planen und einteilen kann. Ich wende aktuell sehr sehr viel meiner frei verfügbaren Zeit für OSM auf, es gibt aber auch noch mein privates soziales Leben, was genauso wichtig ist.
Daher hat OSM nicht meine volle Priorität. Diese gehört meiner Familie.

edit:text

Es geht hier noch gar nicht um das Script, sondern in JOSM integrierte Funktionen, die genau das gleiche Ergebnis liefern (naja, abgesehen von den Duplikaten, die am Server landen)

Aktuell ergänze ich Gemeinden in Ober und Niederösterreich -da regio osm gerade streikt- mit vielleicht 5% Adressbestand.
Wenn ich nach Deiner Methode Gemeinden mit bereits 60% ordentlich gemappten Adressen vervollständige, bekomme ich per JOSM integrierter Warnung tausende dumme Duplikatwarnungen, die ich dann alle jeweils von Hand auf Plausibilität prüfen sollte, das ist unmenschlich und unsinnig.
Da finde ich meine aktuelle Methode wesentlich eleganter und effizienter.
Ich vertraue nun darauf, dass bereits in OSM gemapptes Priorität verdient.

Zum 3. Mal:

  • Doppelclick auf die Warnung “Doppelte Hausnummern” (die gesamte Kategorie, nicht eine einzelne Warnung)
  • CTRL+F “in der Auswahl suchen” und nach “new” suchen

=> die von dir neu eingefügten Duplikate sind selektiert und können gelöscht werden.

Das ist zwar von Dir gut gemeint.
Deine Methode killt mir aber viel zu viel Nützliches:

addr:city=Retz
addr:country=AT
addr:housenumber=32
addr:postcode=2070
addr:street=Am Anger
at_bev:addr_date=2018-04-02
note=Vorderhaus

addr:city=Retz
addr:country=AT
addr:housenumber=32
addr:postcode=2070
addr:street=Am Anger
at_bev:addr_date=2018-04-02
note=Hinterhaus

Wird von der JOSM integrierten Prüfung als Duplikat erkannt, und so mittels Deiner Methode entfernt.

Ja, weil es das auch ist. Aber auch wenn die Unterscheidung Schwachsinn ist: genau das gleiche Schema

  • CTRL+F “Aus der Auswahl entfernen” + “note”

fertig

Irgendwie habe ich die Dinge immer gerne selbst unter Kontrolle,
die von mir gewählte Vorgangsweise ist zwar nicht so elegant, erlaubt mir aber genau eine solche.

Es scheint Du nimmst in irgend einer weise Einfluss auf JOSM, wie machst Du das?
arbeitest Du am JOSM Sourcecode mit?

Deine Methode setzt nun voraus dass das zu prüfende Original hierbei vollständig in den Editor geladen ist. Das entfällt bei meiner Vorgangsweise, da die Prüfung bei dieser mit Realdaten erfolgt. Das ist unglaublich einfach. Einfach ist gut.

Ich verstehe auch Deine Entwicklung in immer kleinere Teilbereiche zu gehen. Inzwischen bist du ja in Prüfgröße je Straße angelangt.
Mir gefällt meine Methode nun nach PLZ vorzugehen immer besser, wir treffen uns dort in Deiner ersten BEV Adressaufbereitung nach PLZ.

Manchmal ist wohl der erste Wurf der beste.
Daher Gratulation zu Deiner ersten Arbeit, Österreichs Adressen nach Postleitzahl sortiert, zu finden per Link in meiner Signatur.

addr:city ist im Wiki definiert mit

und selbst die Gemeinde Wienerwald gibt ihre Anschrift als

Gemeinde Wienerwald
Kirchenplatz 62
2392 Sulz im Wienerwald

an, wobei es sogar nur einen Kirchenplatz in der gesamten Gemeinde gäbe. MMn. ist beides korrekt, in dem Fall eher die Katastralgemeinde, es ist nur bei der automatischen Auswertung mit der Gemeinde leichter, dass es konsistent ist und dabei keine Fehler passieren.

Dazu muss man aber schon anmerken, dass keine Gemeinde freiwillig in der PLZ Zeile ihre Nachbargemeinde anführt, das verletzt den Stolz und Selbstwertgefühl ungemein.

Gemeinden schreiben das so, weil ihnen das der frühere Monopolist so diktiert und aufgezwungen hat.
https://de.wikipedia.org/wiki/Bahnpost

Mit der https://www.ots.at/t/postmarkt-liberalisierung hat sich diese Post Bequemlichkeit zum Problem für einen wirklich freien Wettbewerb gewandelt. Mitbewerber betreiben andere Verteilzentren, und selbst die gute alte Post, hat ihre Verteilzentren in Erwartung eines freien Marktes inzwischen komplett neu strukturiert, geblieben sind aber vielfach die alten PLZ Bezeichnungen.

Österreichs Gemeinden sind in den letzten 20 Jahren daher mit einer Reihe von PLZ Umbenennungen konfrontiert, dieser Prozess ist wohl noch lange nicht abgeschlossen. https://www.youtube.com/watch?v=iPn8L9cZr_g Wenn wir in OSM nun die Wahl haben, so sollten wir uns nicht unbedingt an Post Monopol Zeiten orientieren.

Die PLZ 2392 nennt sich laut https://www.post.at/geschaeftlich_werben_produkte_und_services_adressen_postlexikon.php tatsächlich

PLZ Ort Bundesland
2392 Sulz im Wienerwald N

edit: Videos

Es gibt ja keine Ortschaft “Wienerwald”

https://de.wikipedia.org/wiki/Gemeinde_(Österreich)#Gemeindename

Das war von mir ja auch nur exemplarisch gemeint.

Die Politische Gemeinde nennt sich “Gemeinde Wienerwald”.

Demnach wäre:
addr:city=Gruberau
addr:country=AT
addr:housenumber=54
addr:postcode=2392
addr:street=Heiligenkreuzer Straße
at_bev:addr_date=2018-04-02

falsch, da laut Post

addr:city=Gruberau
addr:country=AT
addr:housenumber=54
addr:postcode=2392, Sulz im Wienerwald
addr:street=Heiligenkreuzer Straße
at_bev:addr_date=2018-04-02

anzuwenden wäre.

In welchem Datenfeld würdest Du den PLZ Appendix “Sulz im Wienerwald” unterbringen?
https://wiki.openstreetmap.org/wiki/DE:Key:addr
Wobei ich davon ausgehe dass ein Brief auch per: “2392 Gemeinde Wienerwald” ankommen wird

Meine Vorgangsweise aktuell:

addr:city=Gemeinde Wienerwald
addr:suburb=Gruberau
addr:country=AT
addr:housenumber=54
addr:postcode=2392
addr:street=Heiligenkreuzer Straße
at_bev:addr_date=2018-04-02

Wikipedia schreibt bei Grub, einfach frech https://de.wikipedia.org/wiki/Grub_(Gemeinde_Wienerwald)
2392 Grub

Stichtagsdaten vom 1.4.2019 sind online

Neben den vollständigen Daten habe ich diesmal auch alle zum Stichtag schon in OSM vorhandenen Adressen herausgefiltert mit einer gewissen Toleranz was Schreibweise betrifft und unter Berücksichtigung von alt_name/official_name. Der Filter findet hier nur auf Ebene der Hausnummer statt, also wenn diese gefunden wird, werden auch alle Unteradressen entfernt. Es gilt aber natürlich genau das gleiche, wie für alle anderen Daten, insbesondere sind auch diese NICHT zum blinden Importieren geeignet.

Liste mit geänderten Straßennamen

Neue Straßen (-IDs)

Ich habe auch den Einleitungstext komplett überarbeitet um ihn an die aktuellen Gegebenheiten anzupassen und veraltete Informationen zu streichen

Luzandros Adresslisten anwenden: https://addresshistory.wordpress.com/2019/04/26/luzandros-adresslisten-nutzbar-machen/

Wichtiger Hinweis: Luzandros Adressen sind mit Störadressen überlagert (vergleichbar militärisches und ziviles GPS), diese Störadressen finden sich daher auch in GMaps wieder. Es benötigt daher spezielle Techniken um Luzandros Adressen, unseren Qualitätsansprüchen entsprechend, für OSM tauglich zu machen.
Ref: https://www.openstreetmap.org/changeset/70171175

  1. Mai 2019. Aktueller Hinweis:
    Zwei Monate sind weitgehend untätig verstrichen. Ich plane nun einen systematischen Gesamtimport der Diffs. Es enstehen dann jeweils Changesets in Bezirksgrösse, also je ein Changeset je Bezirk, und hinzugefügte Adressen die mit dem Stichtagsmerker “at_bev:addr_date”=“2019-04-01” versehen sind. Bereits gemappte Adressen bleiben hierbei erhalten. Beschreibung hier: https://addresshistory.wordpress.com/2019/05/25/adressen-in-osterreich/

Ref: Abfrage zur Kontrolle ob die Adress- Veröffentlichung vom ersten April bereits in einer Region eingepflegt ist.

[out:xml][timeout:25][bbox:{{bbox}}];
{{geocodeArea:Austria}}->.searchArea;
(
 node
  ["at_bev:addr_date"="2019-04-01"](area.searchArea)({{bbox}});
  way
  ["at_bev:addr_date"="2019-04-01"](area.searchArea)({{bbox}});
  relation
  ["at_bev:addr_date"="2019-04-01"](area.searchArea)({{bbox}});
);
(._;>;);
out meta;

Update: 30. Mai 2019
Im Adresssatz von Luzandro sind im Osten von Österreich auch Identadressen und Pseudoadressen im Mix enthalten. Nachdem wir solche Adresstypen in OpenStreetMap aber nicht mappen, besteht bei einem Import Gefahr, dass hierdurch solche Pseudoadressen in unser Projekt gelangen. Daher habe ich die Anwendung von Luzandros Adressen in von diesem Problem betroffenen Regionen nun eingestellt.
Vielleicht wird in weiteren Veröffentlichungen von Adresslisten durch Luzandro dieses Problem berücksichtigt. Derzeit sind seine Listen in solchen Regionen nicht sinnvoll anwendbar.