Polygone in Bildern Serialisieren / Extrahieren

Hi!

Ich habe eine Karte als PNG und auf der Karte befinden sich Polygone. Ich würde die Polygone gerne serialisieren. Dazu brauche ich lediglich die Koordinaten der Eckpunkte und die Information welche Punkte miteinander verbunden sind (benachbarte Eckpunkte sind verbunden also bei [ [1,2] , [4,5] , [2,6] sind [1,2] mit [4,5] und [4,5] mit [2,6] verbunden. [1,2] ist nicht mit [2,6] verbunden.
Ich habe schon gdal_polygonize benutzt und bin damit FAST zufrieden. Es gibt allerdings ein Problem, das ich anhand dieses Bilder hier erläutern möchte:

Die zu erwartenden Koordinaten müssten ja so aussehen: [ 30.0, 23.0 ], [ 30.0, 504.0 ], [ 511.0, 504.0 ], [ 30.0, 23.0 ]
Ich bekomme aber Koordinaten von allen Punkten auf der Hypothenuse (Diagonale), da jedes Pixel auf der Hypothenuse fälschlicherweise als Eckpunkt erkannt wird.
Weiß einer Rat?

MfG
Selphiron

Nix verstehen. Sorry.
Serialisierung im Zusammenhang mit OSM noch nie gehört.
Hab leider auf die schnelle nicht verstanden was http://www.gdal.org/ genau ist und was das tut.

Brauchst du das für OSM?
Was ist genau das Ziel?

er schrieb: “Ich habe eine Karte als PNG und auf der Karte befinden sich Polygone.”

Das sieht für mich so aus, als ob er PNG-Files (also Grafiken) “scannen” und in Daten umwandeln will. So 'ne Art OCR für Linien.

Da kommt bei mir gleich die Frage nach der Quelle dieser Grafiken auf. Bebauungspläne? Katasterauszüge, Stadtpläne? irgend sowas?
Und danach gleich die Frage nach der Erlaubnis, sowas verwenden zu dürfen.

Gruss
walter

Ich glaube, zufriedener wirst du auch nicht mit gdal…

(steht da)

Es gibt für JOSM ein Plugin namens “tracer”, das kann Gebäude von Luftbildern in Vektoren verwandeln, vielleicht kann man da abschreiben… imagemagick verwendet eine Bibliothek namens autotrace dafür, vielleicht taugt die was…

Alternativ nach der Vektorisierung die Polygone vereinfachen. Bei gdal ist auch ogr2ogr dabei, das eine Option -simplify hat. Die betrachtet allerdings jedes Polygon für sich. Es kann also sein, dass zwei benachbarte Flächen so vereinfacht werden, dass ein Spalt zwischen den beiden entsteht oder sich die beiden überlappen.

@ Wambacher: Oh keine Sorge das ist alles legal. Die Daten werden angeboten von der Senatsverwaltung für Stadtentwicklung und Umwelt Berlin und sind hier zu finden und öffentlich: http://fbinter.stadt-berlin.de/fb/berlin/service.jsp?type=WMS

Das Ziel ist es aus den Bildern GeoJSONs zu machen, die die Polygone enthalten :slight_smile: Sorry hätte das alles noch erwähnen sollen.

@maxbe: Danke den Tipp mit ogr2ogr -simplify hab ich schon bekommen und probiert. Da habe ich gleich mal eine Frage: Welchen Wert sollte die tolerance (also der Wert, den man -simplify übergibt) nun haben? Ich habe mit dem Dreieck von oben eine Toleranz von 2 probiert und es wurde nurnoch 1 Pixel “zuviel” als Eckpunkt betrachtet, was ich ok finde. Aber bei größeren Polygonen könnte es ja zu problemen kommen oder? Was ist da die beste Vorgehensweise?

Imagemagick habe ich verwendet um alle “Kacheln” zusammenzufügen. Ich schau mir das mal in verbindung mit JOSMs tracer an, danke sehr.

ich weiß nicht, ob im Rahmen von OpenData oder eine Kooperation eine Sonderlizenz besteht, aber die eigentlichen Nutzungsbedingungen sagen:

Wie willst Du das sicherstellen? Das soll jetzt kein Motzen sein, es interessiert mich wirklich.

Keine Ahnung, ich kenns nur aus der Werbung :wink:

Üblicherweise nimmt man für sowas ein Verfahren, das einen x Einheiten breiten Streifen um die Linie legt und dann alles wegwirft, was innerhalb des Streifens liegt. Oder Umgekehrt: Man nimmt eine Abkürzung zwischen weit entfernten Punkten und schaut, ob alle Punkte dazwischen weniger als x Einheiten entfernt sind. Falls ja, ist man zufrieden, falls nein, macht man die Abkürzung kleiner (Wikipedia kanns beser erklären).

Diese x Einheiten ist die Toleranz. Zacken, die kleiner sind, werden weggebügelt, Gebilde die größer sind bleiben drin. Du musst also durch Probieren eine Toleranz finden, die grösser als die Breite und Höhe eines Pixels ist, aber auch nicht nicht viel größer.

Und davor musst du rausfinden, was mit “Einheit” gemeint ist (Pixel oder Meter).

Mich auch. Es gibt ja viele “legale” Quellen im Open-Data-Umfeld bei denen sich dann die verantwortlichen “Spender” toll darstellen. “Wir geben unsere Daten frei und kostenlos an alle weiter - sind wir nicht eine wirklich bürgernahe Verwaltung?”

Und dann kommen in irgend einer Nutzungsbedingung die Klauseln, die für OSM ein Kill-Kriterium darstellen:

  • eindeutige Quellenangaben auch in “abgeleitete” Produkten
  • keine kommerzielle Nutzung
  • keine Modifikation der Daten

Hier wohl mal wieder 2 von drei :frowning:

Gruss
walter

ICh habe mich noch nicht ganz entschieden ob ich Leaflet oder was ähnliches benutze aber das wird dann natürlich unten rechts eingeblendet.

@maxbe: danke ich glaub ich habs. 0,11 scheint gut hinzuhauen bei mir. (1 Pixel sind ca. 12 cm)

Hast du die Anforderungen überhaupt verstanden? Da steht nichts von “Attributierung reicht”. Die Anforderungen gehen erheblich weiter und es ist dir mMn unmöglich, diese zu erfüllen.

Gruss
walter

“[…] erkennbar und in optischem Zusammenhang eingebunden werden;”
Da reicht es doch wohl, wenn ich unten rechts auf der Karte sowas schreibe wie: “Geoportal Berlin / [Titel des Datensatzes]”
Das habe ich aus den Nutzungsbedingungen der einzelnen Datensätzen…

Ich ging bisher davon aus, dass du die irgendwie umgeformten Daten in OSM erfassen willst. Ist das der Fall oder nicht? Davon hängt halt mein Kommentar ab, der sich natürlich nur auf eine eventuelle Datenübernahme bezieht.

dein “Das Ziel ist es aus den Bildern GeoJSONs zu machen, die die Polygone enthalten” spricht ja eher für zweiteres, oder geht es danach noch weiter?

Gruss
walter

Zum ursprünglichen Problem: Ich habe in letzter Zeit ein wenig mit ArcScan gearbeitet, das vieles recht gut extrahieren kann. Andere Tools habe ich noch nie verwendet und könnte dir höchstens die Algorithmen dahinter erklären.

ArcScan ist im Vergleich zu vielen Raster-to-Vector-Anwendungen eigentlich die traurigste, finde ich. Angesichts des Preises sowieso.
Ich habe damals recht viel mit WinTopo gearbeitet, die kostenfreie Version ist recht gut, wenn man die Vorbearbeitung z.B. im Gimp macht.

@ SammysHP : vielen dank für das Angebot aber ArcScan müsste ich erst noch kaufen und ich weiß nicht ob ich das möchte.Aber an “den Algorithmen dahinter” wäre ich durchaus interessiert :slight_smile:
@Wambacher : Ich habe vor eine (OSM) Karte von Berlin zu nehmen und dann die Polygone raufzuklatschen :smiley: Aber ohne die live OSM Daten zu ändern oder etwas hinzuzufügen. Es soll sozusagen etwas externes werden. Eventuell dann noch so kleinere Spielereien wie einen Zeitregler von 2004 bis 2012, der die Arbeitslosenzahl unter den 25-jährigen zu verschiedenen Jahren zeigt.

Klitzekleiner Tip: mache dich mal mit ArcGis for Homeuse schlau… Jahreslizenz für 100€ Netto incl. 3D-Analyst, Spartial Analyst ArcScan… ect…

Sven

Wieso gibst du den Nettopreis, wenn es für Home-User ist? :smiley: Endkundenpreis ist allerdings wirlich 119 € :slight_smile:
Die Lizenz beschränkt sich auf die private, nicht-kommerzielle Nutzung und man kann die Ergebnisse z.B. in wissenschaftlichen Artikel veröffentlichen. ESRI hat sich aber noch nicht zu Folgendem geäußert: ist die Nutzung im Rahmen von OSM gestattet? Die Daten werden zwar “zuhause” und für ein unkommerziellen Zweck (OSM) hergestellt, aber können kommerziell genutzt werden. Beim nächsten ESRI-Treffen spreche ich sie mal darauf an - habe ich auf der INTERGEO leider vergessen :roll_eyes:

Prima, also als Overlay. Ist absolut in Ordnung aber leider kann ich dir bei der Technik nicht weiterhelfen - nur “profilaktisch motzen” :wink:

Gruss
walter

JaJaaaaa… Haste Recht… Ich hab immer nur 100 Glocken Netto im Kopf… und 200 Glocken für Umweltorganisationen… da gibt es auch so ein Programm…

Ich meine nach ESRI’s Auffassung ja: http://esriosmeditor.codeplex.com/

Wobei ich ArcGis in Bezug auf OSM nur für ganz wenige Dinge nutze… vor allem umprojizieren von Daten Ansonsten nutze ich ArcGis privat für diverse Dinge, die datenmäßig nicht OSM-fähig sind. Rein für die Erfassung ist JOSM mein Favorit. Wenn es um Datenextraktion geht (z.B. Wanderwege) ist Overpass oder QuickOSM bei QGis meine Wahl.

…um nicht völlit OT zu werden.

Meines Wissens nach soll Berlin nächstes Jahr auf ALKIS und somit auf ETRS89 umsteigen. Der Beitragsbaum hier zeigt mir, daß man vom Soldner (vor allem auch in Zusammenhang mit OSM) die Finger lassen sollte… Ich meine, Berlin pfelgt(e) in diversen Bereichen deine Daten auch in GaußKrüger Streifen 4 /5.
Die Zusammenarbeit geht zwar sicher irgendwie… ist aber ein absoluter Krampf… Ich würde einen großen Bogen darum machen.

Werden nicht soweit ich es gesehen habe diverse Dienste in Datenquellen jetzt schon in WGS 84 bzw. ETRS 89 bereitgestellt???

Sven

ist bei dem Beispiel von dir vergleichsweise simpel und eigentlich äußerst zuverlässig. Keine Ahnung, was gdal da implementiert hat (vermutlich doch nur falsche Parameter?). Hier würde ich mir einfach mit dem Harris- oder Förstner-Operator die Eckpunkte und Linien raussuchen und die Punkte über die Kanten miteinander verbinden. Beide Operatoren basieren auf einer Autokorrelationsmatrix. Die dafür benötigten Ableitungen kannst du dir mit dem Sobel-Operator leicht erstellen. Das sollte sich eigentlich alles mit jeder beliebigen Programmiersprache lösen lassen, solange du das Bild einlesen und die einzelnen Pixel-Grauwerte auslesen kannst. Du musst die Pixelkoordinaten dann natürlich noch in dein Geo-Koordinatensystem transformieren (also das Bild zuvor Georeferenzieren, ein Vorteil von ArcGis, in dem man das alles in einem Programm machen kann¹).

¹ ArcGis ist aber ein großes Chaos.