Executando álgebra de mapa raster em GIS da web de código aberto?

9

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:

  1. 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.

  2. 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?

  3. 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.

  4. 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.

tinlyx
fonte
"Existe uma maneira razoável de ..." é uma frase realmente prolixa (onde, por exemplo, "Como ..." funciona muito bem) para colocar um título de pergunta, portanto, se você puder pensar em uma maneira melhor de declarar sua pergunta do que o que eu sugeri , faça-o. Além disso, considero que a palavra "software" inclui APIs e bibliotecas de programação, como GDAL, portanto, por essa interpretação, sua reversão da minha edição provavelmente foi desnecessária. No entanto, faça o que deseja se achar que isso esclarece sua pergunta.
blah238
@ blah238 Obrigado pelas edições :). Provavelmente eu era detalhista, mas acho que obviamente existem maneiras de ..., é apenas que elas parecem ser um esforço irracional comparado ao mundo da ESRI / Desktop. Além disso, você está certo de que "software" pode incluir APIs. Eu só quero enfatizar que codificá-lo do zero é uma opção se não houver mais nada que seja razoavelmente fácil de obter álgebra de mapa.
tinlyx

Respostas:

4

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.

blah238
fonte
+1 obrigado. Eu também estava pensando em rasdaman. Eu sei programar, mas não me sinto bem em codificá-lo muitos anos depois da álgebra do mapa.
tinlyx
+1 Em suporte a python + gdal. Fazer álgebra raster com numpy é uma brisa. Além disso, se você estiver trabalhando com rasters baseados em texto (como arquivos .asc), nem precisará do gdal (que pode ser difícil de instalar, dependendo) usando o numpy.loadtxt (pule as linhas do cabeçalho, o espaço como delimitador, etc)
user1269942
Com o rasdaman, você tem a capacidade de usar o WCPS para fazer o processamento no servidor, embora você provavelmente precise fazer alguns scripts para criar a sintaxe do WCPS, pois fazer isso manualmente pode ser um desafio.
NMTOKEN
2

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.

Pau
fonte
11
O OP está perguntando como fazer isso em um contexto da Web, não para uma extensão do ArcGIS.
19413 John Powell
2
@ JohnBarça, a extensão sugerida é para o ArcGIS for Server e, portanto, é usada em um contexto da web.
PolyGeo
@Pau Esqueci de dizer que estou meio constrangido a usar GIS de código aberto. Mas obrigado pela sugestão. É útil.
tinlyx
11
@TingL, você pode começar a procurar alternativas de código-fonte aberto para servidor de imagem arcgis
Pau #:
1

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.

Spacedman
fonte
11
Muito obrigado. Você tem alguma referência sobre como lidar com dados GIS, como GeoTIFF no WebGL?
tinlyx