Zastanawiam się, czy istnieje biblioteka GIS w języku open source Python, która ma interfejsy API do obsługi połączeń WMS / WFS z innego serwera GIS (np. GeoServer), a następnie zapisuje dane odpowiedzi (mapa bazowa WMS i warstwa WFS) jako obrazy.
jakieś rekomendacje?
dzięki za wszelkie dane wejściowe!
AKTUALIZACJA :
to, co próbuję zrobić, to usługa drukowania map, wykorzystująca OpenLayers jako interfejs i Django jako serwer; Użytkownik klienta ustawia zasięg i warstwy, a następnie wysyła żądanie wydruku (które odnosi się do parametrów, tj. Zasięg mapy, nazwy warstw) do serwera, a następnie serwer przejmuje to żądanie i ponownie wywołuje WMS / WFS przy użyciu parametrów żądania, zapisz odpowiedź jako PDF, wyeksportuj ten link PDF do klienta.
Najtrudniejsze jest to, jak serwer wywołuje WMS / WFS i łączy / nakłada te odpowiedzi razem (tj. Łączy te mapy / warstwy razem, ponieważ WMS jest zwykle mapą podstawową, WFS wskazuje na warstwy obiektów), w końcu zapisuje ten połączony obiekt jako obraz.
w obecnych odpowiedziach urllib wydaje się dobry, ale nie jestem pewien, jak połączyć te odpowiedzi (WMS, WFS) razem; OWSLib wydaje się również inną dobrą opcją, ale wskazuje, że jest to narzędzie do programowania klienta, jestem trochę zdezorientowany, czy jest odpowiedni do mojego użytku ...
jakieś inne dalsze dane?
doceniać!
źródło
Odpowiedzi:
Istnieje OWSLib który powinien dostarczyć dokładnie to, czego potrzebujesz.
Dokumentacja i przykłady tutaj . Klient w tym kontekście oznacza, że jest to aplikacja kliencka na serwerze WMS / WFS - w razie potrzeby można go uruchomić na serwerze.
Po dodaniu dodatkowych szczegółów do odpowiedzi wygląda na to, że aplikacja do drukowania MapFish dokładnie odpowiada Twoim potrzebom. Jest to aplikacja Java, która może być zintegrowana z OpenLayers i zszywa kafelki, WMS, WFS itp. I tworzy plik PDF.
Ponieważ jest to aplikacja wiersza poleceń, można nią manipulować za pomocą opakowania w języku Python. Aby uzyskać więcej informacji, zobacz następujące łącza:
http://geographika.co.uk/mapfish-print-module-for-iis
https://github.com/amercader/MapFish-Print-IIS
źródło
Możesz użyć biblioteki urllib Pythona, aby bezpośrednio wywołać WMS i zapisać odpowiedź w pliku. Istnieje przyzwoity przykład użycia urllib w tej odpowiedzi . Wystarczy zastąpić adres URL adresem WMS, np. 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 = obraz / png .
Możesz także użyć biblioteki GDAL, aby uzyskać dostęp do WMS ( http://www.gdal.org/frmt_wms.html ) i biblioteki OGR, aby uzyskać dostęp do WFS ( http://www.gdal.org/ogr/drv_wfs.html )
Jeśli chcesz utworzyć obraz WFS, możesz użyć funkcji gdal.RasterizeLayer, aby utworzyć plik JPG. Oto przykład .
źródło
Oto prosty przykład. Po stronie serwera:
A po stronie klienta za pomocą jquery:
źródło
Możesz użyć GeoTools do pobrania danych z serwerów WMS / WFS i renderowania do obiektu graficznego Java. Następnie coś takiego jak iText można przekonwertować na pdf.
Jeśli naprawdę musisz używać Pythona, spodziewam się, że możesz użyć opakowania do zarządzania tym wszystkim.
źródło