Daha çox

Python'da, PyWPS-4-ə bir OWSLib WPS zəngi üçün kompleks məlumatları necə şifrələmək və dekodlamaq olar?


Python-da, yalnız məlumatları əks etdirən və nəticədəki məlumatları dekodlayan bir WPS çağırışı üçün "kompleks" (vektor) məlumatları necə kodlaya bilərəm? Müştəri tərəfdə OWSLib, server tərəfində PyWPS-4 istifadə etməyi planlaşdırırdım.

Bu günə qədər server üçün sahib olduğum şey:

idxal şüşə idxal pywps sinifi EchoVector (pywps.Process): def __init __ (özünü): giriş = [pywps.ComplexInput ('mesaj', 'Giriş mesajı', supported_formats = [pywps.Format ('application / gml + xml')] , mode = pywps.validator.mode.MODE.STRICT)] çıxışlar = [pywps.ComplexOutput ('cavab', 'Çıxış cavab', supported_formats = [pywps.Format ('application / gml + xml')])] super ( EchoVector, self) .__ init __ (self._handler, identifier = "echo_vector", title = "Echo Vector Test", abstract = "Verilmiş vektoru qaytarır", versiya = "1.0.0.0", giriş = giriş, çıxış = çıxış, store_supported = Doğru, status_supported = Doğru) def _handler (özünü, istək, cavab): response.outputs ['response']. data = request.inputs ['message'] [0] .data return response app = flask.Flask ( __name__) wps_processes = [EchoVector ()] service = pywps.Service (wps_processes) @ app.route ('/ wps', methods = ['GET', 'POST']) def wps (): return service bind_host = "127.0 .0.1 "app.run (yivli = Doğru, host = bind_host)

Müştəri üçün indiyə kimi sahib olduğum şey budur:

idxal owslib.wps idxal kolleksiyaları url = "http://127.0.0.1:5000/wps" wps = owslib.wps.WebProcessingService (url, verbose = False, skip_caps = True) wps.getcapables () process_name = "echo_vector" girişləri = [("mesaj", owslib.wps.GMLMultiPolygonFeatureCollection ([[(- 102.8184, 39.5273), (-102.8184, 37.418), (-101.2363, 37.418), (-101.2363, 39.5273), (-102.8184) 39.5 ]))] icra = icra daxilində çıxış üçün wps.execute (process_name, girişlər): owslib.wps.printInputOutput (output)

"Giriş mesajı üçün" etibarsız mimeType dəyər mətni / xml "istisnası alıram.

Bu kod bu GitHub deposunda da mövcuddur


Buradakı problem OGR-lərinExportToGMLçıxışda ExecuteResponse XML boğulma analizini edəcək bir ad sahəsi prefiksi / uri elan etmir. Bunu həll etmək üçün bir GDAL bileti açdım.

Bu vaxt, bir həll yolu olaraq, çıxışını tənzimləyə bilərsinizExportToGMLburada təsvir edildiyi kimi, yəni:

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


Videoya baxın: Məşq üçün super musiqi (Oktyabr 2021).