sitmun / sitmun-backend-core

REST API, back-end business logic and access to DB.
European Union Public License 1.2
0 stars 4 forks source link

Use of MAPPROXY to improve API SITNA integration with SITMUN #180

Open IDEmenorca opened 6 months ago

IDEmenorca commented 6 months ago

Is your feature request related to a problem? Please describe. The sitna api is designed to work based on a single standard WMS service. The very essence of SITMUN is to mashup multiple services in a single aplication. This APISITNA feature has forced the overwriting of some API SITNA functionalities which causes som usage restrictions.

Describe the solution you'd like Using Mapproxy could, potentialy override this issue an allow the native use of API SITNA but with the functionality expected in SITMUN applications.

Describe alternatives you've considered Two usage approaches are visualized, 'a priori':

  1. The first and simplest is to consider Mapproxy as an additional and external piece to SITMUN. Therefore it is placed prior to the definition of layers in the SITMUN administrator.

  2. The second would be to somehow integrate Mapproxy into SITMUN so that the configurations made in the layer tree end up generating a single wms service which is what is communicated to a SITMUN client that works with the SITNA API native (without overwriting anything).

Additional context --Add any other context or screenshots about the feature request here.--

IDEmenorca commented 6 months ago

Buenas!

He hecho un poco el friki, que hacía días que no podía "salir al patio" a jugar un rato. Os cuento lo que he realizado:

1.- En una VM con Ubuntu 22.04, he instalado mapproxy siguiendo las directrices de ChatGPT (el santo grial) ya que con las indicaciones de la web, me daba algunos problemas. 2.- Una vez instalado, lo he arrancado: imagen

3.- Esto arranca mapproxy, que por defecto utiliza el puerto 8080: imagen

Se puede acceder a la demo, con el enlace que aparece:

imagen

4.- Por defecto, hay configurados distintos servicios de origen diverso: WMS, WMTS, etc. Toda esta configuración está especificada en un fichero .yaml. Es fácil agregar nuevos servicios. Por ejemplo, vamos a agregar el servicio WMS de catastro y el WMS de la capa del camí de cavalls de Menorca:

Si ahora refrescamos la web de mapproxy: imagen

5.- Si ahora hemos un click en el enlace external, no aparece una web con el contenido del capabilities: imagen

Dónde vemos que hay tres capas declaradas en el servicio: imagen

  1. Si ahora abrimos QGIS y hacemos una connexión a un nuevo servicio WMS: imagen

Vamos a comprobar que se cargan las capas y que realmente se está haciendo de proxy:

imagen

No he podido cargar la capa de catastro y la del camí de cavalls me aparece sin transparencia. Seguramente será cuestión de acabar de configurar correctamente el fichero de configuración. Tampoco he añadido nuevos SRS y por he trabajado con los que se ofrecen por defecto.

Pero para ser una prueba de concepto no tiene mala pinta.

Qué os parece?

IDEmenorca commented 6 months ago
  1. Which features of the service are lost along the way (transparencies, layer descriptions, legendurl, dataurl, styles...). I see in the Mapproxy capabilities that it doesnt' include the attributes of the original capabilities, although I suposo that's a normal behavior considering that Mapproxy is excatly that, a proxy. So it is suposed to redirect all the petitcions to the corresponding wms service... we have to see how that affects the behavior of the API.

  2. If it is possible to create layer groups with one or multiple nesting levels.