2014-12-11 3 views
0

Я работаю над проектом с использованием GeoServer (v2.5.2) и GeoWebcache. Я хочу иметь возможность загружать изображения для создания хранилища и связанных с ним слоев. Я использую PHP с cURL для связи с REST API.GeoServer - добавить слой с REST API (с использованием PHP)

Выгрузка и создание магазина покрытия работает, используя этот код:

$curl = curl_init($service_url."workspaces/".htmlentities($workspace)."/coveragestores"); 
     $data = '<coverageStore> 
         <name>'.htmlentities($name).'</name> 
         <type>'.htmlentities($type).'</type> 
         <enabled>true</enabled> 
         <connectionParameters> 
          <entry key="url">file:'.$file.'</entry> 
          <entry key="namespace">'.htmlentities($workspace, ENT_COMPAT).'</entry> 
         </connectionParameters> 
        </coverageStore>'; 
     curl_setopt($curl, CURLOPT_POST, True); 
     curl_setopt($curl, CURLOPT_HTTPHEADER,array("Content-type: application/xml, Content-Length: ".strlen($data))); 
     curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
     curl_setopt($curl, CURLOPT_USERPWD, $auth); 
     curl_setopt($curl, CURLOPT_HEADER, false); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
     $buffer = curl_exec($curl); 

Теперь я хочу, чтобы создать новый слой. Я использую тот же код, что и выше (только изменение URL и параметров XML).

Лучший «документация» Я нашел это один: http://docs.geoserver.org/2.5.x/en/user/geowebcache/rest/layers.html Пытались использовать GeoWebCache и GeoServer версию, и вернуть мне код ошибки 404.

Так что я попытался снова использовать этот документ: http://docs.geoserver.org/2.5.x/en/user/rest/api/layers.html Но он не говорит, какие ожидаются параметры POST. Единственное, что я получаю, это код ошибки 500.

Что я делаю неправильно? Большое спасибо.

ответ

2

Обнаружили ошибку: Я пытался добавить слой, но мне нужно было добавить покрытие, слой автоматически создается с ним.

Если это может помочь кому-то, это то, как я сделал:

 $data = '<coverage> 
        <name>'.htmlentities($name).'</name> 
        <title>'.htmlentities($name).'</title> 
        <nativeCRS>'.htmlentities(' 
         GEOGCS["WGS 84", 
         DATUM["World Geodetic System 1984", 
          SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], 
          AUTHORITY["EPSG","6326"]], 
         PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], 
         UNIT["degree", 0.017453292519943295], 
         AXIS["Geodetic longitude", EAST], 
         AXIS["Geodetic latitude", NORTH], 
         AUTHORITY["EPSG","4326"]] 
         ').' 
        </nativeCRS> 
        <supportedFormats> 
         <string>GEOTIFF</string> 
         <string>PNG</string> 
         <string>JPEG</string> 
         <string>TIFF</string> 
        </supportedFormats> 
        <requestSRS> 
         <string>EPSG:4326</string> 
        </requestSRS> 
        <responseSRS> 
         <string>EPSG:4326</string> 
        </responseSRS> 
        <srs>EPSG:4326</srs> 
       </coverage>'; 

$curl = curl_init($service_url."workspaces/".htmlentities($workspace)."/coveragestores/".htmlentities($name)."/coverages"); 
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_HTTPHEADER,array("Content-Type: application/xml","Content-Length: ".strlen($data))); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
    curl_setopt($curl, CURLOPT_USERPWD, $auth); 
    curl_setopt($curl, CURLOPT_HEADER, false); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_exec($curl); 
Смежные вопросы