4 votos

WMS + Google Earth + vista inclinada = ¿fallo de alineación?

Estoy trabajando en una aplicación web personalizada que genera datos espaciales y que incluye un visor de mapas basado en web. Tenemos un servlet personalizado que maneja peticiones WMS (no una implementación completa de WMS, sólo lo suficiente para nuestras necesidades) y utiliza MapServer/SWIG para generar datos de imagen. La interfaz web utiliza OpenLayers. Hasta ahora, todo va bien: todo funciona y nos proporciona mapas interactivos de aspecto agradable.

También hemos creado una función que crea un archivo KML con un <GroundOverlay> que remite a la URL de nuestro WMS: el usuario hace clic en un enlace, se abre en Google Earth y puede ver los datos. De nuevo, hasta aquí todo bien.

El problema surge cuando el usuario empieza a inclinar la cámara y a desplazarse por Google Earth. Google Earth empieza a registrar mal nuestros datos, al principio unos pocos metros cada vez, pero al final decenas de kilómetros, si se inclina, se acerca y se aleja la cámara y se desplaza lo suficiente.

He hecho algunas búsquedas y he encontrado varios sitios que indicaban que la compatibilidad de Google Earth con la inclinación de imágenes WMS era escasa, pero poco en cuanto a datos concretos. ¿Alguien más ha intentado esto y experimentado problemas similares?

Y lo que es más importante, ¿cómo debo enfocar este problema? Dado que nuestros usuarios están muy interesados en hacer exactamente este tipo de exploración (trazar datos con topografía, inclinar la cámara hacia abajo y volar alrededor de nuestra área temática) y que nuestros usuarios ya están bastante comprometidos con el uso de Google Earth como cliente, ¿cómo debemos hacer que los datos estén disponibles para que puedan verlos?

1voto

Brian R. Bondy Puntos 1715

Una vez utilicé MapTiler con un servidor WMS ( Maptiler es una interfaz gráfica para gdal2tiles así que lo mismo debería ser posible con gdal2tiles, pero me pareció más fácil experimentar con una interfaz gráfica ). No lo he probado, pero Maptiler ofrece una opción para generar un KML SuperOverlay. Así que podría valer la pena comprobarlo.

Para utilizar MapTiler con un servidor WMS es necesario escribir un archivo XML que describa el servidor WMS ( La sintaxis se explica aquí ) y dárselo como mapa de entrada a MapTiler. Probablemente MapTiler generará mosaicos y el SuperOverlay no mantendrá una referencia al Servidor WMS por lo que podría no ser exactamente lo que está buscando.

1voto

ESV Puntos 4591

Como dice @Sarge, Google Earth utiliza una proyección esférica. Podrías utilizar la gdal2tiles para crear el kml/kmz por ti, pero aún necesitas deformar las imágenes para que encajen, usando algo como gdalwarp . Véase paso 5 de este ejemplo . Lamentablemente no sabría decirte cómo integrar GDAL con tu aplicación web.

Espero que le sirva de ayuda.

1voto

Nate Puntos 220

Supongo que está intentando renderizar una sola imagen WMS para cubrir toda la vista. Recuerde que cuando la imagen está inclinada es muy difícil renderizar una imagen rectangular de la resolución correcta para toda el área. Las ubicaciones cercanas a la cámara necesitan ser renderizadas de forma diferente a las características en el horizonte. Por lo tanto, el uso directo de WMS es completamente inadecuado para su uso en Google Earth y debe evitarse.

El mejor enfoque consiste en crear un enlace de red que divida la zona en un conjunto de mosaicos, cada uno con su propio enlace único a una extensión fija del SGA como Superposición. Esto permite a Google Earth decidir qué mosaicos cargar y cuándo. También simplificará en gran medida el almacenamiento en caché en el servidor. Cree mosaicos más grandes para diferentes niveles de zoom utilizando la etiqueta Región. Cuando la vista está inclinada, Google Earth puede utilizar mosaicos de menor resolución en el horizonte y de mayor resolución para las zonas más cercanas. Para tener una idea de una buena estructura, prueba a convertir tus datos manualmente utilizando el controlador KML Super Overlay GDAL.

Para los mosaicos grandes, la respuesta WMS debe estar en WGS84 debido a problemas de proyección. Para mosaicos más pequeños, a veces es posible utilizar un sistema de proyección local calculando individualmente las coordenadas WGS84 de las esquinas de los mosaicos. Hay problemas obvios de proyección, aunque los resultados son a menudo mejores que la interpolación.

0voto

Erik Öjebo Puntos 6937

Utilización de OpenLayers, Google Maps API (modo Google Earth) y GeoExt

GeoExt es la clave:

Excelente ejemplo de trabajo:

http://dev.geoext.org/sandbox/cmoullet/ux/GoogleEarthPanel/examples/GoogleEarthPanelWmsExample.html

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