A álgebra de mapas para varredura é fácil com o ArcGIS Raster Calculator (ou QGIS). Eu pensava que isso seria fácil com servidores GIS da web, como GeoServer e MapServer, além de OpenLayers etc. O que eu quero alcançar é fazer coisas simples, como dividir duas imagens e gerar uma terceira imagem de proporção a ser exibida na página da web. Passei semanas para encontrar uma solução e isso acabou sendo bastante difícil (para mim).
Eu tentei algumas coisas, incluindo:
Varredura PostGIS. Eu acho que a álgebra raster não é um problema aqui.
Mas o raster PostGIS é muito difícil de carregar no GeoServer. Há muitas perguntas repetidas sobre como carregar o pgraster no GeoServer. Veja, por exemplo, como importar o GeoTIFF via postGIS para o GeoServer? ? , /gis/86006/publish-rasters-stored-in-postgresql-with-geoserver ?, entre outros. Nenhuma resposta aqui no GIS.SE ou no site oficial do GeoServer fornece uma lista completa de etapas que podem ser seguidas para funcionar. O carregamento do pgraster no MapServer registrou sucesso, mas com desempenho muito lento. Ambos parecem exigir alguns recursos, e um comando de uma linha para importar uma varredura para qualquer servidor parece estar fora de questão.
GeoTIFF
O GeoTIFF é fácil de carregar no GeoServer e no MapServer. Mas o que podemos fazer com isso? Sem um PostGIS como o SQL, virei-me e procurei brevemente usando o WCS para fazer álgebra de mapas, mas não encontrei muita coisa. O WCS é um caminho viável para isso com os servidores atuais?
Programe da maneira mais difícil
De alguma forma, use o AJAX para chamar uma página PHP ou escrever um WPS usando o GeoServer para importar imagens para o PostGIS, fazendo a álgebra do mapa e depois convertendo o resultado pgraster em um formato (por exemplo, GeoTIFF) que pode ser facilmente carregado e exibido no GeoServer / MapServer.
Obviamente, pode-se escrever código para ler diretamente o GeoTIFF e fazer a álgebra do mapa sem suporte ao GIS.
Nenhuma das opções acima parece ser fácil ou razoável para mim, considerando a facilidade com que a mesma álgebra pode ser feita no Desktop GIS.
Eu queria saber se alguém teve alguma experiência em álgebra de mapas em um ambiente GIS da web e pode sugerir um caminho viável?
Estou interessado em soluções de código aberto (por razões políticas dentro da minha organização.) Estou ciente de que o ArcGIS Server pode chamar código python do ArcGIS, mas não temos a licença e o ambiente aqui não é favorável para a aquisição de uma.
fonte
Respostas:
Usando apenas software de código aberto, você quase certamente precisará fazer alguma programação. GDAL é o de facto código aberto raster biblioteca de I / O, então você provavelmente vai usá-lo ou um dos seus muitos wrappers. Você pode usar Python (por exemplo, rasterio + numpy / scipy ) ou node.js, por exemplo, node-gdal (embora tenha cuidado, ele é atualmente síncrono / bloqueador). Quanto à implementação efetiva como um serviço da web, não tenho certeza de qual seria a melhor abordagem, mas há uma pergunta relacionada aqui: Comparando diferentes servidores GIS de código aberto?
Se a programação não é sua opção, dê uma olhada no FME Server . É um produto comercial, mas provavelmente substancialmente mais barato que o ArcGIS Server, e possui todos os tipos de transformadores de cálculo de varredura ; portanto, ficaria surpreso se eles não conseguissem realizar o que você precisa fazer. Você não precisaria carregar os rasters em um banco de dados, pois ele pode ler praticamente qualquer formato de arquivo raster .
A parte do servidor permitiria executar as transformações (áreas de trabalho do FME) em um servidor e usar uma API, por exemplo, a API REST do FME Server , para iniciar essas transformações e acessar os resultados.
O principal benefício é que você não precisaria fazer muita ou nenhuma programação para colocar os serviços em funcionamento, apenas uma pequena codificação de front-end para trabalhar com a API.
fonte
O que você está procurando é um servidor de imagem. O ArcGIS for Server possui esta extensão:
Extensão de Imagem ArcGIS para Servidor
não conheço nenhum equivalente de código aberto.
fonte
Provavelmente, você pode fazer isso no navegador com o WebGL:
http://www.html5rocks.com/en/tutorials/webgl/webgl_fundamentals/
mas exigiria alguma programação e um navegador compatível com WebGL. Mas deve ser rápido, pois usaria a GPU na maioria dos casos.
fonte