Realización de álgebra de mapas ráster en SIG web de código abierto

9

El álgebra de mapas para ráster es fácil con ArcGIS Raster Calculator (o QGIS). Pensé que esto sería fácil con servidores SIG web como GeoServer y MapServer más OpenLayers, etc. también. Lo que quiero lograr es hacer cosas simples como dividir dos imágenes y generar una tercera imagen de proporción que se mostrará en la página web. Pasé semanas para encontrar una solución y resulta bastante difícil (para mí).

He intentado algunas cosas, incluyendo:

  1. Ráster PostGIS. Creo que el álgebra raster no es un problema aquí.

    Pero el ráster PostGIS es bastante difícil de cargar en GeoServer. Hay muchas preguntas frecuentes sobre cómo cargar pgraster en GeoServer. Consulte, por ejemplo, ¿Cómo importar GeoTIFF a través de postGIS en GeoServer? ? , /gis/86006/publish-rasters-stored-in-postgresql-with-geoserver ?, entre otros. Ni una sola respuesta aquí en GIS.SE o en el sitio web oficial de GeoServer ofrece una lista completa de los pasos que se pueden seguir para trabajar. Cargar pgraster en MapServer ha informado de un éxito, pero con un rendimiento muy lento. Ambos parecen requerir algo de mosaico, y un comando de una línea para importar un ráster a cualquiera de los servidores parece estar fuera de discusión.

  2. GeoTIFF

    GeoTIFF es fácil de cargar en GeoServer y MapServer. ¿Pero qué podemos hacer con él? Sin un PostGIS como SQL, recurrí y busqué brevemente usando WCS para hacer álgebra de mapas, pero no encontré mucho. ¿Es WCS una ruta viable para esto con los servidores actuales?

  3. Programarlo de la manera difícil

    De alguna manera, use AJAX para llamar a una página PHP o escriba un WPS usando GeoServer para importar imágenes a PostGIS, haciendo el álgebra de mapas y luego convirtiendo el grabador de resultados a un formato (por ejemplo, GeoTIFF) que se pueda cargar y mostrar fácilmente en GeoServer / MapServer.

  4. Por supuesto, uno puede escribir código para leer GeoTIFF directamente y hacer el álgebra de mapas sin soporte SIG.

Nada de lo anterior me parece fácil o razonable teniendo en cuenta la facilidad con la que se puede hacer el mismo álgebra en Desktop GIS.

Me preguntaba si alguien ha tenido alguna experiencia haciendo Álgebra de mapas en un entorno web GIS, y ¿puede sugerir una ruta viable?

Estoy interesado en las soluciones de código abierto (por razones políticas dentro de mi organización). Soy consciente de que ArcGIS Server puede llamar al código python de ArcGIS, pero no tenemos la licencia y el entorno aquí no es favorable para adquirir una.

tinlyx
fuente
"¿Hay una manera razonable de ...?" Es una frase muy prolija (donde, por ejemplo, "Cómo ..." funciona bien) para poner un título de pregunta, así que si se te ocurre una mejor manera de decir su pregunta que lo que había sugerido por favor hágalo. Además, considero que la palabra "software" incluye API y bibliotecas de programación, como GDAL, por lo que, según esa interpretación, la reversión de mi edición probablemente fue innecesaria. Sin embargo, haga lo que desee si cree que aclara su pregunta.
blah238
@ blah238 Gracias por las ediciones :). Probablemente era detallado, pero creo que obviamente hay maneras de ..., es solo que parecen ser un esfuerzo irrazonable en comparación con el mundo de ESRI / Desktop. Además, tiene razón en que el "software" puede incluir API. Solo quiero enfatizar que codificarlo desde cero es una opción si no hay nada más que sea razonablemente fácil de lograr álgebra de mapas.
tinlyx

Respuestas:

4

Usando solo software de código abierto, casi seguramente necesitará hacer algo de programación usted mismo. GDAL es la biblioteca de E / S ráster de código abierto de facto , por lo que probablemente la usará a usted o a uno de sus muchos contenedores. Puede usar Python (por ejemplo, rasterio + numpy / scipy ) o node.js, por ejemplo, node-gdal (aunque tenga cuidado, actualmente está sincronizado / bloqueando). En cuanto a implementarlo realmente como un servicio web, no estoy seguro de cuál sería el mejor enfoque, pero aquí hay una pregunta relacionada: ¿ Comparar diferentes servidores SIG de código abierto?

Si la programación no es lo tuyo, puedes echar un vistazo a FME Server . Es un producto comercial pero probablemente sustancialmente más barato que ArcGIS Server, y tiene todo tipo de transformadores de cálculo de trama , por lo que me sorprendería mucho si no pudieran lograr lo que necesita hacer. No necesitaría cargar los rásteres en una base de datos, ya que puede leer casi cualquier formato de archivo ráster .

La parte del servidor le permitiría ejecutar las transformaciones (espacios de trabajo FME) en un servidor y utilizar una API, por ejemplo, la API REST del servidor FME , para iniciar esas transformaciones y acceder a los resultados.

El principal beneficio es que no necesitaría hacer mucha programación para poner en funcionamiento los servicios, solo una pequeña codificación frontal para trabajar con la API.

blah238
fuente
+1 gracias. También estaba pensando en rasdaman. Puedo programar, pero no me siento bien codificándolo muchos años después del álgebra de mapas.
tinlyx
+1 En apoyo de python + gdal. Hacer álgebra rasterizada con numpy es muy fácil. Además, si está trabajando con rásteres basados ​​en texto (como archivos .asc), entonces ni siquiera necesita gdal (que puede ser complicado instalar, dependiendo) usando numpy.loadtxt (omita las filas de encabezado, el espacio como delimitador, etc)
user1269942
Con rasdaman tienes la capacidad de usar WCPS para hacer el procesamiento en el servidor, aunque probablemente necesites hacer algunos scripts para crear la sintaxis de WCPS, ya que hacerlo a mano puede ser un desafío.
nmtoken
2

Lo que está buscando es un servidor de imágenes. ArcGIS for Server tiene esta extensión:

ArcGIS Image Extension para servidor

No conozco ningún equivalente de código abierto.

Pau
fuente
1
OP pregunta cómo hacer esto en un contexto web, no para una extensión ArcGIS.
John Powell el
2
@ JohnBarça, la extensión sugerida es ArcGIS for Server y, por lo tanto, se utiliza en un contexto web.
PolyGeo
@Pau Olvidé decir que estoy un poco obligado a usar SIG de código abierto. Pero gracias por la sugerencia. Es útil.
tinlyx
1
@TingL puede comenzar a buscar alternativas de código abierto para el servidor de imágenes arcgis
Pau
1

Probablemente pueda hacer esto en el navegador con WebGL:

http://www.html5rocks.com/en/tutorials/webgl/webgl_fundamentals/

pero requeriría algo de programación y un navegador compatible con WebGL. Pero debería ser rápido ya que usaría la GPU en la mayoría de los casos.

Hombre espacial
fuente
1
Muchas gracias. ¿Tiene alguna referencia sobre cómo manejar datos SIG como GeoTIFF en WebGL?
tinlyx