Lisää

Kuinka koodata ja purkaa Pythonissa monimutkaiset tiedot OWSLib WPS-kutsua varten PyWPS-4: lle?

Kuinka koodata ja purkaa Pythonissa monimutkaiset tiedot OWSLib WPS-kutsua varten PyWPS-4: lle?


Kuinka voin Pythonissa koodata "monimutkaiset" (vektori) tiedot WPS-puhelua varten, joka vain toistaa tiedot takaisin ja purkaa tiedot tuloksesta. Suunnittelin OWSLibin käyttöä asiakaspuolella ja PyWPS-4: tä palvelinpuolella.

Tämä mitä minulla on tähän mennessä palvelimelle:

Tuo pullo tuonti pywps-luokka EchoVector (pywps.Process): def __init __ (itse): sisääntulot = [pywps.ComplexInput ('viesti', 'Input-viesti', tuetut_formaatit [[pywps.Format ('sovellus / gml + xml')] , mode = pywps.validator.mode.MODE.STRICT)] tuotokset = [pywps.ComplexOutput ('vastaus', 'Lähtö vastaus, tuetut_muodot = [pywps.Format (' sovellus / gml + xml ')]]] super ( EchoVector, self) .__ init __ (self._handler, identifier = "echo_vector", title = "Echo Vector Test", abstract = "Palauttaa annetun vektorin", version = "1.0.0.0", tulot = tulot, lähdöt = lähdöt, store_supported = True, status_supported = True) def _handler (itse, pyyntö, vastaus): response.outputs ['response']. data = request.inputs ['message'] [0] .data return response app = flask.Flask ( __nimi__) wps_processes = [EchoVector ()] palvelu = pywps.Service (wps_processes) @ app.route ('/ wps', metodit = ['GET', 'POST']) def wps (): palauta palvelu bind_host = "127.0 .0.1 "app.run (ketjutettu = True, isäntä = bind_host)

Tätä minulla on toistaiseksi asiakkaalle:

Tuo owslib.wps tuonti kokoelmat url = "http://127.0.0.1:5000/wps" wps = owslib.wps.WebProcessingService (url, verbose = False, skip_caps = True) wps.getcapability () process_name = "echo_vector" syötteet = [("viesti", owslib.wps.GMLMultiPolygonFeatureCollection ([[((- 102.8184, 39.5273), (-102.8184, 37.418), (-101.2363, 37.418), (-101.2363, 39.5273), (-102.8184), 39.5273) ]))] suoritus = wps.execute (prosessin_nimi, tulot) suoritukselle .prosessilähdöt: owslib.wps.printInputOutput (lähtö)

Saan poikkeuksen "Invalid mimeType value text / xml for input message".

Tämä koodi on saatavilla myös tässä GitHub-arkistossa


Ongelmana on, että OGR: tExportToGMLei ilmoita nimitilan etuliitettä / uri ulostulossa, mikä tekisi ExecuteResponse XML -rikastinparserit. Olen avannut GDAL-lipun tähän ongelmaan.

Sillä välin voit kiertotapana säätää kohteenExportToGMLkuten tässä on kuvattu, ts.

def _setNamespace (xml, etuliite, uri): palauta xml.replace ('>', 'xmlns:% s = "% s">'% (etuliite, uri), 1) better_gml = _setNamespace (geom.ExportToGML (), 'gml', 'http://www.opengis.net/gml')

Katso video: Koodataan PYTHONILLA Kouluruoka-kone! Miskan Ohjelmointinurkka