Создайте слой в GeoServer, используя REST

16

Как часть возможного решения этого вопроса я хочу создать слой в GeoServer через REST, который предоставляет оператор SQL вместе с идентификатором пользователя.

Чтение Думаю, я бы создал тип объекта и опубликовал его? Мне нужно сделать все это в ОТДЫХЕ. У кого-нибудь есть примеры кода?

CaptDragon
источник
Похоже, что невозможно добавить слой через интерфейс rest, вы решили его в конце? Я получаю сообщение об ошибке: HTTP Status 405 - Указанный метод HTTP не разрешен для запрошенного ресурса
a1an

Ответы:

41

Есть много вещей, которые вы можете сделать с помощью GeoServer REST API, которые специально не задокументированы и для которых нет примеров кода. Вот стратегия для решения этих проблем.

Сначала начните с примеров в документации . Убедитесь, что вы знакомы с тем, как вы можете создать простой новый слой или рабочую область, используя HTTP POST с XML или JSON.

Затем с помощью пользовательского интерфейса GeoServer вручную создайте объект, для которого нет документации (в данном случае тип объекта).

Наконец, вручную перейдите к индексу GeoServer REST ( http://your-server/restили http://your-server/geoserver/rest). Просматривайте указатель, пока не найдете только что созданный тип объекта. Добавьте «.xml» или «.json» к URL-адресу этого ресурса, и вы увидите его представление XML или JSON.

Это представление - то, что вам нужно для POST, чтобы создать тип объекта через API. URL-адрес представления - это URL-адрес, который вам понадобится для POST (например, http://your-server/geoserver/rest/..../myFeatureTypeName.json).

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

Рохан Сингх
источник
2
СПАСИБО! Легкий ответ и просто сэкономил мне еще 2 часа насмешек
Ragi Yaser Burhum
4
Кроме того, многие параметры можно пропустить, и GeoServer их выяснит (как в пользовательском интерфейсе). например. ограничивающие
рамки
1
Ух ты - это лучшее описание того, что я видел.
Кивели
3
Используя GeoServer 2.10.2, я обнаружил, что мне нужно POST к featuretypesконечной точке магазина, напримерgeoserver/rest/workspaces/<workspacename>/datastores/<storename>/featuretypes/
Стивен Лид
Четкое описание рабочего процесса, соответствующие ссылки включены. UPVOTED! :)
Тони Гил
10

Я знаю, что это старый вопрос, но на случай, если кто-нибудь еще запутается, как я. Важной частью является то , что вы не можете создать слой из HTTP: // Geoserver / отдых / слои конечной точки.

Если вы хотите добавить векторный слой, это делается через ресурс типа объекта:

http://docs.geoserver.org/stable/en/user/rest/api/featuretypes.html

ПОЧТА, чтобы:

/workspaces/<ws>/datastores/<ds>/featuretypes

где - рабочее пространство, в котором вы хотите разместить тип объекта, а используемый источник данных создаст новый тип векторного объекта, то есть слой.

Если вы задаетесь вопросом о том, что вы можете POST, @Rohan является правильным, самый простой способ - это запросить существующий тип объекта, т.е.

/workspaces/<ws>/datastores/<ds>/featuretypes/<ft>.json 

который вернет существующий тип объекта как json.

утрачено при переводе
источник
1

Ваша лучшая ссылка в руководстве пользователя. http://docs.geoserver.org/stable/en/user/rest/examples/index.html

jdeolive
источник
Да, но нет примера для создания типа объекта из оператора SQL ... Я надеялся, что у кого-то есть пример кода, которым можно поделиться.
CaptDragon
Это руководство пользователя очень не хватает.
Kieveli
0

Если вы понимаете Java, возможно, вы захотите взглянуть на этот простой код, который использует REST для выполнения всех видов операций на GeoServer.

Иво Лиммен
источник
0

Чтобы добавить слой, необходимо определить хранилище данных и тип объекта. Предполагая, что они уже определены вместе со стилем (как описано в руководстве по адресу http://boundlessgeo.com/2012/10/adding-layers-to-geoserver-using-the-rest-api/, чтобы добавить слой в PUT запрос должен быть отправлен на геосервер по адресу:

http://geoserver.host/geoserver/rest/layers/NEW_LAYER_NAME

С содержанием данных, как:

<layer>
  <name>NEW_LAYER_NAME</name>
  <type>VECTOR</type>
  <defaultStyle>
    <name>myStyle</name>
  </defaultStyle>
  <resource class="featureType">
    <name>myFeature</name>
  </resource>
</layer>
A1An
источник
В этом блоге рассказывается о добавлении стиля в существующий слой, что имеет смысл, поскольку именно для этого предназначен PUT. Вы не можете создать новый слой таким образом. Вот документы: docs.geoserver.org/stable/en/user/rest/api/layers.html , PUT для отдыха / слоев будет возвращать 405. PUT для / rest / Layers / <существующий_слой> изменит конкретный слой, а не создавать новый.
lostintranslation