Ich frage mich, ob es Python Open-Source-GIS-Bibliothek gibt, die APIs zum Aufrufen von WMS / WFS von einem anderen GIS-Server (z. B. GeoServer) unterstützt und dann die Antwortdaten (WMS-Grundkarte und WFS-Ebene) als Bilder speichert.
irgendwelche Empfehlungen?
danke für eventuelle eingaben!
UPDATE :
Was ich versuche, ist ein Kartendruckdienst, bei dem OpenLayers als Front-End und Django als Server verwendet werden. Der Client-Benutzer legt den Bereich und die Ebenen fest und sendet dann die Druckanforderung (die sich auf die Parameter bezieht, dh Kartenbereich, Namen der Ebenen) an den Server. Der Server übernimmt diese Anforderung und ruft WMS / WFS erneut unter Verwendung der Anforderungsparameter auf. Speichern Die Antwort als PDF, exportieren Sie diesen PDF-Link zum Client.
Der schwierige Teil ist, wie der Server WMS / WFS aufruft und diese Antworten kombiniert / überlagert (dh diese Karten / Layer zusammenfügt, da WMS normalerweise die Basiskarte ist und WFS auf die Feature-Layer verweist), um dieses kombinierte Objekt endgültig zu speichern als Bild.
In aktuellen Antworten scheint urllib eine gute zu sein, aber ich bin nicht sicher, wie ich diese Antworten (WMS, WFSs) miteinander kombinieren soll. OWSLib scheint auch eine andere gute Option zu sein, aber es zeigt an, dass es sich um ein Client-Programmiertool handelt. Ich bin ein wenig verwirrt darüber, ob es für meine Verwendung geeignet ist ...
sonstige weitere eingänge ???
schätzen!
quelle
Antworten:
Es gibt OWSLib, die genau das bereitstellen sollte, was Sie benötigen.
Dokumentation und Beispiele hier . Client bedeutet in diesem Zusammenhang, dass es sich um eine Client-Anwendung für einen WMS / WFS-Server handelt. Sie kann bei Bedarf auf einem Server ausgeführt werden.
Nachdem Sie Ihrer Antwort weitere Details hinzugefügt haben, sieht es so aus, als würde die MapFish-Druckanwendung genau Ihren Anforderungen entsprechen. Es ist eine Java-Anwendung, die in OpenLayers integriert werden kann und Kacheln, WMS, WFS usw. zusammenfügt und ein PDF erzeugt.
Da es sich um eine Befehlszeilenanwendung handelt, kann sie mit einem Python-Wrapper bearbeitet werden. Weitere Informationen finden Sie unter den folgenden Links:
http://geographika.co.uk/mapfish-print-module-for-iis
https://github.com/amercader/MapFish-Print-IIS
quelle
Sie können die Python-Urllib-Bibliothek verwenden, um ein WMS direkt aufzurufen und die Antwort in eine Datei zu schreiben. Es gibt ein anständiges Beispiel für die Verwendung von urllib in dieser Antwort . Ersetzen Sie einfach die URL durch eine für ein WMS, z. B. http: //some.wms.service? Request = GetMap & VERSION = 1.1.1 & BBOX = 141.00, -29.00.141.80, -28.40 & SRS = EPSG: 4326 & LAYERS = LANDSAT_MOSAIC & WIDTH = 800 & HEIGHT = 600 & FORMAT = image / png .
Sie können auch die GDAL-Bibliothek für den Zugriff auf WMS ( http://www.gdal.org/frmt_wms.html ) und die OGR-Bibliothek für den Zugriff auf WFS ( http://www.gdal.org/ogr/drv_wfs.html ) verwenden.
Wenn Sie ein Bild des WFS erstellen möchten, können Sie mit der Funktion gdal.RasterizeLayer ein JPG erstellen. Es ist ein Beispiel hier .
quelle
Hier ist ein einfaches Beispiel. Auf der Serverseite:
Und auf Client-Seite mit jquery:
quelle
Mit GeoTools können Sie die Daten von WMS / WFS-Servern abrufen und in ein Java-Grafikobjekt rendern. Dann kann so etwas wie iText in ein PDF konvertieren.
Wenn Sie wirklich Python verwenden müssen, können Sie wahrscheinlich einen Wrapper verwenden, um alles zu verwalten.
quelle