geoserver suporta proxy de outros serviços de ladrilhos?

8

Eu gostaria de usar um servidor central para fornecer um local comum para todos os nossos recursos de mapeamento / imagem. Nossos dados são principalmente na forma de geotiffs com uma variedade de camadas de base de várias fontes na web.

O Geoserver, dado um conjunto de geotiffs, faz um bom trabalho em servir blocos (via WMTS ou TMS). No entanto, não conheço uma maneira de proxy facilmente outras fontes externas de dados, como as camadas básicas de exemplo, em http://services.arcgisonline.com/ArcGIS/rest/services . Infelizmente, parece que muitos serviços não implementam uma camada WMS (ou não a tornam pública). Atualmente, temos lógica em nosso aplicativo para casos especiais de vários serviços da web, mas é um pouco de hack. Idealmente, eu gostaria de apresentar uma interface de serviços da Web comum a todos os nossos provedores de lado a lado. Isso permitiria que clientes WMS, como aplicativos eólicos mundiais, "simplesmente funcionassem".

Meu único pensamento agora é criar um pequeno serviço web python que exponha uma lista de recursos via WMS e, em seguida, adicione esse serviço ao geoserver como uma loja WMS em cascata. Parece um monte de trabalho para simplesmente exibir URLs de bloco de mapa.

Estou curioso para saber se esse problema já foi resolvido antes ou se existe uma solução mais fácil.

Obrigado!

cshimer
fonte

Respostas:

7

Você pode querer verificar o MapProxy . É um proxy de código aberto para dados geoespaciais. Ele armazena em cache, acelera e transforma dados de serviços de mapas existentes e atende a qualquer cliente de GIS da área de trabalho ou da web.

insira a descrição da imagem aqui

Ele lê dados de:

  • Fontes WMS (1.0.0–1.3.0)
  • Fontes TMS / WMTS configuram o Mapserver e o Mapnik
  • qualquer fonte compatível com TileCache, Google Maps ou Bing

Também pode

  • cache de dados no sistema de arquivos, como MBTiles ou dentro do CouchDB
  • reprojetar fontes WMS para outras SRS
  • armazene imagens idênticas apenas uma vez (por exemplo, azulejos oceânicos)
  • incorporar marca d'água em ladrilhos
  • mesclar várias fontes
  • limitar fontes a áreas de polígonos

O MapProxy também é um servidor WMS totalmente compatível e suporta qualquer cliente WMS (desktop e web). Ele suporta respostas WMS de dados em cache:

  • mescla blocos e escalas ou reprojeta imagens
  • acelera o WMS existente de 10 a 100 vezes

serviços WMS em cascata:

  • pedidos multithread
  • mescla várias fontes
  • adiciona transparência a camadas opacas
  • reprojetos on-the-fly

Ele também suporta combinações de camadas em cache e em cascata:

  • responder a solicitações GetLegendGraphic
  • solicitações GetFeatureInfo em cascata com transformações XSL opcionais
  • limitar fontes a áreas de polígonos
  • converter versões WMS e formatos de imagem
  • suporte para dados rasterizados sem imagem, como DEMs

Você também pode pré-gerar o cache do bloco para obter melhor desempenho.

Ele também vem com uma API de autorização flexível que permite adicionar controle refinado sobre serviços e camadas.

RK
fonte
2
Essa é a melhor resposta para a pergunta, mas deve ser tomada com a recomendação de que você nunca faça isso em serviços externos que não controla - no mínimo, é um pesadelo de desempenho e, mais tipicamente, é contra os termos de serviço e resultar na suspensão do seu serviço.
tmcw
0

Você está criando um gargalo ao fazer proxy de serviços externos por meio do servidor. Também vai diminuir o desempenho do seu mapa da web, forçando um servidor a processar todas as solicitações.

A única razão pela qual pude ver uma razão para isso é a segurança. Mas, mesmo assim, é melhor proteger o terminal e transmitir um token.

Donny V.
fonte