Quiero usar el servidor GeoServer WMS para un estilo personalizado. Digamos que tengo un área como polígono en un archivo de forma, pero no tengo la temperatura de esta área como un atributo. Desde un servicio web obtengo puntos de temperatura dentro de esa área. Ahora quiero que GeoServer coloree esta área de acuerdo con estos puntos de temperatura dinámicos.
Aquí hay un ejemplo:
Si es posible, incluso quiero colocar estos bordes en la imagen y algunas explicaciones sobre los colores en el lado derecho. ¿Cómo puedo enviar estos puntos de temperatura a un GeoServer WMS? ¿Y puedo hacer un color personalizado de acuerdo con estos parámetros dinámicos?
No sé cómo convertir estos datos de puntos a colores de área.
Mi siguiente pregunta es similar pero sin puntos, ¿puedo colorear un polígono con atributos dinámicos que no está en el archivo de forma.
Aquí hay un ejemplo que quiero colorear estos polígonos de acuerdo con su tipo de producto, pero como pregunta anterior, estos tipos de productos se recopilan dinámicamente.
Espero que esto sea posible.
fuente
Respuestas:
En su segunda pregunta :
Un SLD se puede crear dinámicamente, lo que significa que puede diseñar mapas utilizando datos dinámicos. Para que esto funcione, necesitará conocer las ID de los polígonos que está tratando de diseñar y también debe alterar / expandir su servicio web.
Haga que su servicio web genere SLD sobre la marcha en lugar de simplemente devolver datos. Esto es bastante simple usando .NET, Java, PHP, etc. El SLD que genere tendrá una regla para cada banda de color que desee mostrar. Cada regla identificará los polígonos a los que se aplica el color por su ID. El bloque de filtro de cada regla contendrá
PropertyIsEqualTo 1 OR PropertyIsEqualTo 2 OR ...
. Cada regla aplica estilos a sus polígonos con el color que haya elegido para representar el valor. Luego tiene dos opciones para decirle a GeoServer que use su SLD dinámica.'http://geoserver/wms?request=GetMap...&sld=' + encodeURIComponent('http://web-service/generateSLD?and=any-parameters-that-influence-sld-generation')
. Cuando GeoServer recibe la solicitud WMS, decodificará los parámetros y consultará esta URL para el SLD. Desde la perspectiva de GeoServer, esto no es diferente a consultar un SLD estático en un servidor de archivos.Ambos enfoques se pueden probar utilizando un SLD estático que cree para probar, para que sepa qué tan exitoso es esto antes de esforzarse en su servicio web. Ambos enfoques podrían usarse para pedirle a GeoServer el gráfico de la leyenda, que luego representará las mismas reglas (sin embargo, si usa la opción 1, es posible que los datos utilizados para generar su SLD hayan cambiado después de generar el mapa).
Creo que esta es tu mejor opción para la pregunta 2.
En tu primera pregunta :
¿Los puntos de temperatura siempre representan los mismos lugares? En caso afirmativo, ¿puede averiguar de antemano en qué polígonos se encuentran esos puntos de temperatura? En caso afirmativo, simplemente puede reutilizar el enfoque descrito anteriormente, con su secuencia de comandos de generación SLD traduciendo puntos en ID de polígono.
EDITAR Acabo de ver esto referenciado en otra pregunta: http://pypi.python.org/pypi/python-sld/
fuente
La respuesta corta es: sí, ¡es muy posible! En realidad, hay una variedad de formas en que puede abordar este problema. Aquí hay una de esas formas en las que puedo pensar.
Hay 2 partes para su pregunta aquí.
1) Representar datos estáticos y dinámicos provenientes de fuentes externas en GeoServer.
Cree un grupo de capas que diga "Mapa regional" con 2 capas. La capa 1 (estática) es el "Mapa regional, servido desde su base de datos de solo lectura o el Shapefile Layer 2 (dinámico) es el" clima ", que puede servir datos dinámicos a través de la cascada WMS. a su GeoServer, y puede servir la temperatura u otros atributos dinámicos llamando a servicios remotos utilizando cualquier protocolo que use: REST, SOAP, TCP, etc.
De esta manera, puede agregar atributos a las capas dinámicamente en el futuro sin agregar cosas a la base de datos.
2) Realice un estilo personalizado ** Su mejor opción aquí es usar ** Style Layer Descriptor (SLD) . Hay mucha documentación sobre cómo diseñar usando SLD. ¡Es muy poderoso! Puede controlar el estilo utilizando colores, niveles de zoom, umbrales de valores (> 40C es rojo,> 35 es naranja) y tener reglas basadas en valores de múltiples atributos y etiquetas. El estilo está disponible para la mayoría de las geometrías: punto, línea, área, etc. Puede usar editores de estilo como Atlas o el editor que viene con OpenGeo - GeoExplorer, para probar varias condiciones de datos.
La belleza de este enfoque es que puede controlar el estilo de Layer1 y Layer2 independientemente uno del otro. Puedes hacer leyendas en tu interfaz de usuario (JavaScript), fuera de GeoServer. GeoServer fusionará todas las reglas de estilo para producir la superposición correcta. Dependiendo del rendimiento que obtenga de su capa y estilo, también podría considerar agregar una solución de almacenamiento en caché de mosaicos como GeoWebCache o HTTP Cache como Varnish.
Salud,
Ramesh
fuente