Vous effectuez une algèbre de carte raster dans un SIG Web open source?

9

L'algèbre cartographique pour raster est facile avec ArcGIS Raster Calculator (ou QGIS). J'avais pensé que ce serait facile avec les serveurs Web GIS tels que GeoServer et MapServer plus OpenLayers etc. Ce que je veux réaliser est de faire des choses simples comme diviser deux images et générer une troisième image de rapport à afficher sur la page Web. J'ai passé des semaines à trouver une solution et cela s'avère assez difficile (pour moi).

J'ai essayé plusieurs choses, notamment:

  1. Raster PostGIS. Je pense que l'algèbre raster n'est pas un problème ici.

    Mais le raster PostGIS est assez difficile à charger dans GeoServer. De nombreuses questions sont posées à plusieurs reprises sur la façon de charger pgraster dans GeoServer. Voir par exemple Comment importer GeoTIFF via postGIS dans GeoServer? ? , /gis/86006/publish-rasters-stored-in-postgresql-with-geoserver ?, entre autres. Pas une seule réponse ici dans GIS.SE ou le site officiel de GeoServer ne donne une liste complète des étapes qui peuvent être suivies pour fonctionner. Le chargement de pgraster dans MapServer a rapporté un succès, mais avec des performances très lentes. Les deux semblent nécessiter un certain tuilage, et une commande à une ligne pour importer un raster sur l'un ou l'autre serveur semble être hors de question.

  2. GeoTIFF

    GeoTIFF est facile à charger dans GeoServer et MapServer. Mais que pouvons-nous en faire? Sans PostGIS comme SQL, je me suis tourné vers et j'ai brièvement recherché en utilisant WCS pour faire l'algèbre de la carte, mais je n'ai pas trouvé grand-chose. WCS est-il un chemin viable pour cela avec les serveurs actuels?

  3. Programmer à la dure

    Utilisez en quelque sorte AJAX pour appeler une page PHP ou écrire un WPS en utilisant GeoServer pour importer des images dans PostGIS, faire l'algèbre de la carte et convertir ensuite le résultat pgraster dans un format (par exemple GeoTIFF) qui peut être facilement chargé et affiché dans GeoServer / MapServer.

  4. Bien sûr, on peut écrire du code pour lire directement GeoTIFF et faire l'algèbre cartographique sans prise en charge SIG.

Rien de ce qui précède ne me semble facile ou raisonnable compte tenu de la facilité avec laquelle la même algèbre peut être effectuée dans Desktop SIG.

Je me demandais si quelqu'un avait une expérience de l'algèbre cartographique dans un environnement SIG Web et pouvait suggérer un chemin viable?

Je suis intéressé par les solutions Open Source (pour des raisons politiques au sein de mon organisation.) Je suis conscient qu'ArcGIS Server peut appeler le code python d'ArcGIS, mais nous n'avons pas la licence et l'environnement n'est pas favorable pour en acquérir une.

tinlyx
la source
"Existe-t-il un moyen raisonnable de ..." est une phrase très verbeuse (où, par exemple, "Comment ..." fonctionne très bien) pour mettre un titre de question, donc si vous pouvez penser à une meilleure façon de dire votre question que ce que j'avais suggéré s'il vous plaît faites-le. De plus, je considère que le mot "logiciel" inclut les API de programmation et les bibliothèques, telles que GDAL, donc d'après cette interprétation, votre réversion de mon montage n'était probablement pas nécessaire. Cependant, faites ce que vous souhaitez si vous pensez que cela clarifie votre question.
blah238
@ blah238 Merci pour les modifications :). J'étais probablement bavard, mais je pense évidemment qu'il existe des moyens de ..., c'est juste qu'ils semblent être un effort déraisonnable par rapport au monde ESRI / Desktop. De plus, vous avez raison de dire que le "logiciel" peut inclure des API. Je veux juste souligner que le codage à partir de zéro est une option s'il n'y a rien d'autre qui soit raisonnablement facile à réaliser l'algèbre de la carte.
tinlyx

Réponses:

4

En utilisant uniquement des logiciels open source, vous devrez presque certainement faire de la programmation vous-même. GDAL est la bibliothèque d'E / S raster open source de facto , donc vous l'utiliserez probablement ou l'un de ses nombreux wrappers. Vous pouvez utiliser Python (par exemple rasterio + numpy / scipy ) ou node.js, par exemple node-gdal (mais attention, il est actuellement synchrone / bloquant). Quant à l'implémenter en tant que service Web, je ne sais pas quelle serait la meilleure approche, mais il y a une question connexe ici: comparer différents serveurs SIG open source?

Si la programmation n'est pas votre truc, vous pouvez jeter un œil à FME Server . C'est un produit commercial mais probablement beaucoup moins cher qu'ArcGIS Server, et il a toutes sortes de transformateurs de calcul raster , donc je serais très surpris s'ils ne pouvaient pas accomplir ce que vous devez faire. Vous n'auriez pas besoin de charger les rasters dans une base de données car il peut lire à partir de n'importe quel format de fichier raster .

La partie serveur vous permettra d'exécuter les transformations (espaces de travail FME) sur un serveur et d'utiliser une API, par exemple l' API REST du serveur FME , pour initier ces transformations et accéder aux résultats.

Le principal avantage est que vous n'auriez pas besoin de faire beaucoup de programmation pour mettre les services en place, juste un peu de codage frontal pour fonctionner avec l'API.

blah238
la source
+1 merci. Je pensais aussi à rasdaman. Je peux programmer, mais je ne me sens pas bien de le coder tant d'années après l'algèbre de la carte.
tinlyx
+1 À l'appui de python + gdal. Faire de l'algèbre raster avec numpy est un jeu d'enfant. De plus, si vous travaillez avec des rasters basés sur du texte (comme les fichiers .asc), vous n'avez même pas besoin de gdal (ce qui peut être difficile à installer, selon) en utilisant numpy.loadtxt (sauter les lignes d'en-tête, espace comme délimiteur, etc)
user1269942
Avec rasdaman, vous avez la possibilité d'utiliser WCPS pour effectuer le traitement sur le serveur, bien que vous ayez probablement besoin de faire des scripts pour créer la syntaxe WCPS, car le faire à la main peut être difficile.
nmtoken du
2

Ce que vous cherchez, c'est un serveur d'images. ArcGIS for Server a cette extension:

ArcGIS Image Extension for Server

je ne connais aucun équivalent open source.

Pau
la source
1
OP demande comment procéder dans un contexte Web, pas pour une extension ArcGIS.
John Powell
2
@ JohnBarça, l'extension suggérée concerne ArcGIS for Server et est donc utilisée dans un contexte Web.
PolyGeo
@Pau J'ai oublié de dire que je suis un peu contraint d'utiliser le SIG open source. Mais merci pour la suggestion. C'est utile.
tinlyx
1
@TingL vous pouvez commencer à chercher des alternatives open source pour le serveur d'images arcgis
Pau
1

Vous pouvez probablement le faire dans le navigateur avec WebGL:

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

mais cela nécessiterait une programmation et un navigateur compatible WebGL. Mais cela devrait être rapide car il utiliserait le GPU dans la plupart des cas.

Spacedman
la source
1
Merci beaucoup. Avez-vous des références sur la façon de gérer les données SIG telles que GeoTIFF dans WebGL?
tinlyx