| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?php
- Lib::loadClass('Api_WfsException');
- Lib::loadClass('Api_WfsNs');
- Lib::loadClass('Request');
- Lib::loadClass('Core_AclHelper');
- Lib::loadClass('Core_XmlWriter');
- Lib::loadClass('Type_WpsProcess');
- class Api_WpsV1_DescribeProcess {
- static function sendDescribeProcessXml($wpsServerUrl, Type_WpsProcess $wpsProcess) {
- header('Content-type: application/xml; charset=utf-8');
- $xmlWriter = new Core_XmlWriter();
- if (!$xmlWriter) throw new HttpException("Error no XMLWriter", 404);
- $xmlWriter->openUri('php://output');
- $xmlWriter->setIndent(true);
- $xmlWriter->startDocument('1.0','UTF-8');
- $xmlWriter->startElement('wps:ProcessDescriptions');
- $xmlWriter->writeAttribute('service', "WPS");
- $xmlWriter->writeAttribute('version', "1.0.0");
- // $xmlWriter->writeAttribute('xml:lang', "en");
- $xmlWriter->writeAttribute('xmlns:xs', 'http://www.w3.org/2001/XMLSchema');
- $xmlWriter->writeAttribute('xmlns:ows', "http://www.opengis.net/ows/1.1");
- $xmlWriter->writeAttribute('xmlns:wps', "http://www.opengis.net/wps/1.0.0");
- $xmlWriter->writeAttribute('xmlns:xlink', "http://www.w3.org/1999/xlink");
- $xmlWriter->writeAttribute('xmlns:xsi', "http://www.w3.org/2001/XMLSchema-instance");
- // $xmlWriter->writeAttribute('xsi:schemaLocation', "http://www.opengis.net/wps/1.0.0 ../wpsGetCapabilities_response.xsd");
- // foreach (Api_WfsNs::getNsList() as $uri => $prefix) {
- // $xmlWriter->writeAttribute("xmlns:{$prefix}", $uri);
- // }
- // $schemaLocations = [];
- //$schemaLocations[] = 'http://www.opengis.net/wfs http://webgis.regione.sardegna.it:80/geoserver/schemas/wfs/1.0.0/WFS-capabilities.xsd';// @from http://webgis.regione.sardegna.it/geoserver/ows?service=WFS&request=GetCapabilities
- // if (!empty($schemaLocations)) $xmlWriter->writeAttribute('xsi:schemaLocation', implode(' ', $schemaLocations));
- $xmlWriter->h('ProcessDescription', [
- [ 'ows:Identifier', $wpsProcess->identifier ],
- [ 'ows:Title', $wpsProcess->title ],
- [ 'ows:Abstract', $wpsProcess->description ],
- [ 'DataInputs', array_map(function ($dataInput) {
- return [ 'Input', [ 'maxOccurs' => $dataInput->maxOccurs, 'minOccurs' => $dataInput->minOccurs ], [
- [ 'ows:Identifier', $dataInput->identifier ],
- [ 'ows:Title', $dataInput->title ],
- [ 'ows:Abstract', $dataInput->description ],
- ('xml' === $dataInput->type)
- ? [ 'ComplexData', [
- [ 'Default', [
- [ 'Format', [
- [ 'MimeType', "text/xml; subtype=gml/3.1.1" ],
- ] ],
- ] ],
- ] ]
- : [
- [ 'LiteralData', [
- [ 'ows:AnyValue' ],
- ] ],
- ],
- ] ];
- }, $wpsProcess->dataInputs) ],
- [ 'ProcessOutputs', [
- [ 'Output', [
- [ 'ows:Identifier', "result" ],
- [ 'ows:Title', "result" ],
- [ 'ComplexOutput', [
- [ 'Default', [
- [ 'Format', self::convertOutputToWpsFormatXml($wpsProcess->defaultOutput) ],
- ] ],
- [ 'Supported', array_map(function ($output) {
- return [ 'Format', self::convertOutputToWpsFormatXml($output) ];
- }, $wpsProcess->supportedOutput) ],
- // [ 'Supported', [
- // [ 'Format', [ [ 'MimeType', "text/xml; subtype=wfs-collection/1.0" ] ] ],
- // [ 'Format', [ [ 'MimeType', "text/xml; subtype=wfs-collection/1.1" ] ] ],
- // [ 'Format', [ [ 'MimeType', "application/json" ] ] ],
- // [ 'Format', [ [ 'MimeType', "application/wfs-collection-1.0" ] ] ],
- // [ 'Format', [ [ 'MimeType', "application/wfs-collection-1.1" ] ] ],
- // [ 'Format', [ [ 'MimeType', "application/zip" ] ] ],
- // ] ],
- ] ],
- ] ],
- ] ],
- ]);
- $xmlWriter->endElement();// wps:ProcessDescriptions
- $xmlWriter->endDocument();
- exit;
- }
- static function convertOutputToWpsFormatXml($output) {
- // 'MimeType' => text/xml, 'Encoding' => base64, 'Schema' => http://foo.bar/gml/3.1.0/polygon.xsd
- // return <MimeType>text/xml</MimeType><Encoding>base64</Encoding><Schema>http://foo.bar/gml/3.1.0/polygon.xsd</Schema>
- return array_merge(
- (!empty($output['MimeType'])) ? [ [ 'MimeType', $output['MimeType'] ] ] : [],
- (!empty($output['Encoding'])) ? [ [ 'Encoding', $output['Encoding'] ] ] : [],
- (!empty($output['Schema'])) ? [ [ 'Schema', $output['Schema'] ] ] : []
- );
- }
- }
|