Створіть шар у GeoServer за допомогою REST


16

Як частина можливого рішення цього питання, я хочу створити шар в GeoServer за допомогою REST, який постачає оператор SQL разом з userid.

Читання Я думаю, що я створив би тип функції та опублікував його? Мені це потрібно зробити в REST. Хтось має приклади коду?


Схоже, неможливо додати шар через інтерфейс спокою, ви вирішили це врешті? Я отримую помилку: HTTP Status 405 - Зазначений метод HTTP заборонено для запитуваного ресурсу
a1an

Відповіді:


41

Є багато речей, які ви можете зробити з API GeoServer REST, які спеціально не задокументовані, і для яких немає прикладів коду. Ось стратегія боротьби з ними.

Спочатку почніть з прикладів у документації . Переконайтеся, що ви знайомі з тим, як ви можете створити простий новий шар або робочу область за допомогою HTTP POST з XML або JSON.

Потім за допомогою інтерфейсу GeoServer вручну створіть потрібний вам об’єкт, для якого немає документації (в даному випадку - тип функції).

Нарешті, вручну перейдіть до індексу ( http://your-server/restабо http://your-server/geoserver/rest) GeoServer REST . Перегляньте індекс, поки не знайдете тип створеного вами функції. Додайте ".xml" або ".json" до URL-адреси цього ресурсу, і ви побачите його представлення XML або JSON.

Це представлення - це те, що вам знадобилося для POST, щоб створити тип функції через API. URL-адреса представництва - це URL-адреса, яку вам потрібно було б POST (наприклад, http://your-server/geoserver/rest/..../myFeatureTypeName.json).

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


2
ДЯКУЮ! Легка відповідь і просто врятував мене ще дві години глузування
Рагі Ясер Бурхум

4
Крім того, багато параметрів можна пропустити, і GeoServer розібрає їх (як і в інтерфейсі). напр. обмежувальні коробки
rcoup

1
Нічого собі - це найкращий опис цього, що я бачив.
Kieveli

3
Використовуючи GeoServer 2.10.2, я виявив, що мені потрібно відправити POST до featuretypesкінцевої точки магазину, наприкладgeoserver/rest/workspaces/<workspacename>/datastores/<storename>/featuretypes/
Stephen Lead

Очистити опис робочого процесу, включені відповідні посилання. ПОВЕРНЕНО! :)
tony gil

10

Я знаю, що це давнє запитання, але на всякий випадок, коли хтось ще заплутається, як я. Важливою частиною є те , що ви не можете створити шар з HTTP: // Geoserver / відпочинок / шари кінцевої точки.

Якщо ви хочете додати векторний шар, це робиться через ресурс типу функції:

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

POST для:

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

де знаходиться робоча область, під якою ви хочете використовувати тип функції, а джерело даних, що використовується, створить новий тип векторної функції, тобто шар.

Якщо вам цікаво, що ви можете розмістити, @ Rohan вірно, найпростіший спосіб - це запит на існуючий тип функції, наприклад, http GET

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

який поверне існуючий тип функції як json.


1

Ваша найкраща посилання знаходиться у посібнику користувача. http://docs.geoserver.org/stable/en/user/rest/examples/index.html


Так, але немає прикладу для створення типу функції з оператора SQL ... Я сподівався, що хтось має приклад кодом, щоб поділитися.
CaptDragon

Посібника користувача сильно не вистачає.
Kieveli


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>

У цьому блозі йдеться про додавання стилю до існуючого шару, що має сенс, оскільки саме так призначений PUT. Ви не можете створити новий шар таким чином. Ось документи: docs.geoserver.org/stable/en/user/rest/api/layers.html , PUT в режим спокою / шари повернуть 405. PUT в / rest / layer / <existing_layer> змінить a конкретного шару, а не створювати новий.
втраченопереклад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.