Internationale Administrative Grenzen

Das sollen “Ortsteile” eines gemeindefreien Gebiets (Perlacher Forst) sein. Ich vermute mal, dass es sich hier eher um Fluren handelt, die keinerlei administrative Bedeutung haben und auch nicht getaggt werden müssen.

EDIT: https://www.openstreetmap.org/relation/4140554 ist Müll und muss gelöscht werden. Das gibt es nicht.

Ja, das ist wahrlich seltsam… Forstabteilungsgrenzen sind keine administrativen Grenzen… zu einem ähnlichen Thema gab es mal einen Beitragsbaum: http://forum.openstreetmap.org/viewtopic.php?id=21962

In Anlehnung dessen wäre dann wohl boundary=forest_compartment mit ref=* ect. korrekt.
…und daß man in Bayern für Forstabteilungen preußische Jagen verwendet hat, wage ich ganz stark anzuzweifeln… Ich bin aber kein Forstkundiger, ich weiß nicht, welches Forsteinteilungssystem in Bayern verwendet wurde…

Sven

Hallo Walter,

dieser Thread ist insgesamt etwas unübersichtlich und lang. Gibt es irgendwo eine genaue Beschreibung, was Du auf Deinem Server mit den Admingrenzen machst? Diese Boundaries-Webseite, wie oft aktualisierst Du die, und hast Du da irgendwelche Korrekturmechanismen drin, oder fällt ein leicht kaputtes Polygon gleich raus? (Habe zum Beispiel gestern zwei Selbstüberschneidungen am Rio Grande gefixt, die bei mir das Texas-Polygon kaputt gemacht haben, aber Du scheinst damit kein Problem gehabt zu haben?) Oder behältst Du alte Polygone vom letzten Durchlauf, wenn eins kaputt geht? Hast Du im Fall kaputter Polygone auch Analysen dazu, was genau kaputt ist? Baust die die Polygone mit GEOS/PostGIS, mit JTS, oder mit Eigenbau-Code? Welche Referenzdaten nimmst Du, um die Ist-Situation aus OpenStreetMap mit einem “Soll” zu vergleichen? Liest Du irgendwelche Wikiseiten dafür automatisch ein? Gibst Du Deine Software und/oder die Rohform Deiner Rechenergebnisse raus, oder willst Du, dass das alles auf Deinem Server bleibt? Arbeitest Du noch an neuen Features der Adminbounds-Analyse und wenn ja, an welchen?

Ich bin sicher, das ist alles irgendwo erklärt und die, die das hier seit Jahren verfolgen, wissen vermutlich alles, aber ich nicht :wink:

Ich bin etwas unzfrieden damit, wie die Adminbounds-Situation derzeit im OSM Inspector dargestellt wird, und will das gern mal alles besser machen. Ich weiss noch nicht, wie genau. Entweder baue ich selber was, oder ich kann irgendwelchen Code von Dir benutzen, oder vielleicht auch nur regelmässig Deine Rechenergebnisse herunterladen und im OSMI anzeigen lassen (natürlich mit ordentlichem Herkunftsnachweis). Das hängt alles auch ein bisschen davon ab, was so Deine Pläne sind und was Dir recht wäre.

Bye
Frederik

Hallo Frederik,
für eine Verbesserung des OSM-Inspectors käme von mir der Hinweis auf den Web-Dienst von User misterboo:

http://ags.misterboo.de

Nur sind die Quelldaten dort veraltet, und es scheint mir so, dass misterboo nicht mehr in OSM aktiv ist, oder irre ich mich da?

Falls irgendwer noch Kontakt zu ihm hat: Wäre vielleicht eine Freigabe seiner Quelltexte für eben diese Auswertung möglich? Dann könnte man da doch bestimmt etwas schickes zur Auswertung der Grenzen basteln.

ja, das ergibt sich schon mal, weil ich jeden Tag den aktuellen Stand dranhänge. Eventuell sollte ich das anders realisieren.

so viele Fragen :wink:

  • an der Beschreibung hapert es natürlich.

  • die Aktualisierung läuft jede Nacht, wertet aber nur einen Teil der Grenzen aus. Das steuere ich händisch und werte immer DEU, dann die aktuell kritischen Länder und danach noch ca 1 Dutzend andere aus. Der Job startet ca 1:00 Nacht und ist meistens so um 7:00 Uhr fertig. Nebenprodukt dieses Jobs ist die aktuelle Auswertung, die ich morgens immer poste. Wenn man die Wiki-Seite betrachtet, sollte man erkennen, das jedes Land spätestens nach ca 4 Wochen wieder dran kommt.

  • ich importiere die Diffs ganz normal mit Osmosis und osm2pgsql. osm2pgsql bügelt ja viele Sachen aus, ich mache da nix.

Ja, ich vergleiche immer die Grenzen vom letzten Lauf mit der aktuellen Auswertung. Aber einfach auf Zugang, Verlust und Größenänderung.

nein.

wie oben schon erwähnt: osmosis + osm2pgsql und natürlich sehr viel pl/sql PostGis.

Ich habe das Wiki durchgeackert und daraus meine “Referenztabelle” für die ersten 3 Level zusammengestellt. Einen Automatismus gibt es nicht und manche “Bewertungen” sind auch noch diskussionswürdig.

Ich gebe gerne alles raus, bin mir aber nicht sicher, ob jemand was mit meinem Spagetti-Code anfangen kann. Basiert zu 90% auf Java und 10% Bash. An neuen Features bastel ich derzeit nicht, kann aber immer wieder geschehen.

Nö, beschrieben hab ich wirklich nicht viel. Drücke mich halt gerne drum.

Ich bin für alles offen, aber :

Das Hauptprodukt dieser Auswertung und auch der Grund dafür, daß die so fürchterlich lange dauert, ist was anderes:

Ich baue jede Nacht einen “Materialized Tree” auf, der die genauer Verschachtelung der verschiedenen Admin-Levels beschreibt. (welche AL4 liegen in DEU? Welche AL6 in BW? Welche AL9 in Karslruhe, …
Das sieht dann für deine Ecke so aus:


   id    |                      value                       | level |                        path                        
---------+--------------------------------------------------+-------+----------------------------------------------------
   22027 | Regierungsbezirk Karlsruhe                       | 5     | {0,51477,62611,22027}
   62340 | Baden-Baden                                      | 6     | {0,51477,62611,22027,62340}
   62354 | Landkreis Freudenstadt                           | 6     | {0,51477,62611,22027,62354}
  935834 | Alpirsbach                                       | 8     | {0,51477,62611,22027,62354,935834}
  935836 | Loßburg                                          | 8     | {0,51477,62611,22027,62354,935836}
  935839 | Baiersbronn                                      | 8     | {0,51477,62611,22027,62354,935839}
 2946717 | Verwaltungsgemeinschaft Horb am Neckar           | 7     | {0,51477,62611,22027,62354,2946717}
  935829 | Horb am Neckar                                   | 8     | {0,51477,62611,22027,62354,2946717,935829}
  935840 | Empfingen                                        | 8     | {0,51477,62611,22027,62354,2946717,935840}
  935841 | Eutingen im Gäu                                  | 8     | {0,51477,62611,22027,62354,2946717,935841}
 2953248 | Vereinbarte Verwaltungsgemeinschaft Freudenstadt | 7     | {0,51477,62611,22027,62354,2953248}
  935831 | Bad Rippoldsau-Schapbach                         | 8     | {0,51477,62611,22027,62354,2953248,935831}
  935835 | Seewald                                          | 8     | {0,51477,62611,22027,62354,2953248,935835}
  935838 | Freudenstadt                                     | 8     | {0,51477,62611,22027,62354,2953248,935838}
 2957318 | Verwaltungsgemeinschaft Pfalzgrafenweiler        | 7     | {0,51477,62611,22027,62354,2957318}
  935830 | Wörnersberg                                      | 8     | {0,51477,62611,22027,62354,2957318,935830}
  935833 | Grömbach                                         | 8     | {0,51477,62611,22027,62354,2957318,935833}
  935837 | Pfalzgrafenweiler                                | 8     | {0,51477,62611,22027,62354,2957318,935837}
 2957319 | Verwaltungsverband Dornstetten                   | 7     | {0,51477,62611,22027,62354,2957319}
  935832 | Dornstetten                                      | 8     | {0,51477,62611,22027,62354,2957319,935832}
  935842 | Schopfloch                                       | 8     | {0,51477,62611,22027,62354,2957319,935842}
  935843 | Waldachtal                                       | 8     | {0,51477,62611,22027,62354,2957319,935843}
  935844 | Glatten                                          | 8     | {0,51477,62611,22027,62354,2957319,935844}
   62388 | Landkreis Rastatt                                | 6     | {0,51477,62611,22027,62388}
  907194 | Forbach                                          | 8     | {0,51477,62611,22027,62388,907194}
  907232 | Gaggenau                                         | 8     | {0,51477,62611,22027,62388,907232}
 1188924 | Bühlertal                                        | 8     | {0,51477,62611,22027,62388,1188924}
 2959873 | Vereinbarte Verwaltungsgemeinschaft Gernsbach    | 7     | {0,51477,62611,22027,62388,2959873}
  309860 | Loffenau                                         | 8     | {0,51477,62611,22027,62388,2959873,309860}
  907212 | Gernsbach                                        | 8     | {0,51477,62611,22027,62388,2959873,907212}
 2793220 | Lautenbach                                       | 9     | {0,51477,62611,22027,62388,2959873,907212,2793220}
 2793222 | Reichental                                       | 9     | {0,51477,62611,22027,62388,2959873,907212,2793222}
...
  285864 | Heidelberg                                       | 6     | {0,51477,62611,22027,285864}
 3283775 | Altstadt                                         | 9     | {0,51477,62611,22027,285864,3283775}
 3283776 | Bahnstadt                                        | 9     | {0,51477,62611,22027,285864,3283776}
 3283777 | Bergheim                                         | 9     | {0,51477,62611,22027,285864,3283777}
 3283778 | Boxberg                                          | 9     | {0,51477,62611,22027,285864,3283778}
 3283779 | Emmertsgrund                                     | 9     | {0,51477,62611,22027,285864,3283779}
 3283780 | Handschuhsheim                                   | 9     | {0,51477,62611,22027,285864,3283780}
 3283781 | Kirchheim                                        | 9     | {0,51477,62611,22027,285864,3283781}
 3283782 | Neuenheim                                        | 9     | {0,51477,62611,22027,285864,3283782}
 3283783 | Pfaffengrund                                     | 9     | {0,51477,62611,22027,285864,3283783}
 3283784 | Rohrbach                                         | 9     | {0,51477,62611,22027,285864,3283784}
 3283785 | Schlierbach                                      | 9     | {0,51477,62611,22027,285864,3283785}
 3283786 | Südstadt                                         | 9     | {0,51477,62611,22027,285864,3283786}
 3283787 | Weststadt                                        | 9     | {0,51477,62611,22027,285864,3283787}
 3283788 | Wieblingen                                       | 9     | {0,51477,62611,22027,285864,3283788}
 3283789 | Ziegelhausen                                     | 9     | {0,51477,62611,22027,285864,3283789}
(344 rows)

Und damit versorge ich meine Boundaries-Karte.

Wenn es dagegen “nur” um eine Überprüfung der Grenzen auf Existenz, Korrektheit, Größenveränderungen und ähnliches geht - ohne die Verschachtelung zu erzeugen - geht das sicher einfacher und schneller. Diese tägliche Liste ist wirklich nur ein Spin-Off der Boundaries-Karte.

Solch eine Auswertung ohne Tree müsste schnell zu schreiben sein und man (ich? du? sonstwer?) könnte täglich den ganzen Globus untersuchen, aber eine tiefschürfende Analyse und Visualisierung eventueller Geometrie-Fehler traue ich mir nicht zu.

Diese kleine Weltkarte mit den manchmal fehlenden Ländern braucht z.B. nur ca 5 Minuten, dann ist die durch. und die Hälfte davon braucht QGis.

Gruss
walter

ps: links stehen alle unten im Subject.

Warum habe ich die aufgelistet?
Die waren schon lange mit type=boundary, boundary=administrative, admin_level=10 erfaßt und so natürlich absoluter Blödsinn. Diese drei Tags zusammen habe ich mal als “zulässige Verwaltungsgrenze” definiert und fahre damit ganz gut.
Und vorgestern hat nun jemand freundlicherweise das AL=10 entfernt und genau das hat meinen Auswertung bemerkt. —> missing und das ist gut so :wink:

Besser wäre es mMn boundary=administrative in boundary=??? umzutaggen, bloß “jagen” ist nun wirklich zu lokal.

Gruss
walter

Moin,

hier die Ergebnisse der letzten Auswertung:

Ausgewertet wurden erneut DEU, ARG, BOL, CHL, ITA und der M-Block

DEU: +14, -6
ARG: +6
ITA: -2
MAR: -4

Die AL2 sehen komplett aus.

Gruss
Walter

Kümmere ich mich jetzt drum.

EDIT: Done.

TNX :slight_smile:

Jan, ich überlege schon seit einiger Zeit, ob ich ich sowas wie bei den Fools machen soll: Eine Mini-Webseite, in der jedermann die erledigten Fehler “abhaken” kann. Nur bin ich derzeit ein wenig knapp mit der Zeit.

Hältst du das für sinnvoll/nötig oder reicht das einfache File für die 3-4 Kollegen auch so aus?

Gruss
walter

Für mich ist das so völlig ausreichend. Aber die Frage ist ja auch, welchen Aufwand Du jetzt durch die manuellen Postings hast.

Eine Frage übrigens noch dazu: Angenommen eine Grenze ist “missing” und bei der nächsten Auswertung nicht wieder da. Ist die dann in der Versenkung verschwunden oder merkt Du Dir in der DB alle “Vermissten”?

Der Aufwand ist noch relativ gering; ich hatte nur eher an euch gedacht, die immer wieder fehlerhafte Grenzen anfassen und dann sehen, dass ein Kollege die schon erledigt hat. Ich denk nochmals drüber nach, auch unter dem Aspekt, daß Frederik (woodpeck) da eventuell was machen möchte.

Nee, ich vergleiche nur “Gestern mit Heute”. Eine echte History ist da (noch) nicht drin.

Und ein Problem hab ich überhaupt noch nicht im Griff: Jemand löscht eine Grenze und trägt die neu ein. Alte Rel weg → missing; neue drin → new.
Kommt aber selten vor.

Gruss
walter

ps: ich überlege wirklich, die Erzeugung des Trees von der Grenzauswertung zu trennen. Mal sehen, was Frederik vorhat und wie sich das entwickelt.

Moinsen,
das Thema “Jagenzahlen” ist ein alter Hut:

http://forum.openstreetmap.org/viewtopic.php?id=11294

Den admin_level hat schon freundlicherweise jemand entfernt.

Chris

Moin,

hier die Ergebnisse der letzten Auswertung:

Ausgewertet wurden DEU, ARG, BOL, ITA, MAR, OMN und der N-Block

DEU: +10, -2
ARG: +1
ITA: +2
MAR: +4

Gruss
Walter

Hi, wie gestern bereits angedroht angedeutet, hier einen neue Auswertung aller Aministrativen Grenzen der Welt.


 Comparing 2014-10-29 22:29:59 with 2014-10-30 07:32:29

 Country | Relation | Missing Boundary 
---------+----------+------------------
 GBR     |  4142837 | Slaght (10)
         |   170053 | Paradise (8)
         |  4142836 | Appletee (10)
         |  4141140 | Appletee (10)
         |  4140050 | Cashel (10)
         |  4142808 | Kildrum (10)
         |  4142827 | Kildrum (10)
         |  4142807 | Kildrum (10)
         |  4142070 | Straid (10)
(9 rows)

 Country | Relation |              New Boundary              
---------+----------+----------------------------------------
 CHN     |  4147369 | 太平镇 (8)
 CHN     |  4147406 | 梅岭镇 (8)
 CHN     |  4147407 | 罗亭镇 (8)
 DEU     |  4147433 | Vasbeck (9)
 DZA     |  4147178 | Communes d'Oum El Bouaghi (3)
 DZA     |  4147176 | Communes d'Oum El Bouaghi (3)
 DZA     |  4147177 | Communes d'Oum El Bouaghi (3)
 DZA     |  4147145 | no name (3)
 DZA     |  4147171 | Oum El Bouaghi (3)
 GBR     |  4147246 | Appletee (10)
 GBR     |  4147248 | Carncome (10)
 GBR     |  4147020 | Fernisky (10)
 GBR     |  4147021 | Kells (10)
 GBR     |  4147251 | Ross (10)
 GBR     |  4112762 | Tullynamullan (10)
 IRL     |  4147079 | Ablintown (10)
 IRL     |  4147280 | Altclogh (10)
 IRL     |  4147285 | Attinkee (10)
 IRL     |  4147286 | Ballyloughan (10)
 IRL     |  4147281 | Braade Lower (10)
 IRL     |  4147282 | Braade Upper (10)
 IRL     |  4147287 | Bullock Island (10)
 IRL     |  4147288 | Carrick (10)
 IRL     |  4147102 | Cashel (10)
 IRL     |  4147289 | Cloghan (10)
 IRL     |  4147290 | Clonony Beg (10)
 IRL     |  4147291 | Clonony More (10)
 IRL     |  4147283 | Contycro (10)
 IRL     |  4147292 | Coolreagh or Cloghanhill (10)
 IRL     |  4147293 | Coraknock Glebe (10)
 IRL     |  4147294 | Cornamona (10)
 IRL     |  4147295 | Cortullagh or Grove (10)
 IRL     |  4147296 | Crancreagh (10)
 IRL     |  4147011 | Creagh (10)
 IRL     |  4147297 | Creggan and Glosterboy (10)
 IRL     |  4147131 | Creggaun (10)
 IRL     |  4147298 | Curraghlahan (10)
 IRL     |  4147299 | Cush (10)
 IRL     |  4147300 | Cushcallow or Cloncallow (10)
 IRL     |  4147060 | Fardystown (10)
 IRL     |  4147301 | Galros (10)
 IRL     |  4147071 | Glentaun (10)
 IRL     |  4147132 | Gorteenminoge Lower (10)
 IRL     |  4147302 | Guernal (10)
 IRL     |  4147303 | Haughtons Island (10)
 IRL     |  4147304 | Kilcamin (10)
 IRL     |  4147072 | Kilgarve (10)
 IRL     |  4147305 | Killeenboy (10)
 IRL     |  4147111 | Killure Castle (10)
 IRL     |  4147306 | Macoghlans Island (10)
 IRL     |  4147307 | Magherabane (10)
 IRL     |  4147186 | Meenavaghran (10)
 IRL     |  4147130 | Meenavean (10)
 IRL     |  4147308 | Minus Island (10)
 IRL     |  4147187 | Murntown Upper (10)
 IRL     |  4147309 | Park (10)
 IRL     |  4146962 | Parkmore (10)
 IRL     |  4147270 | Rathowen (Edward) (10)
 IRL     |  4147266 | Rathowen (Rathaspic Civil Parish) (10)
 IRL     |  4147061 | Roseland (10)
 IRL     |  4147229 | Staplestown (Morgan) (10)
 IRL     |  4147188 | Staplestown (Ram) (10)
 IRL     |  4147310 | Stonestown (10)
 IRL     |  4147311 | Streamstown (10)
 IRL     |  4147312 | Tonlemone (10)
 IRL     |  4146987 | Townparks (10)
 JPN     |  3318077 | Arida (7)
 RUS     |   939766 | Баганский район (6)
 RUS     |  1796896 | Артемовское сельское поселение (8)
 RUS     |  1796897 | Керчикское сельское поселение (8)
 RUS     |  3424224 | Новопесчанский сельсовет (8)
 RUS     |  3424228 | Рожковский сельсовет (8)
 RUS     |  4147359 | село Куруш (8)
 RUS     |  4147366 | село Садовое (8)
 RUS     |  3757638 | 
 USA     |  4147360 | Narragansett (8)
(76 rows)

 Country | Relation |        Boundary        |       way_area       |       way_area       |         Diff          |    Diff > 10%     
---------+----------+------------------------+----------------------+----------------------+-----------------------+-------------------
 BRA     |  4142029 | Vila Beira Rio II (10) | 3.00000010611257e-06 | 3.99999998990097e-06 |  9.99999883788405e-07 |            33.33%
 DEU     |  4122494 | Wetterburg (9)         |  0.00126000004820526 | 0.000976999988779426 | -0.000283000059425831 |           -22.46%
(2 rows)

Was mir so auffällt:

  • Bei 8 fehlenden Grenzen ist derzeit unklar, in welchem Land die lagen. Ich muss noch checken was da los ist.
  • In Algerien (DZA) hat wohl jemand mächtig Mist gebaut und eine Grenze mehrfach eingetragen. Ist kein Newbie und schafft mit Josm. Hat aber wirklich alles falsch gemacht, was man falsch machen kann. Nun denn, ist bereinigt.
  • Der Name einer russischen Grenze fehlt (in der Auswertung). Mal sehen.

Der Größenvergleich klemmt noch, da es gravierende Probleme bei der Flächenberechnung sehr großer Flächen gibt.
Funzt, wenn ich nicht in KM² umrechne. Hauptsache der Prozentwert ist aussagekräftig.

Ansonsten muss ich noch ein wenig an der Optik feilen aber eigentlich bin ich zufrieden.

Die Auswertung braucht etwa 2 Stunden und kann somit jede Nacht laufen und ich suche jetzt noch einen Weg, diese Liste automatisch auf meinen Webserver zu legen, damit ich diesen Thread nicht zumülle.

Gruss
walter

Unter Müll verstehe ich etwas anderes ;).
Aber ich stimme zu, unter einem Link wie “Fools” wäre so eine ständig aktualisierte Aufstellung besser aufgehoben.
Wenn bei Fools alle Regionen mit komplett “done” bei einer neuen Auswertung verschwinden, müsste die Liste “eigentlich” immer kürzer werden, wenn keine neuen Irren dazukommen. (Man beachte das Wort “wenn” :frowning: )

Moin,

hier die Ergebnisse der letzten Auswertung:

Ausgewertet wurden DEU, MAR, PRT, PSE, QAT und RUS

DEU: +23
PRT: +84, -2
RUS: +101, -1

Gruss
Walter

Danke auf jeden Fall mal für die vielen Antworten. Ich verdaue das mal.

Gehst Du da nach einer strengen “st_contains”-Regel vor, oder machst Du schmutzige Tricks ;)? Ich erinnere mich, dass ich sowas auch mal gemacht habe, und dann blieben immer ein paar Sorgenkandidaten übrig. Dann habe ich in einem ersten Schritt auch erlaubt, dass etwas “in Karlsruhe” liegt, wenn es in einem 50-Meter-Buffer um Karlsruhe herum liegt. Und bei denen, bei denen das nichts geholfen hat (wieder mal eine Stadt, die zu 10% in Mexiko liegt und zu 90% in den USA oder so), habe ich dann die Größe der Schnittmenge mit allen drüberliegenden Adminbounds ausgerechnet und es dem zugeschlagen, in dem es “hauptsächlich” liegt…

Und damit versorge ich meine Boundaries-Karte.

Wenn es dagegen “nur” um eine Überprüfung der Grenzen auf Existenz, Korrektheit, Größenveränderungen und ähnliches geht - ohne die Verschachtelung zu erzeugen - geht das sicher einfacher und schneller. Diese tägliche Liste ist wirklich nur ein Spin-Off der Boundaries-Karte.

Der Tree hilft natürlich, viele Fehler überhaupt erst zu finden. Einerseits müssen alle Admin-Areas üblicherweise eben in einer Mutter-Area liegen. Aber auch umgekehrt ist es ein Zeichen eines möglichen Problems, wenn eine Fläche auf Adminlevel X fast komplett von Kindern auf Adminlevel X+1 oder X+2 abgedeckt ist, aber eben nur fast… solche Sachen würde ich gern sichtbar machen, aber Du wirst sicherlich zustimmen, wenn ich sage, das ist alles etwas kniffliger als es sich auf den ersten Blick anhört :wink:

Bye
Frederik

Ich arbeite mit ST_PointOnSurface() und schaue dann mit ST_Contains() nach, in welchen Boundaries dieser Punkt liegt. Damit dürfte ich wohl keine “Randschärfenprobleme” haben.

Zur Steigerung der Performance habe ich das DB-Schema um eine Geo-Spalte “PointOnSurface” erweitert, die durch einen Trigger “gefüttert” wird. Jedesmal, wenn sich ein Polygon ändert, wird PointOnSurface=ST_PointOnSurface(way) automatisch neu berechnet und steht mir dann sehr günstig zur Verfügung.

Wem sagst du das? :wink: Kennst du meinen Boundaries-Karte? (url im Subjekt). Genau dafür - die Visualisierung verschachtelter Grenzen - hab ich das mit dem Tree ja gemacht. Ist nur ziemlich zäh was die Darstellung mit OpenLayers betrifft.

Wenn du das einbauen möchtest, gerne. Ich stell dir natürlich auch alle Sourcen zur Verfügung, ist aber alles in Java und zumindest als Vorlage geeignet.
Was bei mit fehlt, ist einen automatische Analyse der Verschachtelung was Fehler betrifft, das geht bei mir nur visuell.

Gruss
walter

  4148168 | DEU     | Giebringhausenr (9)

Das sieht doch sehr nach einem Schreibfehler aus.

Zwischenbemerkung:
In Polen wird admin_level 10 abgeschafft, warum auch immer.