Quero usar o servidor GeoServer WMS para criar um estilo personalizado. Digamos que eu tenha uma área como polígono em um shapefile, mas não tenho a temperatura dessa área como um atributo. Em um serviço da web, coleto pontos de temperatura dentro dessa área. Agora, quero que o GeoServer colora essa área de acordo com esses pontos de temperatura dinâmicos.
Aqui está um exemplo:
Se possível, quero colocar essas bordas na imagem e algumas explicações sobre cores no lado direito. Como posso enviar esses pontos de temperatura para um GeoServer WMS. E posso fazer uma coloração personalizada de acordo com esses parâmetros dinâmicos?
Não sei como converter esses dados de ponto em cores da área.
Minha próxima pergunta é semelhante, mas sem pontos, posso colorir um polígono com atributos dinâmicos que não estão no shapefile.
Aqui está um exemplo que eu quero colorir esses polígonos de acordo com o tipo de produto, mas como pergunta anterior, esses tipos de produtos são reunidos dinamicamente.
Espero que isso seja possível.
fonte
Respostas:
Na sua segunda pergunta :
Um SLD pode ser criado dinamicamente, o que significa que pode estilizar mapas usando dados dinâmicos. Para que isso funcione, é necessário conhecer os IDs dos polígonos que você está tentando estilizar e também alterar / expandir seu serviço da web.
Faça com que seu serviço web gere SLDs on-the-fly em vez de apenas retornar dados. Isso é bastante simples usando .NET, Java, PHP etc. O SLD que você gerar terá uma regra para cada faixa de cores que você deseja exibir. Cada regra identificará os polígonos aos quais a cor se aplica por seu ID. O bloco de filtro de cada regra conterá
PropertyIsEqualTo 1 OR PropertyIsEqualTo 2 OR ...
. Cada regra estiliza seus polígonos com a cor que você escolheu para representar o valor. Você tem duas opções para dizer ao GeoServer para usar seu SLD dinâmico.'http://geoserver/wms?request=GetMap...&sld=' + encodeURIComponent('http://web-service/generateSLD?and=any-parameters-that-influence-sld-generation')
. Quando o GeoServer recebe a solicitação do WMS, ele decodifica os parâmetros e consulta esse URL para o SLD. Da perspectiva do GeoServer, isso não é diferente de consultar um SLD estático mantido em um servidor de arquivos.Ambas as abordagens podem ser testadas usando um SLD estático criado para teste, para que você saiba o quão bem-sucedido isso é antes de se esforçar em seu serviço da web. As duas abordagens podem ser usadas para solicitar ao GeoServer o gráfico da legenda, que representará as mesmas regras (no entanto, se você usar a opção 1, é possível que os dados usados para gerar seu SLD tenham mudado após a geração do mapa).
Penso que esta é a sua melhor opção para a pergunta 2.
Na sua primeira pergunta :
Os pontos de temperatura sempre representam os mesmos locais? Se sim, você pode descobrir com antecedência quais polígonos esses pontos de temperatura se enquadram? Se sim, você pode simplesmente reutilizar a abordagem descrita acima, com seu script de geração SLD convertendo pontos em IDs de polígonos.
EDIT Acabei de ver isso referenciado em outra pergunta: http://pypi.python.org/pypi/python-sld/
fonte
A resposta curta é - sim, é muito possível! Na verdade, existem várias maneiras de solucionar esse problema. Aqui está uma dessas maneiras em que consigo pensar.
Há duas partes para sua pergunta aqui.
1) Representar dados estáticos e dinâmicos provenientes de fontes externas no GeoServer.
Crie um grupo de camadas, diga "Mapa Regional", com 2 camadas. A camada 1 (estática) é o "Mapa regional - fornecido pelo seu banco de dados somente leitura ou a camada 2 do Shapefile (dinâmico) é o" clima "- que pode servir dados dinâmicos por meio do WMS em cascata. ao seu GeoServer, e você pode fornecer temperatura ou outros atributos dinâmicos chamando serviços remotos usando o protocolo que você usa - REST, SOAP, TCP etc.
Dessa forma, você pode adicionar atributos às camadas dinamicamente no futuro, sem adicionar itens ao DB.
2) Execute um estilo personalizado ** Sua melhor aposta aqui é usar o ** SLD (Style Layer Descriptor) . Há muita documentação sobre como estilizar usando o SLD. É muito poderoso! Você pode controlar o estilo usando cores, níveis de zoom, limites de valor (> 40C é vermelho,> 35 é laranja) e tem regras baseadas em valores de vários atributos e rótulos. O estilo está disponível para a maioria das geometrias - ponto, linha, área etc. Você pode usar editores de estilo como Atlas ou o editor que acompanha o OpenGeo - GeoExplorer, para testar várias condições de dados.
A vantagem dessa abordagem é que você pode controlar o estilo das camadas 1 e 2 independentemente um do outro. Você pode fazer lendas na sua interface do usuário (JavaScript), fora do GeoServer. O GeoServer mesclará todas as regras de estilo para produzir a sobreposição correta. Dependendo do desempenho obtido da camada e do Styling, você também pode adicionar uma solução de cache de blocos como GeoWebCache ou HTTP Cache como Varnish.
Felicidades,
Ramesh
fonte