мне интересно, есть ли Python-библиотека ГИС с открытым исходным кодом, в которой есть API для поддержки вызова WMS / WFS с другого ГИС-сервера (например, GeoServer), а затем сохранения данных ответов (базовая карта WMS и слой WFS) в виде изображений.
какие-либо рекомендации?
спасибо за любые вклады!
ОБНОВЛЕНИЕ :
то, что я пытаюсь сделать, - это сервис печати карт, использующий OpenLayers в качестве внешнего интерфейса и Django в качестве сервера; Пользователь клиента устанавливает экстент и слои и затем отправляет запрос на печать (который относится к параметрам, т. Е. Экстенту карты, именам слоев) на сервер, затем сервер принимает этот запрос и снова вызывает WMS / WFS, используя параметры запроса, сохраняя ответ в формате PDF, экспортируйте эту ссылку PDF в клиент.
Сложная часть заключается в том, что, когда сервер вызывает WMS / WFS и объединяет / накладывает эти ответы вместе (т.е. объединяет эти карту / слои вместе, поскольку WMS обычно является базовой картой, WFS указывает на слои объектов), наконец, сохраните этот объединенный объект. как изображение.
в текущих ответах urllib кажется хорошим, но я не уверен, как объединить эти ответы (WMS, WFS) вместе; OWSLib также кажется еще одним хорошим вариантом, но он указывает, что это инструмент программирования клиента, я немного запутался в том, подходит ли он для моего использования ...
любые другие дополнительные материалы ???
оценить!
источник
Ответы:
Существует OWSLib, которая должна предоставить именно то, что вам нужно.
Документация и примеры здесь . Клиент в этом контексте означает, что это клиентское приложение для сервера WMS / WFS - при необходимости его можно запустить на сервере.
После того, как вы добавили больше деталей к своему ответу, похоже, что приложение печати MapFish точно соответствует вашим потребностям. Это Java-приложение, которое может быть интегрировано с OpenLayers, сшивать плитки, WMS, WFS и т. Д. Вместе и создавать PDF.
Поскольку это приложение командной строки, им можно управлять с помощью оболочки Python. Смотрите следующие ссылки для более подробной информации:
http://geographika.co.uk/mapfish-print-module-for-iis
https://github.com/amercader/MapFish-Print-IIS
источник
Вы можете использовать библиотеку python urllib для непосредственного вызова WMS и записи ответа в файл. В этом ответе есть хороший пример использования urllib . Просто замените URL-адрес для WMS, например, 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 = изображение / png .
Вы также можете использовать библиотеку GDAL для доступа к WMS ( http://www.gdal.org/frmt_wms.html ) и библиотеку OGR для доступа к WFS ( http://www.gdal.org/ogr/drv_wfs.html ).
Если вы хотите создать изображение WFS, вы можете использовать функцию gdal.RasterizeLayer для создания jpg. Существует пример здесь .
источник
Вот простой пример. На стороне сервера:
И на стороне клиента, используя jquery:
источник
Вы можете использовать GeoTools для извлечения данных с серверов WMS / WFS и рендеринга в графический объект Java. Тогда что-то вроде iText может конвертировать в PDF.
Если вам действительно нужно использовать Python, я ожидаю, что вы можете использовать оболочку для управления всем этим.
источник