Как скачать файлы GeoTiff с GeoServer с помощью Python - PullRequest
1 голос
/ 22 июня 2019

Я пытаюсь загрузить файлы GeoTiff с GeoServer, используя Python.Я нашел несколько ресурсов в Интернете об этом типе вещей, но я не смог выполнить эту задачу.

Например, здесь: https://gis.stackexchange.com/questions/181560/download-geotiff-from-geoserver кажется, что люди смогли сделатьчто я хочу сделать, но они не объясняют свой процесс.

Аналогично, принятый ответ здесь: Как получить изображение TIFF из python работает для загрузки GeoTiffs, как тот, что в http://imgsrc.hubblesite.org/hu/db/images/hs-2006-01-a-hires_tif.tif, но нет ссылки на скачивание GeoTiffs на GeoServer.

Любая помощь будет высоко ценится!

РЕДАКТИРОВАТЬ: Вот еще некоторые подробности о том, что я пытался до сих пор.GeoServer имеет сервер API отдыха, по адресу http://localhost:8080/geoserver/rest локально, поэтому я сначала попытался получить доступ к этому URL в python, а затем загрузить GeoTiff, который я хочу, в «Слои».Однако каждый из файлов в «Слоях» является HTML-файлом;я хотел бы знать, есть ли место, где я могу получить программный доступ к файлам GeoTiff.Я думаю, что это корень проблемы - хотя я не совсем уверен, как загружать GeoTiffs программно, я должен сначала иметь возможность получить к ним доступ в GeoServer.

Что касается прогресса, то я неудалось сделать многое.Как я упоминал выше, я смог загрузить GeoTiff с помощью кода на Как получить изображение TIFF с python , но я не смог сделать это для GeoTiff на GeoServer.Я новичок как в GeoServer, так и в формате GeoTiff, поэтому я не совсем уверен, как решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Мой коллега нашел решение этой проблемы. Используя приведенный ниже пример кода, мы можем загрузить файлы GeoTiff с GeoServer.

from owslib.csw import CatalogueServiceWeb
import urllib

def getLinkByIDCWS(url, id, user, pwd):
    csw = CatalogueServiceWeb(url, username=user, password=pwd)

    csw.getrecordbyid(id=[id])
    csw.records[id].references

    link = csw.records[id].references[2]['url']

    return link

def downloadImage(url, fileName):
    urllib.request.urlretrieve(url, fileName)

url = "http://localhost:8080/geoserver/csw?service=CSW&version=2.0.2&request=GetRecords&typeNames=gmd:MD_Metadata&resultType=results&elementSetName=full&outputSchema=http://www.isotc211.org/2005/gmd"
record = "nurc:Arc_Sample"
name = "<user>"
pwd = "<pwd>"

link = getLinkByIDCWS(url, record, name, pwd)
print(link)

downloadImage(link, "test.arc")
0 голосов
/ 22 июня 2019

В ответ на ваш связанный вопрос говорится, что вам нужно сделать запрос WCS для GeoServer, чтобы получить GeoTiff.

Руководство GeoServer содержит справку WCS , которая должна помочь вам понять, как действовать дальше.Вы также можете перейти на страницу демонстраций вашей установки GeoServer и использовать конструктор запросов WCS для создания XML-файла, который вы можете использовать в качестве шаблона в вашей программе на python.

GeoServer WCS Request builder

...