Polygone für Boundaries extrahieren

Jo, das sind (zu) viele, die ich derzeit freigegeben habe.

sollte eigentlich gehen - nur ob das Sinn macht?

Danke, das war halt ein Schnellschuss um Götzt zu helfen.

Ich suche derzeit eine Möglichkeit im GeoServer auf Layerebene WMS freizugeben und WFS zu sperren. Global geht das, aber pro Layer?

nun denn

Gruss
walter

ps: mer sollten das hier schließen. Es geht immerhin um die PLZ-Grenzen und nicht um meinen GeoServer.

@wambacher. Danke, dass Du helfen willst, ich verstehe aber geade nur Bahnhof. Du hast also einen Link eingestellt worüber ich Grenzregionen in QGIS einladen kann?!
Muss ich mich erstmal einlesen…
http://de.digital-geography.com/qgis-tutorial-teil-7-einbindung-von-wms-diensten-im-gis-wms-wcs-wfs/#.V7XuxjWaqUk

Okay, habe jetzt die Boundaries über Deinen WMS Link geladen, aber eine Beschriftung=PLZ kann ich analog den von mir genannten SHP nicht dazuladen…und bei Speichern unter kommen nur Grafikformate?!

Jo. Aber BITTE BITTE trenne den Begriff Grenzregionen von den PLZ-Grenzen. das sind 2 verschiedene Relationssätze, die nichts miteinander zu tun haben. Und ich muss immer genau wissen, welche “Grenze” du gerade meinst: PLZ oder Admin. Hier geht es wohl um PLZ-Grenzen, dann nenne die bitte auch so.

Muss ich mal nachsehen.
Ich bekomme da mehr als ein Dutzend wunderhübsche Dateiformate angeboten - nix nur Grafik

QGIS hab ich hier aber erstmal nur zum Abrufen und Visualisieren der WNF-Daten genommen. Ob da weitere Schritte für dich sinnvoll sind, kann ich nicht beurteilen.

Da du mir aber immer noch nicht gesagt hast, wie du die Weiterverarbeitung vornehmen willst, tappe ich nur im Dunklen.

Ein 3. Mal frage ich nicht mehr, klaro?

Gruss
walter

@wambacher.
zur Frage der Weiterverarbeitung:

Ich möchte per Perlscript und einer Mathebibliothek für einzelne Koordinaten nachschauen, ob sie in einer bestimmten PLZ Region liegen.
Bisher nutze ich dafür die Polygone, die ich per QGIS und Umwandung SHP->KML bekomme und ich möchte nun
von der SHP unabhängig werden und am besten direkt alles aus der Geofabrik OSM ziehen…
(notfalls auch per Kommandozeile, um die Polygone mit Drittprogramm vorher aus den OSM zu ziehen, nach dem Polygontutorial zu urteilen werde ich das selbst nicht hinkriegen, bzw kostet mich das zuviel Zeit, vorallem das Testen).

Das hatte ich doch aber alles schon geschrieben…und mehr Geheimnis gibts da auch nicht. :slight_smile:

Was wähle ich, um bei Dir die Gebiete samt PLZ zu kommen?
heatmap plz
postal boudaries
postcodes

Oder muss ich mehrere Items laden, oder irgendwo wie bei den SHP die Beschriftung erst dazuschalten?
Ich hab Beschriftungen bisher nicht gefunden, bei den SHP wars über Layer->Beschriftungen hinzufügen - aber hier geht das offenbar nicht so.

wollte eigentlich wissen, welche Datenformat du braucht, um deine Toolchain zu “füttern”. Aha: KML. GeoServer kann das!

postal boundaries

So sieht eine PLZ-Relation in OSM aus: https://www.openstreetmap.org/relation/3320567 Die Beschriftung steht in “note”. “postal_code_level” gibt an, ob das eine PLZ-Grenze für Land(2), Zone (4), Region(6) oder Gebiet(8) ist.
postal_code_level ist jetzt in den aktuellen Daten drin, also nochmals neu laden. Zudem sind jetzt die Level 2-8 in den Daten enthalten, also musst du darauf filtern.

Du könntest die Daten auch per wget oder curl laden, allerdings hab ich noch keine Zeit gefunden, das Format zu checken, das mein GeoServer liefert *. Wenn alles gut geht (Geoserver ist absolute Spitze!), kann man das eventuell sogar beim URL mit angeben (?)

Ich prüfe das mal. Der Umweg über QGIS ist bestimmt nicht nötig.

Gruss
walter

ps: das WMF-Projekt ist für mich immer noch ein Schnellschuss, da ich mich mich mit WMF noch nie beschäftigt habe. Daher ist das derzeit ziemlich dynamisch.

*) GeoServer liefert per Default die Daten im GML-Format ab. https://de.wikipedia.org/wiki/Geography_Markup_Language

@wambacher

Hallo, jetzt klappt alles. Interessanterweise ist die über Dich erzeugte KML 250MB statt meine bisherige (SHP->KML) mit 70 MB.
(die ich aber in Qgis mit Vereinfachung Geometrie (0,0001) auf 40 MB reduzierte, weil sonst die UTF-8 Fehler drin waren. Daten waren mir noch genau genug.)

Jetzt will ich beide Polygondatensätze mal vergleichen.
Bei Deinen Daten scheinen aber grundsätzlich mehr Probleme mit nicht geschlossenen Polygonen etc drin zu sein, ich werde das jetzt näher auswerten, aber ein paar Abbrüche wegen nicht korrekter Polygone hatte ich jetzt, die ich nun aber erstmal durch Ausklammern abfange.
(die Vereinfachung der Geometrie fängt aber keine Fehler ab, ohne diesen Schritt sind die Polygone okay, aber eben die Städtenamen in den Notes uU bei Umlauten und Sonderzeichen fehlerhaft)

Habe das alles programmtechnisch so angelegt, dass ich relativ leicht auch beide Definitionen parallel abfragen kann. Darauf wird wohl erstmal hinauslaufen…

Wenn ich mehr weiss, melde ich mich.

Welchen Weg/Befehl hast du denn dafür genommen? Der URL wäre mir äußerst wichtig, dann brauche ich das nicht auch noch herauszufinden (Das Forum sollte keine Einbahnstraße für Tipps/Tricks/Wissen sein, es lebt vom Feedback)

klingt logisch.

Hä? Grenzrelationen und daher die Grenzen sind IMMER geschlossen, ansonsten würde meine Software die garnicht ausliefern. Allerdings sind das MULTIPolygone, können also aus mehreren Ringen für Outer und Inner bestehen. Ob du das überhaupt kennst und - bis jetzt - damit klar kommst, ist mir nicht bekannt. Ist halt eine der kleinen “Gemeinheiten” von OSM :wink: Gib mit doch bitte 1-2 Beispiele (ID der Relation reicht)

Einer der Möglichkeit, diese “Probleme” zu umgehen, ist (für mich) die Auswertungen mit PostGIS zu machen. Da sind Grenzen und Nodes Geometrische Objekte und die kann man miteinander einfach in Beziehung bringen (ST_Contains(Grenze,Adressnode)). Auch wenn dort Exklaven (mehrere Outer) und Enklaven (Inner) vorhanden sind.

und wenn du mir bitte obige Fragen zum KML-Download und zu kritische Grenzen beantwortest :wink:

Gruss
walter

@wambacher

Sorry, Ich habe überstürzt was geschrieben, bei Dir
heisst nach dem KML Export das Tag seltsamerweise “postal_cod” vorher (mit den daten von http://www.suche-postleitzahl.org/downloads)) hiess es “plz”

Ich dachte QGIS würde das - bei gleichnamigen Beschriftungsfeld “plz”!!!- gleich machen, deshalb hatte ich das nicht geprüft
Ich mache neuen Test. Das, was richtig war, kam von einer Rettungsfunktion. Melde mich in drei Stunden nochmal.

Wenn es dir vor allem darauf ankommt, hier eine weitere Möglichkeit:

Laden von PLZ-Relationen mittels Overpass API. Die bekommst Du damit im OSM-XML-Format. Damit scheinst Du ja umgeghen zu können.

Wenn das eine Option für dich ist, kann ich dir gerne weitere Hinweise zur Weiterverarbeitung (Erstellung geschlossener Polygone) geben.

@wambacher.
Danke für die Hilfe, aber jetzt wirds klappen.
Die Fehler die da sind, könen nur noch echte sein, oder eben besagte Punktreihenfolge - insofern gehe ich mit den Daten glaube ich korrekt um.
Ich habe durchaus PLZ Regionen, die aus mehreren Regionen zusammengesetzt sind usw. Die Korrekte OSM Bennenung muss ich noch lernen…
Jetzt wirds spannend…bei den Unterschieden.
Da die andere Quelle Daten von Anfang August hat werden die Unterschiede vermutlich alle auf die Algorithmen zur Bestimmung der Punktreihenfolge zurückzuführen sein…

Overpass Api kenne ich als Angebot, scheint aber öfter zu hängen - insbesondere bei großen Kartenausschnitten.

Danke,
muss jetzt Kids hüten…
Götz

“Welchen Weg/Befehl hast du denn dafür genommen? Der URL wäre mir äußerst wichtig, dann brauche ich das nicht auch noch herauszufinden (Das Forum sollte keine Einbahnstraße für Tipps/Tricks/Wissen sein, es lebt vom Feedback)”

Ich habe neueste QGIS Version gestartet und links unter dem Icon “WFS Layer hinzufügen” Deine Adresse eingefügt
https://osm.wno-edv-service.de/geoserver/wfs

Dann habe ich “postal boundaries” gewählt und geladen.
Dann habe ich unter “Layer” ->Beschriftung hinzufügen (und ich glaube bei beiden hiess das Feld “plz”-beim Export dann aber anders!) die PLZ Beschriftung anzeigen lassen.
Dann unter “Layer speichern” als KML gespeichert. Fertig.
Das gleiche hatte ich mit den anderen Daten auch gemacht. Dort am Anfang nur statt WFS Layer eben die SHP als Datei eingeladen.

Fragen kann ich auch noch nicht so schön quoten wie ihr und Bilder einfügen auch noch nicht… :slight_smile:

Sind das die, bei denen dir Teile fehlen? Jetzt bräuchte ich eigentlich nur noch die Nummer (id) oder den PLZ-Code einer der PLZ-Grenzen, die dir Probleme bereiten.

Aha, also doch alles mit Qgis. Ok, dann sind die Datenformate halt unterschiedlich und das könnte die Größendifferenzen erklären.

ich dachte, du hättest beim 2. Versuch wget oder curl genommen. Und noch gleich im als KML wäre super gewesen. Nun, zu früh gefreut.
Muß ich wohl selber rausfinden ob und wie das geht. aber erst am WE.

Gruss
walter

@wambacher.

Ich steig durch meine Ergebnisse noch nicht ganz durch. 70% sind ca gleich aber Achtung!!!
der Validierungscheck von QGIS zeigt eindrucksvoll für die gesamte mitteldeutsche Regionkorrekte Gebiete an, der Rest ist aber blau=falsch…
Das würde sich mit meinen 70% Übereinstimmung vielleicht ja decken…
Wie zum Teufel poste ich hier eine Grafik…PN an Walter? ist raus.

Hinweis: ich habe mal optisch die anderen Ebenen ausgeblendet, dann sieht das vom Bild her so aus, als ob die 1-2 stelligen PLZ-Bereiche - also große Regionen falsch sind.Diese nutze ich eigentlich gar nicht im Polygoncheck, deshalb weiß ich noch immer nicht, was eigentlich los ist.
(woher die großen Abweichungen zu meiner alten KML kommen)
Nehme jetzt mal Deine original-KML a 250MB ohne irgendwelche Bereinigungsschritte von QGIS. Ergebnis dauert aber.

“zu früh gefreut”?? Verstehe Deinen Kommetar nicht ganz, Du hast also einen Server der vieles nach außen funkt und weisst aber derzeit nicht wie man da an die entsprechenden Daten kommt. Verstehe ich das richtig? wget hab ich auch, wenn Du mir sagst was ich wie skripten soll kann ich das machen…Du willst aus Deinem Server per Link direkt eine KML ziehen?!

Ist es das: müsste man halt auf Deine Domain anpassen
http://docs.geoserver.org/2.3.3/user/googleearth/features/kmlreflector.html

wie ich per PN schon schrieb: das sind die Zonen(4) und Regionen(6). Die überdecken die Gebiete(8).

Ja genau! Ich habe gerade gestern wegen dir angefangen mich mit WFS zu beschäftigen und war echt platt, dass das so fix ging. Der Rest auf der Client-Seite ist auch für mich “Neuland”.

Danke für den Tip, werde ich mir am WE mal vorknöpfen.

Hab erstmal was anders gefunden: http://docs.geoserver.org/2.8.0/user/services/wfs/outputformats.html (ich fahre 2.8.0)

&outputFormat=XXX definiert das gewünschte Format. KML ist nicht dabei :frowning: Kannst du ein anderes Format gebrauchen? Das funktioniert jetzt schon und ich muß keine Klimmzüge machen.

ogr2ogr ist ein prima Konverter. Kann man sogar einbauen aber das wird dauern. http://docs.geoserver.org/2.8.0/user/extensions/ogr.html

Gruss
walter

Grafik geht nur über externe Server. Muttu die Grafik also irgendwo hochladen. ich hab dafür zum Glück meinen Webserver, andere nehmen pic-upload.de oder so. Danach lautet der Link

@wambacher

Danke, mach Dir mal nicht so viel Mühe.
Bei Deinen Polygonen rechnet sich mein Rechner echt platt…die hohe Genauigkeit bringt auch nix, die QGIS Vereinfachung mit 0,0001 bringt laut erster Durchsicht exakt das gleiche Ergebnis.
Statt KML kann ich alles nehmen, was man öffnen und einen Text erkennen kann. (SHP z.B. also direkt nicht, OSM schon…aber da komm ich ja bisher nicht an die Polygone… )
Ziel war ja von der anderen SHP unabhängig zu werden und/oder einen besseren Algorithmus für die Polygonpunktreihenfolge zu finden…der einfachste Weg wird für mich also von den Geoffabrik OSM zu den osmpgsql oder ogr2ogr oder andere Tools führen…wenn das meine Hardware mitmacht. Jetzt erstmal gute Nacht. Gruss, Götz

Nachtrag.
Meine bisherige SHP->KML variante hat idR mehr Polygone. Habe Dir gerade per PN ein Beispiel für PLZ 06493 geschickt.
Schon allein deswegen wird es Diskrepanzen geben. Vielelicht rühren die vielen Polygone auch von einer Art Korrektursplittung her, bei der sonst die üblichen “ist-Punkt-In-Polygon”-Funktionen crashen, weil mittendrin etwas unplausibel ist.

Tja, postgis schafft das in ca 600 Millisekunden pro Test. Liegt u.A. an ausgefeilten Algorithmen und Nutzung von internem Caching.


select st_contains((select way from pcboundaries where value='65388'), 
                   (select geom from collected_postcodes_de where osm_id=174346010)
);
 st_contains 
-------------
 t
(1 Zeile)

Zeit: 652,853 ms

Dann mach das bitte. KML kann keine MP und daher macht QGIS das auch nicht.
KML ist eine Sackgasse - die ich dir auch nicht nahegelegt habe.

Lade dir gleich vom GeoServer Shapes herunter (outputFormat=shape-zip) und dann sehen wir weiter.

ach ja: wenn ich die Shapes von suche-postleitzahl.org und meine WMF übereinander lege, sind die deckungsgleich - was zu erwarten war, da beide über fast dem selben Weg in die DB kamen und von dort extrahiert wurden.

1109633 | 17440 Kröslin, Krummin, Lassan u.a.


“deren”

“meine”

Beide.

Die minimalen Abweichungen sind bedingt durch Rundungsfehler. Keines der Polygone ist von irgendeiner Software vereinfacht worden (kein st_simplify()).

“Deren” Shapes und “meine” Shapes vom SeoServer hab ich noch nicht getestet. Ich warte erstmal deine Ergebnisse ab.

Gruss
walter

Nur so nebenbei: Wenn du dich wirklich von “Datenlieferanten” unabhängig machen willst (auch mir kann mal was passieren):

  • Postgrsql/postgis installieren
  • Osm-Daten für Deuschland von der Geofabrik laden (oder im Notfall das planet-File direkt von OSM)
  • mit osmfilter allen Schrott rausschmeissen
  • mit osm2pgsql in eine kleine PostGIS-DB laden (keine besonder Anforderungen an den Rechner)
  • mit pgsql2shp die gewünschten Daten in Shapes umwandeln oder gleich den Rest auch in postGIS machen.

feddich.

Aufwand für mich: 1 Tag - für dich?
Wiki-Seiten und Support durch Kollegen ist kein Problem. Das machen viele so.

Nur damit es nicht heisst “Warum habt ihr mir das nicht gleich gesagt!”.

@wambacher,
bzw. Hallo Walter,

Ich hatte Dir doch aber auch eine konkrete Koordinate genannt, die bei Deinen Exporten eben nicht im PLZ Gebiet verortet wird, wie es das bei den anderen Daten tut. Kannst Du nicht bitte mal eben kurz den 600ms - Test genau dafür machen:

Adebarweg;PLZ 17039;13.274;53.622;Sponholz, Neunkirchen

Das Ergebnis würde doch alles klären. Ich bekomme mit Deinen Polygonen - im Gegensatz zu den bisherigen -keinen Match, laut Recherche stimmt aber die PLZ.
Wenn Deine Prüfmethode (600ms) es zuordnet, weiss ich, dass meine Methode einen Fehler hat, ist es bei Dir auch nicht drin, ist das starkes Indiz für fehlerhafte Polygone.
Es bleibt natürlich noch die Variante, dasss QGIS beim Export was zerschiesst.Aber auch dann würde es bei Deinen Daten etwas zerschiessen, was es bei den anderen nicht tut. Insofern auch ein Hinweis auf ein mögliches Problem.

Im übrigen waren es bei Dir (wenn mehr als ein Polygon) aufälligerweise fast immer genau zwei Polygone, während es bei der anderen Quelle
völlig gemischt 2-5 und mehr sind.
Gerade wenn ein Polygon in einem anderen liegt muss es aus dem umgebenden natürlich rausgerechnet werden, da verscheint mir die
höhere Zahl plausibler, denn mit einem großen kann das nicht gehen.(da müsste man ja eine Verbindungslinie von der äußeren zur inneren Grenze ziehen. (oder gibts sowas bei OSM, wo genau diese Verbindungsline später ausgeklammert wird?!)

Habe hier Linux zwar auch in VMs, aber versuche mir die **pgsql Exportswenn möglich in eine Datei zu dumpen/pipen und da wieder rauszuextrahieren.
Wenns nicht klappt, richte ich das DBMS ein…

So, jetzt versuche ich das mal mit Deinem SHP Link, vielleicht kommt da wieder was anderes raus…
Du musst aber wirklich nicht mehr irgendwas an Deinem Server machen, ich werde vermutlich in Zukunft auf den Geofabrik OSM irgendeines der existierenden Tools ansetzten und mir ein Format exportieren, womit ich an die Polygone komme.

@Wambacher
Hallo Walter, ich habe gerade nochmal deine Daten aus dem WFS gezogen und genau wie immer mit QGIS (gleicher Version) nach KML exportiert.
Jetzt funktioniert es exakt identisch. Ich glaube eigentlich nicht, dass es an meinem Script lag, den allein die Polygonanzahl (wenn mehrere pro PLZ) war bei Dir ja anders.
Nur für Dich zur Info, jetzt klappts!

Danke.

Weiss Du eigentlich ob die NodeID Grenze von 32 Bit bald fallen wird?!

ogr2ogr und die ganzen GDAL Sachen hab ich noch nicht vernüftig zum Laufen gebracht, muss ich jetzt wohl auch nicht mehr.

4GB Grenze ist überschritten

naja, kann ich mir zwar nicht erlären, da KML keinen Multipolygone kann. Mag aber sein, dass dir KML “andere” Formate liefert, mit denen dein weiterer Algorithmus klar kommst.

Ja, das weiss ich.

Die ist vor mehreren Wochen überschritten worden. http://forum.openstreetmap.org/viewtopic.php?pid=599821#p599821
Wir sind schon bei Ids im Bereich von 4.366.xxx.xxx

Gruss
walter