Berechnungen mit geographischen Koordinaten?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Redoute
User
Beiträge: 16
Registriert: Donnerstag 5. Juni 2008, 10:21

Hallo,

ich suche nach Möglichkeiten, mit Geodaten, insbesondere aus OpenStreetMap gezogenen, zu rechnen. Ich sollte Aufgaben der folgenden Art lösen können:

Wie weit sind zwei Knoten/Punkte voneinander entfernt?

Wie weit ist die kürzeste Entfernung zwischen einem Weg/einer Linie und einem Knoten/Punkt?

An welchen Punkten schneiden/berühren sich zwei Wege/Linien?

In welcher Fläche, z. B. Gemeindegrenze durch Weg/Linie definiert, befindet sich ein Knoten oder ein Weg?

Am liebsten wäre mir ein fertiges Python-Modul, da ich mit Python ein paar Erfahrungen habe und mit Python und Expat bereits auf große OSM-Dateien zugegriffen habe. Ich finde zwar im Web viel zu Geo-Modulen in Python, kann aber nicht erkennen, wo ich Algorithmen zu den obigen Fragen finde.

Danke für alle Hinweise, Redoute
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Schau dir mal das Vector-Modul an:
http://www.supereffective.org/pages/Vec ... or-Library
Da gibts unter anderem:

Code: Alles auswählen

Vector.distance_to(other)
Line.from_points(first, second)
Line.distance_to(point)
Weiß aber nicht ob das praktisch geeignet ist.

Wobei deine Probleme ja wirklich reiner mathematischer Natur sind und mit der Programmiersprache an sich nicht wirklich was zu tun haben. In diesem Sinne von "Algorithmen" zu reden ist ziemlich übertrieben. Das ist einfachste Vektorrechnung, das sich auch leicht selbst implementieren lässt ;)
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Das ist nur dann trivial, wenn man die Erdkrümmung ausser Betracht lässt, je nach Geoid wird das dann sehr spannend. Aber dafür gibt es ja auch Bibliotheken ...

Ich denke, Shapely (ist im Pypi; baut auf GEOS auf) könnte das richtige für dich sein, oder du nutzt osm2pgsql um die OpenStreetMap Daten in einer GeoDatenbank zu speichern und die Berechnungen von der durchführen zu lassen. Das ist meiner Meinung nach der bessere Weg, da GIS Operationen doch schnell komplex werden können.
Redoute
User
Beiträge: 16
Registriert: Donnerstag 5. Juni 2008, 10:21

Im Forum von OpenStreetMap habe ich auch den Hinweis auf PostGresQL und PostGIS bekommen, wo einige Berechnungsfunktionen enthalten sind, die ich anderswo nicht gesehen habe. Allerdings ist mir das im Moment zu komplex.

Die Entfernungsberechnung zwischen Punkten klappt mit pyproj.Geod. Das scheint sich mit Shapely zu ergänzen (PostGIS verwendet beide entsprechenden C-Bibliotheken), aber bei Shapely/GEOS/JTS finde ich den Einstieg nicht.

Ich werde versuchen, der Lösung schrittweise näherzukommen.

Danke für die Tipps,
Redoute
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

--off topic--
Mein Eindruck ist, daß Python in der Geographie noch nicht richtig angekommen ist. Zwar gibt es Pythonanbindungen für das eine oder andere Programm, aber eine größere Community habe ich noch nicht ausmachen können. Oder, wo tummelt die sich? Wenn Ihr etwas wißt fände ich das interessant, um meine Partnerin zu "evangelisieren" ;-).

Gruß,
Christian
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Ich denke, das größte Problem ist, dass Geographen (so wie ich) keine Programmierer sind. Bedingt durch die marktbeherrschende Stellung von ESRI (ArcView) war Python nie ein Thema, erst in den letzten paar Jahren kommt vor allem durch OpenSource Programme Python in den GIS Bereich. QGIS hat Python Bindings, der UMN Mapserver realisiert das mittels SWIG und Geos kann man über Shapely ansprechen. Aber das ist z.T. noch alles in den Kinderschuhen. Aber sogar ESRI liefert mittlerweile eine Python Schnittstelle für ihr GIS aus, wobei die mitgelieferte Version irgendwo bei 2.4 ist afaik.

Viele GIS hatten auch "eingebaute" Skriptsprachen, AML bei ArcInfo, Avenue bei ArcView, ArcGIS mit VB usw., deshalb konnte sich da nie etwas entwickeln. Deshalb ist der Trend in Richtung Python, der im Moment zu beobachten ist, noch relativ jung und es konnte sich noch keine Community entwickeln, zumal es ja auch nicht die Masse an Geoinformatikern gibt, wie es normale Programmierer gibt - der Anwenderkreis ist halt recht klein. In den USA kann man zumindest an den Hochschulen mittlerweile vermehrt Skripte finden, die Python in der Geographie einsetzen.

Für die meisten Aufgaben der Geografen gibt es schon seit langer Zeit etablierte Softwarelösungen, mit denen man eigentlich so ziemlich alles lösen kann, was da so an klassischen Aufgaben anfällt, zumal Geodaten mit guter Qualität auch nicht vom Himmel fallen. Erst so Projekte wie OSM machen es erst möglich, dass man sich auch außerhalb von Firmen und Unis mit GIS beschäftigen kann. Sobald sich im privaten Bereich genügend Leute finden, denke ich dass sich auch früher oder später irgendwo eine Python-Gis Community bilden kann. Zumindest mir ist aber auch keine übergeordnete Instanz bekannt, wo man da unterschlüpfen könnte, bis sich genug Eigendynamik entwickeln kann.

Innerhalb der GRASS GIS Community gibt es wohl verstärkt Aktivitäten, Python zu fördern, was sowohl die Programmlogik angeht, als auch den Zugriff aufs GUI. Hinderungsgrund für den "Mangel" hier mag wohl auch sein, dass man oft mit großen Datenmengen hantiert und damit lauter lustige, prozessor- und speicherquälende Dinge macht - die C-Derivate erledigen das oft schneller - und sind meistens bereits geschrieben, wie oben bereits erwähnt. Da besteht erst mal keine Notwendigkeit, irgendetwas nach Python zu konvertieren. Das mag auch der Grund sein, warum Python erst einmal seine Nische in der Geografie finden muss.

Ich für meinen Teil nutze Python zur Realisierung von Webschnittstellen (OGC WMS/WFS... Server und Export nach GPX, KML) und zur Konvertierung von "Fremd"Daten in ein Geoformat, mit dem ich was anfangen kann.

So, und jetzt hab ich den Faden endgültig verloren, aber ich hoffe, ich konnte einige Klarheiten beseitigen ;) :D
torecki
User
Beiträge: 4
Registriert: Samstag 12. Januar 2019, 17:18

Hallo,

ich mache den alten Thread noch einmal auf weil es ja zwischenzeitlich einige Entwicklungen gab und ich diverse (Anfänger)Fragen habe. Wenn das auf diese Art verkehrt ist, bitte ich um Hinweise zur Korrektur.

Zwischenzeitlich gibt es ganz wunderbare Bibliotheken und Anwendungen zum Umgang mit Geodaten in Python. Ich selbst versuche gerade Python zu lernen und als Förster und GIS-Spezialist interessiert mich dieser Aspekt am meisten.
Momentan versuche ich mich in shapely einzuarbeiten. Dabei scheiter ich gerade daran die Objekte in einem Koordinatensystem darzustellen. Beispielsweise erzeuge ich mit P1= Point(1.0, 2.0) einen Punkt und mit P1 kann ich den auch darstellen. Wie kann ich aber den Punkt innerhalb eines Koordinatensystems anzeigen?

Vielen Dank im voraus
__deets__
User
Beiträge: 14537
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich finde nicht unbedingt, dass es eine gute Idee ist, alte und eher diskursive Threads wieder aufzumachen, statt einen neuen und konkreten fuer dein Problem. Darum wuerde ich dich bitten, das zu tun & dabei auch ein bisschen weiter auszuholen. Mir ist zB ueberhaupt nicht klar, was du mit "mit P1 kann ich den auch darstellen" meinst. Und ob du bei Koordinatensystem an die klassische 2-Dimensionale Ansicht denkst, oder ob es dir um geographische Koordinatensysteme geht.
Antworten