4 votos

Generado dinámicamente la superposición de mapas con el servidor de mapas - ¿cuál es la mejor opción?

Estoy frente a un problema y quisiera pedir su ayuda para encontrar la mejor solución de cartografía!

Detalles del proyecto:

  • El Usuario puede elegir 1 de los varios cientos de territorio basado en funciones para asignar sus valores. Un buen ejemplo: la Población.
  • Cada función representa los datos en un grupo de unidades territoriales. Estas unidades pueden ser muy grandes (i.e países o continentes), y puede ser muy pequeño (asentamientos). Cada unidad está representada como un (multi)polígono.
  • El usuario puede filtrar en qué unidades territoriales que quiere mostrar. En otras palabras, él puede filtrar las zonas que se muestran. Basado en los valores de la función seleccionada y las áreas seleccionadas, el mapa creado será un 30% transparente Choropleth la superposición de mapas. Esto agrega una dinámica de comportamiento, a fin de mapas estáticos no son una opción.
  • El Usuario puede seleccionar un gran número de territorios. I. e: todos los asentamientos de un país. Esto presenta varios miles de polígonos en pantalla.
  • Tengo un alto nivel de resolución de ESRI shapefile de datos en cada unidad. Puedo convertirlos a cualquier formato SIG.

La implementación actual: uso de Google Maps con la Fusión de las Tablas de la capa de agregado. La Fusión de la Tabla es generada dinámicamente con respecto al procedimiento siguiente:

  • Un pre cargados de la base de la fusión se utiliza la tabla, que contiene toda la geometría de datos para todas las áreas posibles. Un areaId clave principal es la parte de la tabla
  • Generada dinámicamente la fusión de la tabla se carga en tiempo de ejecución que contiene los valores y área de identificadores para la función seleccionada.
  • Cuando esta dinámica se crea la tabla, podemos obtener la fusión de la tabla para mostrar al unirse a la tabla dinámica con la tabla base .
  • Los colores se calcula en tiempo de ejecución y se aplica como el formato condicional en la capa de la vista

El problema: Cuando se genera una nueva fusión de la tabla google necesita algo de tiempo para almacenar en caché el mapa generado de azulejos en el lado del servidor. Hasta ahora no he encontrado una solución para obtener información sobre estos mapas se ha generado o no a la hora de mostrar el mapa para el Usuario. Cuando se muestra el mapa por primera vez(y probablemente la última vez..ya que son generados en tiempo de ejecución) el usuario no ve el Choropleth mapa("Datos todavía pueden ser la carga de" mensaje en teselas de mapa), se tiene que actualizar la página varias veces para obtener el mapa que se muestra correctamente. Y en total, esta solución es muy lento. Toma 10-25sec para subir los datos a la Fusión de las Tablas de servicio y otro de 2 20sec para obtener las teselas en caché en los servidores de google.

Lo que he intentado:

  • Capas KML en Google Maps: no tomar Kml de más de 10M. El problema de caché es todavía presente
  • La creación de polígonos en el lado del cliente: es una exageración para el navegador por grandes figuras como los continentes y en los casos cuando la 3000-4000 pequeñas formas como los asentamientos se muestran.

Buscando: un servidor de asignación de solución que se me puede instalar y utilizar en el proyecto del servidor para generar dinámicamente estos mapas. La solución podría calificar si todo el proceso no tarda más de 10 segundos. La capa de trama detrás de la Choropleth mapa debe ser preferentemente de Mapas de Google, pero no necesariamente.

Cualquier sugerencias son más apreciados y gracias por su ayuda de antemano!

1voto

Josh Stodola Puntos 199

Estoy respondiendo a mi propia pregunta. Finalmente - después de loking a las posibles soluciones - me tomó de la GeoServer/OpenLayers enfoque.

Estoy usando Google Maps como una capa de base en OpenLayers. GeoServer es configurado para generar la Choropleth capa de mapa de un espacio habilitado de la base de datos. El proyecto fue el uso de MySQL como db capa que ha limitado espacio de apoyo, pero ya no tenía la necesidad de geometría compleja de las funciones fue suficiente para alcanzar mis metas. Yo era capaz de almacenar geometrías de cada área, utilizando OGR2OGR en MySQL.

Básicamente estoy almacenar los valores generados junto con los relacionados con los areaId y la clase de color en una tabla separada que tiene indexadas mapId atributo. GeoServer es capaz de utilizar una vista SQL parametrizadas como una capa, así que lo único necesario era unirse a los valores generados por la mesa con el área de la tabla.

Espero que ayude a alguien. Gracias por las respuestas.

0voto

JB King Puntos 10105

Me gustaría ir a tomar un vistazo a www.mangomap.com o www.cartodb.com. MangoMap le permitirá armar algo que cumpla la mayoría de los requisitos de forma rápida y fácilmente, pero si usted necesita más control y no de la mente de buceo en el código, a continuación, CartoDB definitivamente el trabajo.

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