Как отправить WPS-запрос, используя HTML - PullRequest
2 голосов
/ 08 января 2020

enter image description here Я установил расширение WPS на GeoServer. Я сгенерировал WPS-запрос, используя GeoServer WPS Request Builder. Для этого я выбрал process = gs: Bounds, Process input = VECTOR_LAYER и выбрал любой один векторный слой из загруженного мной, затем выбрал опцию «Создать XML из входов / выходов процесса» из WPS Request Builder. После этого один XML файл был создан, и я сохранил его с расширением. xml. Я создал один веб-сайт с использованием скрипта HTML, CSS ans Java. Теперь я хочу получить доступ к этому файлу XML с веб-сайта. Как Могу ли я определить этот код?

1 Ответ

2 голосов
/ 08 января 2020

После того, как вы получите XML, вам просто нужно сделать запрос POST с ним. Как пример:

<!DOCTYPE html>
<html>
<head>
<title>WPS Example</title>
</head>
<body>
<h1>How to send WPS request using HTML</h1>
<div><button onclick="getBounds()">Get Bounds</button></div>
<p id="result"></p>
<script>
var getBounds = function () {
    var FEATURES_COLLECTION = '{ "type": "Polygon", "coordinates": [ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ] }';
    var GEOSERVER_URL = 'http://localhost/geoserver';
    var myHeaders = new Headers();
    myHeaders.append("Content-Type", "application/xml");
    var raw = '<?xml version="1.0" encoding="UTF-8"?>\
    <wps:Execute version="1.0.0" service="WPS"\
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\
    xmlns="http://www.opengis.net/wps/1.0.0"\
    xmlns:wfs="http://www.opengis.net/wfs"\
    xmlns:wps="http://www.opengis.net/wps/1.0.0"\
    xmlns:ows="http://www.opengis.net/ows/1.1"\
    xmlns:gml="http://www.opengis.net/gml"\
    xmlns:ogc="http://www.opengis.net/ogc"\
    xmlns:wcs="http://www.opengis.net/wcs/1.1.1"\
    xmlns:xlink="http://www.w3.org/1999/xlink"\
    xsi:schemaLocation="http://www.opengis.net/wps/1.0.0\ http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd">\
    <ows:Identifier>gs:Bounds</ows:Identifier>\
        <wps:DataInputs>\
            <wps:Input>\
                <ows:Identifier>features</ows:Identifier>\
                <wps:Data>\
                    <wps:ComplexData mimeType="application/json">' +
                        '<![CDATA[' + FEATURES_COLLECTION + ']]>' +
                    '</wps:ComplexData>\
                </wps:Data>\
            </wps:Input>\
        </wps:DataInputs>\
        <wps:ResponseForm>\
            <wps:RawDataOutput>\
                <ows:Identifier>bounds</ows:Identifier>\
            </wps:RawDataOutput>\
        </wps:ResponseForm>\
    </wps:Execute>';
    var requestOptions = {
      method: 'POST',
      headers: myHeaders,
      body: raw,
      redirect: 'follow'
    };
    fetch(GEOSERVER_URL + "/wps", requestOptions)
      .then(response => response.text())
      .then(result => {
        document.getElementById("result").innerText = result;
        console.log(result);
        })
      .catch(error => console.log('error', error));
};
</script> 
</body>
</html>

Где:

  • переменная raw - это XML в формате строки с параметром FEATURES_COLLECTION, в этом примере я выбираю Geo JSON для формат функций (на момент создания XML), с OpenLayers вы можете использовать writeFeatures , чтобы получить значение
  • FEATURES_COLLECTION - это ваша коллекция функций (например, {"type": «Полигон», «координаты»: [[[100,0, 0,0], [101,0, 0,0], [101,0, 1,0], [100,0, 1,0], [100,0, 0,0]]]})
  • GEOSERVER_URL URL вашего картографического сервера (например, http://localhost: 8080 / geoserver )
...