Bundesländer Polygone mit imposm

Hallo,

ich habe den Deutschland-Extrakt der Geofabrik mit imposm in eine PostGIS-Datenbank geladen. Soweit hat auch alles funktioniert, allerdings benötige ich die Landmasse-Grenzen (land_area=administrative) der Bundesländer und nicht nur die boundary mit der Grenze im Wasser (Nord- und Ostsee). Ich habe versucht das Mapping für imposm anzupassen. Für Schleswig-Holstein hat es funktioniert, allerdings nicht für Niedersachsen und Mecklenburg-Vorpommern.

Kann jemand von euch mein Problem reproduzieren, liegt es an mir oder den OSM-Daten?

Das folgende Mapping sollte doch die Landmasse Polygone in der Datenbank anlegen, oder?


admin = Polygons(
    name = 'admin',
    mapping = {
        'land_area': (
            'administrative',
        ),
    },
    fields = (
        ('admin_level', OneOfInt('1 2 3 4 5 6'.split())),
    ),
)


Vielen Dank fürs Lesen. Freue mich über jeden weiteren Tipp…

Viele Grüße,
Thorsten

an den daten:


   id    |              ?column?              |   land_area    
---------+------------------------------------+----------------
   62611 | Baden-Württemberg                  | 
 2145268 | Bayern                             | 
   62422 | Berlin                             | 
   62504 | Brandenburg                        | 
   62718 | Freie Hansestadt Bremen            | 
   62782 | Hamburg                            | 
  451087 | Hamburg (Landmasse)                | administrative
   62650 | Hessen                             | 
   28322 | Mecklenburg-Vorpommern             | 
   62774 | Mecklenburg-Vorpommern (Landmasse) | administrative
   62771 | Niedersachsen                      | 
  454192 | Niedersachsen (Landmasse)          | administrative
   62761 | Nordrhein-Westfalen                | 
   62341 | Rheinland-Pfalz                    | 
   62372 | Saarland                           | 
   62467 | Sachsen                            | 
   62607 | Sachsen-Anhalt                     | 
   51529 | Schleswig-Holstein                 | 
   62775 | Schleswig-Holstein (Landmasse)     | administrative
   62366 | Thüringen                          | 
(20 rows)

land_area ist nur bei den 4 kritischen Grenzen gesetzt - ist eigentlich unsinnig. Lösung: Die Binnenländer korrigieren?

Gruss
walter

Nachtrag: nee , das erklärt auch nicht wieso schleswig-hst geht und der rest nicht. eigentlich sollte bei ihm Bremen fehlen?
naja, unsinnig sind die Werte auf jeden Fall. Damit rauszukriegen, welche der beiden Möglichkeiten die richtige ist, ist schon ein Glücksspiel.

Ich habe jetzt noch einmal den Deutschland-Extrakt mit dem folgenden Mapping importiert:

admin = Polygons(
    name = 'admin',
    mapping = {
        'boundary': (
            'administrative',
        ),
        'land_area': (
            'administrative',
        ),
    },
    fields = (
        ('admin_level', OneOfInt('4'.split())),
    ),
)

Damit sollte der Import schneller gehen und zu Testzwecken nur die Bundeslandgrenzen (Level 4) importieren.

Danach sind in der Tabelle osm_new_admin die folgenden Zeilen vorhanden:

  osm_id   |              name              |      type      
-----------+--------------------------------+----------------
     62422 | Berlin                         | administrative
     62504 | Brandenburg                    | administrative
     62718 | Freie Hansestadt Bremen        | administrative
     62782 | Hamburg                        | administrative
    451087 | Hamburg (Landmasse)            | administrative
     62650 | Hessen                         | administrative
     28322 | Mecklenburg-Vorpommern         | administrative
     62771 | Niedersachsen                  | administrative
     62761 | Nordrhein-Westfalen            | administrative
     62341 | Rheinland-Pfalz                | administrative
     62372 | Saarland                       | administrative
     62467 | Sachsen                        | administrative
     62607 | Sachsen-Anhalt                 | administrative
     51529 | Schleswig-Holstein             | administrative
     62775 | Schleswig-Holstein (Landmasse) | administrative
     62366 | Thüringen                      | administrative
 126446216 |                                | administrative
(17 rows)

Auffälligkeiten:

  • Es fehlen z.B. die Landmassen von Niedersachsen und Mecklenburg-Vorpommern
  • Es fehlen z.B. die Bundesländer Baden-Würtemberg, Bayern, Bremen
  1. Kann jemand sagen ob die Daten schon im Extrakt fehlen oder wo die Polygone auf der Strecke bleiben?
    Die eigentlichen Daten in den Bundesländern sind bei einem kompletten Import vorhanden.

Ein JOSM-Export von Mecklenburg-Vorpommern lies sich auch nicht Importieren (=es kommen keine Daten in der DB an).
2. Wie könnte ich zu Testzwecken ein .osm File nur mit der Landmasse von Mecklenburg-Vorpommern per API, XAPI, OverpassAPI oder anderem exportieren?

Vielen Dank für eure Unterstützung,
Thorsten

vielleicht sind die grad kaputt. Nimm mal die letzten vollständigen ccbysa Daten

Mecklenburg-Vorpommern war kaputt, hab’s repariert.

Vielen Dank! Ich werde mal gucken was du repariert hast und versuchen, das auf die anderen zu übertragen. Hast du noch einen kurzen Tipp, wie man solche Fehler am besten findet?

Liegt wohl echt an OSM-Daten. Ich habe einen alten Deutschland-Extrakt vom 5.7.12 importiert und die Polygone anderer Bundesländer erhalten, leider wieder keine vollständige Liste:

  osm_id   |                name                |      type      
-----------+------------------------------------+----------------
   2145268 | Bayern                             | administrative
     62422 | Berlin                             | administrative
     62504 | Brandenburg                        | administrative
     62718 | Freie Hansestadt Bremen            | administrative
     62782 | Hamburg                            | administrative
    451087 | Hamburg (Landmasse)                | administrative
     62650 | Hessen                             | administrative
     28322 | Mecklenburg-Vorpommern             | administrative
     62774 | Mecklenburg-Vorpommern (Landmasse) | administrative
     62771 | Niedersachsen                      | administrative
     62761 | Nordrhein-Westfalen                | administrative
     62341 | Rheinland-Pfalz                    | administrative
     62372 | Saarland                           | administrative
     62467 | Sachsen                            | administrative
     62607 | Sachsen-Anhalt                     | administrative
     51529 | Schleswig-Holstein                 | administrative
     62775 | Schleswig-Holstein (Landmasse)     | administrative
     62366 | Thüringen                          | administrative
 126446216 |                                    | administrative
(19 rows)

Meck-Po habe ich über http://tools.geofabrik.de/osmi/debug.html?view=multipolygon&lon=11.74158&lat=53.81411&zoom=8&opacity=0.80&overlays=invalid_geometry_hull,duplicate_ways,intersections,intersection_lines,ring_not_closed_hull,ring_not_closed,unconnected_end_nodes,role_mismatch_hull,role_mismatch,duplicate_tags_hull,duplicate_tags
als defekt identifiziert. Leider ist OSMI bei Relationen nicht aktuell.

BW habe ich mit JOSM angeschaut, sieht in Ordnung aus. Allerdings kommt der Relation Analyser auch mit der etwas komplizierten Grenzsituation im Norden nicht zurecht.
http://ra.osmsurround.org/analyzeMap?relationId=62611

Vielen Dank! Diese Tools schaue ich mir für diesem Zusammenhang mal genauer an…

moin moin,

spätestens wenn die Liste endlich komplett ist (ich kann inzwischen keine Probleme mehr finden), kommt das nächste:
Die Unterscheidung zwischen Land_Area und “Wassergrenze” funzt nicht, da die Tags unsauber sind:


osm=# select id, 
       tags->'name' "name",
       tags->'boundary' "boundary",
       tags->'land_area' "land_area"
  from relations
 where st_contains((select geom from relations where id=1111111),st_centroid(geom))
   and tags->'admin_level'='4'
 order by tags->'name';

   id    |                name                |    boundary    |   land_area    
---------+------------------------------------+----------------+----------------
   62611 | Baden-Württemberg                  | administrative | 
 2145268 | Bayern                             | administrative | 
   62422 | Berlin                             | administrative | 
   62504 | Brandenburg                        | administrative | 
   62718 | Freie Hansestadt Bremen            | administrative | 
   62782 | Hamburg                            | administrative | 
  451087 | Hamburg (Landmasse)                | administrative | administrative
   62650 | Hessen                             | administrative | 
   28322 | Mecklenburg-Vorpommern             | administrative | 
   62774 | Mecklenburg-Vorpommern (Landmasse) |                | administrative
   62771 | Niedersachsen                      | administrative | 
  454192 | Niedersachsen (Landmasse)          |                | administrative
   62761 | Nordrhein-Westfalen                | administrative | 
   62341 | Rheinland-Pfalz                    | administrative | 
   62372 | Saarland                           | administrative | 
   62467 | Sachsen                            | administrative | 
   62607 | Sachsen-Anhalt                     | administrative | 
   51529 | Schleswig-Holstein                 | administrative | 
   62775 | Schleswig-Holstein (Landmasse)     |                | administrative
   62366 | Thüringen                          | administrative | 
(20 rows)

boundary=administrative fehlt bei 3 von 4 Landmassen.
Ausserdem ist land_use=administrative auch irgendwie “blöd”. land_use=yes/no je nach Lage ist hier wohl angebrachter.

Die derzeit einzig sichere Methode wäre ein Scan des Namens auf “(Landmasse)”- eigentlich eine Zumutung.

Gruss
Walter

p.s. Ich würde es ja gerne ändern, aber ihr seid ja bei Grenzen so sensibel :wink:

Hi bluescreen,

um die passenden Grenzrelationen zu suchen, schau entweder im OSM wiki zu jedem Bundesland, Landkreis o.ä. … oder suche bei http://nominatim.osm.org (Datenstand beachten!) nach dem jeweiligen Namen … oder schau unter http://ags.misterboo.de nach.

Ob die Grenzrelationen dann einzeln intakt sind, prüfe dann wie erwähnt in dem multipolygon-View vom OSM-Inspector auf geofabrik.de (Datenstand beachten!) oder im Relations-Editor von JOSM.

Gruß, Stephan

Inzwischen ist die Landmassen-Relation von Mecklenburg-Vorpommern in meiner Datenbank angekommen. Vielen Dank an fx99 fürs reparieren.
Nach http://ra.osmsurround.org/analyzeRelation?relationId=454192 ist Niedersachsen (Landmasse) in Ordnung, schafft es aber nicht durch imposm. Baden-Württemberg ist nach http://ra.osmsurround.org/analyzeRelation?relationId=62611 in einem unbekannten Zustand und auch nicht in meiner Datenbank angekommen.


select name, osm_id from osm_new_admin;

                name                |  osm_id   
------------------------------------+-----------
 Mecklenburg-Vorpommern             |     28322
 Schleswig-Holstein                 |     51529
 Thüringen                          |     62366
 Saarland                           |     62372
 Berlin                             |     62422
 Sachsen                            |     62467
 Brandenburg                        |     62504
 Rheinland-Pfalz                    |     62341
 Freie Hansestadt Bremen            |     62718
 Nordrhein-Westfalen                |     62761
 Bayern                             |   2145268
 Niedersachsen                      |     62771
 Mecklenburg-Vorpommern (Landmasse) |     62774
 Schleswig-Holstein (Landmasse)     |     62775
 Hamburg                            |     62782
 Sachsen-Anhalt                     |     62607
 Hessen                             |     62650
 Hamburg (Landmasse)                |    451087
                                    | 126446216
(19 rows)

Hier ist auch etwas mit den Grenzen kaputt gegangen:
http://www.openstreetmap.org/?lat=50.31675&lon=12.10152&zoom=17&layers=M&way=166224170

Mangels Ortskenntnis kann ich das nicht fixen.

Da braucht es nicht Ortskenntnis, sondern einen dicken Revert. Problem ist Changeset #12562091, wo User adjuva stattliche 8361 Knoten verschoben hat. Vorher muß noch die fehlerhafte Reparatur durch User xificurk in Changeset #12659151 rückgängig gemacht werden - und evtl. weitere Korrekturversuche an anderen Orten.

Edit: Diese Stelle ist repariert, aber 8347 Knoten müssen noch zurück verschoben werden. Cobra? Ich könnte mich erst morgen daran versuchen.

In jedem Fall eine Bitte an alle, die hier mitlesen: Bitte vorerst keine Grenzen in DE korrigieren, das verkompliziert nur die eigentliche Reparatur.

Wie findet man den Changeset, ich hab in die History der Relationen und ways geschaut, aber nichts gefunden.

Na, wenn bei Relationen und Wegen nichts zu finden ist, was bleibt denn noch? :wink: Richtig, die Knoten. Da findet sich ganz oft die Ursache verbeulter Relationen. Im konkreten Fall hat aber xificurk in seinem Changeset-Kommentar den Hinweis auf das eigentliche Problem gegeben. Er hatte es richtig erkannt, dann aber leider mit seinem Reparaturversuch verschlimmbessert.

Oli, das interessiert mich. Du hast in vorhanden Nodes der Relationen bzw dieses speziellen Ways geschaut, oder? Jetzt frag ich mich, was eine neue Relations-Version erzeugt. Ein Ändern von Nodes scheinbar nicht. Würde ein Löschen eines Nodes, der Mitglied eines Way ist, der in einer Relation steckt eine neue Relations-Version erzeugen? Glaube nicht. Aber es würde eine neue Way-Version erzeugen. Würde die Änderung von Tags eines Ways eine neue Relations-Version erzeugen? Ich bin mir sicher, dass es das nicht tut…die Löschung eines Ways sollte es aber.
Wenn ich jetzt eine fehlerhafte Relation habe, müsste ich -sofern ich nicht weiß welches Segment es betrifft-alle Ways abklappern. Und wenn die Ursache eine Verschiebung eines Nodes war, die keine neue Way-Version erzeugt, finde ich das Problem nie!?

Stimmt alles.

Glücklicherweise zeigt der OSM Inspector nicht nur, daß, sondern auch, wo ein Problem vorliegt - verschobene Knoten erzeugen typischerweise “invalid geometry”. In solchen Fällen schaue ich mir die Knoten in der Nähe an - welche wurden erst kürzlich bewegt? Ein Indiz ist oft auch, daß etliche Knoten von Bearbeiter A stammen und einige wenige von Bearbeiter B. Wenn Problemkandidaten identifiziert sind, mache ich deren letzte Änderungen probeweise in JOSM rückgängig - meistens sieht man dann schon, ob der Fehler so zu beheben ist oder ob noch mehr kaputt ist. Im hier gezeigten Fall war naheliegend, daß der Fehler in der näheren Umgebung des Dreiländerpunkts liegen mußte.

Danke. Also externe Tools wie OSMI. Ich hatte gehofft, es gibt eine Abkürzung die ich nicht kenne

Update: Revert von 8220 verschobenen Knoten läuft ist durch; die übrigen wurden bereits anderweitig bearbeitet und sind daher vom Revert ausgenommen, müssen später noch manuell überprüft werden.
Edit: Auch das ist erledigt.

An dem Beispiel sieht man mal wieder, wozu die “Viele Knoten verschoben”-Warnung in JOSM gut ist - solange man sie nicht abschaltet.

Die Verschiebungen betreffen ausschließlich Sachsen und dessen Grenzen zu seinen Nachbarländern. Sonstige Fehler anderswo können also behoben werden, ohne mit der Reparatur von #12562091 in Konflikt zu geraten. Reparatur ist abgeschlossen, keinerlei Gefahr von Konflikten mehr.

Stimmt, deshalb lass ich sie ja auch an - hat mich schon mehrfach gerettet.
Wie allerdings ein Profi (seit 2009 dabei!) nicht reagiert, wenn josm letztendlich 8300 Nodes hochladen will, ist mir schleierhaft. DIE Meldung kann man doch nicht ausschalten?

Gruss
walter