Ich habe nach einer geografischen Bibliothek für Python gesucht. Ich muss Folgendes tun können:
Am Anfang habe ich diesen Beitrag angesehen: Python-Modul für Geo-Koordinaten speichern und abfragen und geopy verwenden. Ich habe 2 Probleme festgestellt:
Ich habe weiter gesucht und gefunden Beste Python GIS-Bibliothek? und Ссылка . Es sah vielversprechend aus, da Geos den C-Code erfüllten, der schneller und formschöner sein sollte, um Polygone zu unterstützen. Das Problem ist, dass Geos / OGR anstelle von Sphere lineare Entfernungsberechnungen durchführt. Dies beseitigt alle anderen geosbasierten Module (wie GEODjango und formschön). Fehle ich hier etwas? Ich glaube nicht, dass ich die erste Person bin, die mit Python GIS-Berechnungen durchführt und genaue Ergebnisse erzielen will.
AKTUALISIEREN
Gehen wir jetzt weiter, um die anderen 576 Funktionen in dieser Bibliothek zu beenden, ohne die zwei abgeschlossenen Polygonfunktionen, die drei Sphärenentfernungsalgorithmen und zwei neue, eine angle_box_2d und angle_contains_ray_2d. Auch habe ich auf die C-Version umgeschaltet, so dass keine externen Geräte benötigt werden, vereinfacht die Arbeit. Setze die alte C ++ - Version in das Verzeichnis old_c ++, so dass sie immer noch da ist.
Getestete Leistung, ist identisch wie unten in der Antwort aufgeführt.
UPDATE 2
Also nur ein kurzes Update, ich habe noch nicht die ganze Bibliothek fertig (ich bin nur etwa 15% des Weges durch), aber ich habe diese ungetesteten Funktionen hinzugefügt, falls Sie sie sofort brauchen github, um den alten Punkt in Polygon- und Kugelentfernungsalgorithmen hinzuzufügen.
%Vor%Diejenigen, die ich oben kommentiert habe, werden wahrscheinlich nicht funktionieren, die anderen vielleicht, aber wieder - polygon & amp; Kugelabstände definitiv. Und Sie können Meter, Kilometer, Meilen, nautische Meilen angeben, es spielt keine Rolle auf den sphärischen Distanzen, die Ausgabe ist in den gleichen Einheiten wie die Eingabe - die Algorithmen sind für die Einheiten agnostisch.
Ich stelle das heute Morgen zusammen, so dass es derzeit nur den Punkt im Polygon, den Punkt im konvexen Polygon und drei verschiedene Arten von Algorithmen für die sphärische Distanz liefert, aber zumindest die, die Sie angefordert haben, können Sie jetzt verwenden. Ich weiß nicht, ob es einen Namenskonflikt mit irgendeiner anderen Python-Bibliothek gibt, ich bekomme diese Tage nur peripher mit Python, also, wenn es einen besseren Namen dafür gibt, bin ich offen für Vorschläge.
Auf GitHub: Ссылка
Es ist nur eine Python-Brücke zu den hier beschriebenen und implementierten Funktionen:
Die GEOMETRY-Bibliothek ist eigentlich ziemlich gut, also denke ich, dass es nützlich sein wird, all diese Funktionen für Python zu überbrücken, was ich wahrscheinlich heute Abend tun werde.
Bearbeiten: ein paar andere Dinge
Wenn Sie dies unter Windows brauchen, lassen Sie es mich wissen, es sollte nur ein paar Minuten dauern, bis es in Visual Studio funktioniert. Aber wenn nicht jemand fragt, werde ich es wahrscheinlich jetzt einfach in Ruhe lassen.
Hoffe, das hilft!
Rgds .... Hoonto / Matt
(new commit: SHA: 4fa2dbbe849c09252c7bd931edfe8db478de28e6 - einige Dinge, wie Radiantenumwandlungen und auch die Rückgabetypen für die Py-Funktionen behoben. Außerdem wurden einige grundlegende Leistungstests hinzugefügt, um sicherzustellen, dass die Bibliothek ordnungsgemäß funktioniert.)
Testergebnisse In jeder Iteration ruft ein Aufruf von sphere_distance1 und ein Aufruf von polygon_contains_point_2d auf, sodass 2 Aufrufe an die Bibliotheksgesamtmenge erfolgt.
Wenn die sphärische Berechnung ausreicht, würde ich einfach numpy für die Entfernung und matplotlib für die Polygonprüfung verwenden (wie Sie ähnliche Vorschläge in stackoverflow finden).
%Vor%Wenn Sie mehr tun möchten, ist das Quantum GIS-Toolset wahrscheinlich einen Blick wert: PyQGIS Developer Cookbook (docs .qgis.org) .
Tags und Links python performance gis polygon great-circle