Програмування Geoserver 2.0.2 для додавання растрових сховищ даних та рівня без користувальницького інтерфейсу


15

У мене є каталог растрових зображень, який буде постійно оновлюватися. З цих зображень я створюю Піраміди зображень за допомогою утиліти Geotool's PyramidBuilder. Мені потрібно налаштувати завдання cron, щоб автоматично додавати растрові сховища даних та шари до Geoserver без використання інтерфейсу користувача.

Переглянувши розділ REST в посібнику з Geoserver, я зміг додати свою робочу область "testWS", але спробувати створити сховище даних ImagePyramid не вийшло.

Оскільки я маю доступ до сховища даних, я розширив на прикладі shapefile і намагався

curl -u admin:geoserver -XPUT -H 'Content-type: text/plain' \ 
   -d '/opt/geoserver_data_dir/2.0.2/data/test_pyramid.pyr' \
    "http://localhost:8080/geoserver/rest/workspaces/testWS/datastores/test_pyramid.pyr/external.imagepyramid?configure=all"

Де test_pyramid.pyr є базою моєї ImagePyramid у цьому місці.

Це призвело до помилки "Немає такого сховища даних: test_pyramid"

Чи є кращий спосіб додати нову сховище даних та шар до Geoserver, не додаючи кожен вручну через інтерфейс користувача? Мені потрібна допомога у створенні належного оператора REST, який додасть існуючий ImagePyramid як сховище даних та шар.

Чи є якийсь код Java, який міг би це зробити? Я переглянув розширення Python Geoserver, але у них цього також не було.


У цьому дописі від Jan mail-archive.com/geoserver-users@lists.sourceforge.net/… описується майже та сама проблема. Ніякої резолюції немає.
DaveParillo

1
Документи геосервера на docs.geoserver.org/stable/en/user/restconfig/… означають, що єдиними сховищами даних, які ви можете налаштувати за допомогою цього методу, є файл у випадку Shapefile, база даних у випадку PostGIS або у випадку віддаленої служби веб-функцій, але документи можуть бути просто неповними.
DaveParillo

чи можете ви додати те, що є насправді у файл, який ви надсилаєте на сервер?
Ян Тертон

Але ви повинні побудувати файл XML, який містить цю інформацію.
Ян Тертон

те, що я намагаюся розмістити, - це шлях до сховища даних, який я хочу створити Geoserver. Цей шлях є зовнішнім набором растрових файлів (imagepyramid) в одному каталозі. Все, що я хотів, - це геосервер створити сховище даних і шар для зображенняпіраміди в цьому місці (в тій же файловій системі, що і геосервер.)
rbrister

Відповіді:


20

Ви можете створити робочу область, сховище даних та шар (сховище) для GeoTiff із завитками та xml із зовнішнього інтерфейсу так:

  1. Створіть робочу область.

    curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
         -d '<workspace><name>wsgeotiff</name></workspace>' \
         http://localhost:8080/geoserver/rest/workspaces
  2. Потім створіть сховище даних.

    curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
         -d '<coverageStore>
             <name>wsgeotiff_imageGeoTiffWGS84_1298678792699</name>
             <workspace>wsgeotiff</workspace>
             <enabled>true</enabled>
             <type>GeoTIFF</type>
             <url>/home/gis/image_wgs84.tif</url>
             </coverageStore>' \
         "http://localhost:8080/geoserver/rest/workspaces/wsgeotiff/coveragestores?configure=all"
  3. Потім створіть шар.

     curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
          -d '<coverage>
              <name>imageGeoTiffWGS84</name>
              <title>imageGeoTiffWGS84</title>
              <nativeCRS>GEOGCS[&quot;WGS 84&quot;,DATUM[&quot;World Geodetic System 1984&quot;,SPHEROID[&quot;WGS 84&quot;,6378137.0, 298.257223563, AUTHORITY[&quot;EPSG&quot;,&quot;7030&quot;]],AUTHORITY[&quot;EPSG&quot;,&quot;6326&quot;]],PRIMEM[&quot;Greenwich&quot;, 0.0, AUTHORITY[&quot;EPSG&quot;,&quot;8901&quot;]],UNIT[&quot;degree&quot;, 0.017453292519943295],AXIS[&quot;Geodetic longitude&quot;, EAST],AXIS[&quot;Geodetic latitude&quot;, NORTH],AUTHORITY[&quot;EPSG&quot;,&quot;4326&quot;]]</nativeCRS>
              <srs>EPSG:4326</srs>
              <latLonBoundingBox><minx>-179.958</minx><maxx>-105.002</maxx><miny>-65.007</miny><maxy>65.007</maxy><crs>EPSG:4326</crs></latLonBoundingBox>
              </coverage>' \
          "http://localhost:8080/geoserver/rest/workspaces/wsgeotiff/coveragestores/wsgeotiff_imageGeoTiffWGS84_1298678792699/coverages"

Коли все це зроблено, у вас є сховище даних, що вказує на зовнішнє зображення 'image_wgs84.tif' та WMS-шар для відображення покриття в.

Я не знаю, чи перетворить цей прийом безпосередньо в техніку створення сховища даних піраміди зображень чи ні.

Удачі.


У мене така ж точна проблема, як і в питанні вище. Дякуємо, що висловили це чудово, більшість рішень там заплутані. У мене тут є одне питання. У вашій відповіді Рамки для обмеження растру потрібно вказати як вхідні дані. Тепер я розумію, що якщо я розміщую вищезазначене рішення в сценарії, я можу використовувати gdalinfo, щоб знайти обмежувальне поле. Але це лише додало роботу (розбір тощо). Моє запитання: чи можемо ми змусити геосервер обчислювати обмежувальні поля автоматично? Ми знаємо, що це може зробити так, тому що, коли ми додаємо растр із інтерфейсу користувача, він обчислює Bounding Box!
Шаунак

3
У моєму GeoServer 2.2 не потрібно чітко вказувати поле обмеження (і SRS тощо). Він визначає їх автоматично з файлу при створенні шару (тестується на GeoTIFF та ImageMosaic). Ви також можете встановити ?recalculate=nativebboxперерахунок власного обмежувального вікна при зміні політики проекції чи проекції. Дивіться docs.geoserver.org/stable/en/user/rest/api/…
xandriksson

4

Вам знадобиться магазин покриття та покриття.

Магазин покриття - це джерело просторових даних, заснованих на растрі.

Сховища даних, які ви намагалися використовувати, стосуються лише векторних даних.

Ви перевірили Як використовувати curl для завантаження Покриття через решту Geoserver?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.