1 votos

¿Crear proxy WMS sin documento de capacidades?

Recientemente se me ha encargado la tarea de hacer que un servidor WMS escrito a medida sea utilizable con clientes y aplicaciones más recientes como QGis.

El servidor original fue escrito hace años por una consultora en C++ que ya no está en activo.

Mi cliente, los propietarios de dicho servidor personalizado en el momento en que se escribió, nunca obtuvo el código fuente del producto, y es una aplicación bastante especializada (se conecta a sistemas de bases de conocimiento personalizadas en todos sus sistemas), por lo que una simple reescritura está fuera de cuestión.

El mayor problema es que en su momento se construyó para utilizar una versión muy, muy temprana de OpenLayers (o similar) y entregar las imágenes del mapa en una interfaz de usuario basada en un navegador bastante simple.

Debido a la naturaleza personalizada de todo, todo lo que los creadores implementaron fue la llamada al servicio "GetMap", y no la llamada "GetCapabilities".

Debido a esto, aplicaciones como QGis y Esri se niegan a hablar con el servidor, y muchos de los kits de herramientas con los que estoy familiarizado como SharpMap y MapWindow tampoco me permiten usarlo como fuente WMS.

He estado buscando en el uso de MapProxy para actuar potencialmente como un ir entre que proporcionará un documento de tapas, pero obtener sus azulejos a través de llamadas normales WMS al servidor personalizado, pero no tengo experiencia con MapProxy así que no sé si eso resolvería mi problema.

En este momento, voy a tener un juego con "MapServer" y ver si yo podría ser capaz de construir un archivo de mapa personalizado para utilizar para pasar a través de, en su defecto estoy pensando que podría tener que construir un servidor independiente que se ve como un servicio WMS regular a las aplicaciones cliente, pero detrás de las escenas proporciona esencialmente un hecho en el lugar caps doc y utiliza peticiones HTTP directas para obtener azulejos para pasar a través.

¿Se puede configurar MapProxy para que utilice WMS como fuente, pero sin un documento de capacidades?

He estado leyendo los documentos de MapProxy, y no hay nada en la sección WMS que aborde esta cuestión.

Actualización

Todas las grandes respuestas hasta el momento, he intentado el enfoque MapProxy, y aunque funcionó, era un poco pesado ir en la máquina virtual que se estaba ejecutando fuera de.

El proxy se implementa como una instancia virtual situada entre el servidor real y los nuevos clientes.

La instalación de aplicaciones Java en el servidor real como he descubierto es un no / no, así que cualquier Java tiene que estar en una máquina virtual, lo que me deja con un Apache2 estándar y ya instalado MapServer binario en el servidor real, por lo que mi enfoque actual es en realidad aprovechar MapServer-cgi para hablar con el servicio personalizado en el mismo cuadro.

De hecho, me preguntaba si podría hacer que mapserver ofreciera las imágenes que ofrecía el servidor personalizado, pero no ha sido así, ya que los desarrolladores originales han codificado los gráficos de alguna forma extraña.

El antiguo servidor era definitivamente un caso de, si quieres hacer algo a esto en el futuro, vas a tener que llamarnos para hacerlo tipo de implementación :-(

Sin embargo, todavía estoy probando diferentes enfoques, por lo que es posible que haya algunas actualizaciones más.

Actualización final

Así que en realidad terminó teniendo que ir la costumbre MapFIle con MapServer ruta, es un poco lento, pero funciona y funciona bien, al menos por el momento, hasta que podamos construir un servidor completley nuevo para reemplazarlo.

Dado que inicialmente hice esta pregunta

" ¿Se puede configurar MapProxy para que utilice WMS como fuente, pero sin un documento de capacidades? "

Voy a marcar la respuesta de @jgrocha como la respuesta a la pregunta, ya que respondió a la Q directamente, y como lo he probado después, y me habría funcionado si me hubieran permitido usar Java, entonces lo más probable es que hubiera ido con esa respuesta.

2voto

Jonah Katz Puntos 128

Puede utilizar MapProxy para eso. Utilizo MapProxy para proporcionar documentos de Capacidades adecuados a los clientes (como OpenLayers o QGIS). También lo uso para reproyectar servicios de mosaicos (como el servidor de mosaicos de OpenStreetMap).

Utilice http://yourserver/mapproxy/demo url para las pruebas y compruebe el documento de Capacidades.

Configure su MapProxy con algo como:

services: demo: wms: srs: ['EPSG:900913','EPSG:3857','EPSG:4326','EPSG:3763'] image_formats: ['image/png'] md: title: MapProxy WMS Proxy abstract: Minimal MapProxy example. layers: - name: caop title: Caop DGT sources: [caop] sources: caop: type: wms wms_opts: featureinfo: true version: 1.3.0 legendgraphic: true legendurl:file://legend.png req: url: http://mapas.dgterritorio.pt/ows/caop/continente layers: Freguesias-2016 transparent: true

2voto

Joe Puntos 16

La forma más fácil que puedo imaginar es escribir un archivo XML estático que tenga una estructura GetCapabilities válida y acceder a esas capacidades estáticas con cualquier cliente WMS.

La respuesta GetCapabilies contiene también la URL a utilizar para las peticiones GetMap. Véase, por ejemplo https://demo.geo-solutions.it/geoserver/wms?service=wms&version=1.3.0&request=GetCapabilities

Por ejemplo, el servidor anterior anunciaba esto como url GetMap.

<OnlineResource xlink:type="simple" xlink:href="https://demo.geo-solutions.it:443/geoserver/ows?SERVICE=WMS&"/ >

Utilice la dirección del antiguo servidor que sólo puede GetMap como GetMap OnlineResource y debería funcionar de inmediato. Cualquier cliente WMS estándar debería seguir el enlace GetMap automáticamente. En la vida real algunos clientes no hacen eso sino que usan la dirección GetCapabilities también para GetMaps. Los usuarios de QGIS pueden elegir y en este caso necesitan dejar desmarcada la selección "Ignorar GetMap/GetTile URI reportado en capablities", que también es la opción por defecto.

enter image description here

2voto

Joe Puntos 16

GeoWebCache autónomo http://geowebcache.org/docs/current/index.html no intenta leer GetCapabilities. Todo lo que requiere en la configuración es la url GetMap y el nombre de la capa WMS que debe ser almacenada en caché

http://geowebcache.org/docs/current/configuration/layers/examples.html#minimal-configuration

No es posible añadir capas a GeoWebCache integrado que se instala con GeoServer con la aplicación de administración gráfica si el servidor no admite GetCapabilities. Aún es posible encontrar el archivo XML que contiene la configuración del archivo de capas de GeoWebCache y hacer las ediciones manualmente.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X