Добавление нового Coveragestore в определенную рабочую область с помощью REST

9

Итак, простая вещь, как кажется, но я не могу заставить ее работать! Я пытаюсь добавить файл растровых данных (GeoTIFF) в геосервер через REST API, используя curl на linux. REST API является работает, так как я создал новое рабочее пространство , используя его:

curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
 -d '<workspace><name>restProba</name></workspace>' \
 http://localhost:8080/geoserver/rest/workspaces

Он правильно создан, как показано интерфейсом администратора Geoserver, но когда я пытаюсь добавить хранилище в это рабочее пространство, выполнив

curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' -d
'<coverageStore><name>int_dec</name><enabled>true</enabled>
<type>GeoTIFF</type> <url>$home/int_dec.tif</url></coverageStore>'     
"http://localhost:8080/geoserver/rest/workspaces/restProba/coveragestores?configure=all"

несмотря на то, что он правильно загружен, он идет прямо в рабочее пространство по умолчанию, которое не является тем, в котором я хочу его. Есть ли способ определить, в каком рабочем пространстве я хочу его? Я подумал, что этого достаточно, упомянув об этом в URL-адресе, где я указываю на URI рабочей области restProba, но, похоже, он его опускает.

Спасибо за вашу помощь :-)

pd: новичок с геосервером, я пытался найти это, но либо я не использую правильные критерии поиска, я дурак, либо слишком просто, чтобы кто-нибудь спросил, что я даже глупец, чтобы спросить его: p

Микель Дж. Гайнза
источник

Ответы:

5

Может быть, вы можете попробовать это после создания рабочей области:

curl -u admin:geoserver -v -XPOST -H 'Content-Type: application/xml' \
     -d '<coverageStore><name>int_dec</name><workspace>restProba</workspace>  
         <enabled>true</enabled></coverageStore>' \
         http://localhost:8080/geoserver/rest/workspaces/restProba/coveragestores

Он должен создать склад с запасами, называемый int_decв restProbaрабочей области:

Затем вы можете обратиться к файлу GeoTIFF:

curl -u admin:geoserver -v -XPUT -H 'Content-type: text/plain' \
     -d 'file:/$home/int_dec.tif' \
      http://localhost:8080/geoserver/rest/workspaces/restProba/coveragestores/int_dec/external.geotiff?configure=first\&coverageName=int_dec

Я думаю, что ваша проблема отсутствует '

Ваш запрос был:

curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' -d
<coverageStore><name>int_dec</name><enabled>true</enabled>
<type>GeoTIFF</type> <url>$home/int_dec.tif</url></coverageStore>'     
"http://localhost:8080/geoserver/rest/workspaces/restProba/coveragestores?configure=all"

Это должно было быть:

curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' -d
'<coverageStore><name>int_dec</name><enabled>true</enabled>
<type>GeoTIFF</type> <url>$home/int_dec.tif</url></coverageStore>'     
"http://localhost:8080/geoserver/rest/workspaces/restProba/coveragestores?configure=all"

RK
источник
Проверено и нет, я сделал запрос правильно. Хорошо, пойму, я исправлю вопрос :) (я отчасти рад, что это не так, я буду унижен!)
Микель Дж. Гайнза
1
По крайней мере, ваша проблема будет решена ;-) Обновил мой ответ. Я надеюсь, что это будет работать сейчас.
РК
1

Чтобы добавить хранилище GeoTIFF и слой с тем же именем за один шаг, вы можете выполнить:

$ curl -v -u admin:geoserver -XPUT -H "Content-type: text/plain"
       -d "file:///path_to_directory/int_dec.tif"
       http://localhost:8080/geoserver/rest/workspaces/restProba/coveragestores/int_dec/external.geotiff

Дополнительные сведения см. В разделе «Примеры конфигурации REST: добавление существующего шейп-файла» .

xandriksson
источник