Ainsi, GDAL a récemment ajouté une nouvelle fonctionnalité qui permet la lecture aléatoire des fichiers de compartiment S3. Je cherche à recadrer des images GDAL à partir de plusieurs tuiles d'une image sans avoir à télécharger le fichier entier. Je n'ai vu que très peu de documentation sur la façon de configurer et d'accéder à un compartiment S3 via GDAL et je suis un peu confus sur la façon de commencer? Est-ce que quelqu'un aurait la gentillesse de fournir un exemple / tutoriel extrêmement court sur la façon dont on procéderait pour configurer le système de fichiers virtuel pour GDAL afin d'atteindre cet objectif? Points bonus si votre solution permet de l'écrire via Python!
Pour clarifier: nous l'avons déjà fait en Python. Le problème avec Python est que vous devez télécharger l'image entière pour l'utiliser avec. La dernière version de GDAL prend en charge le montage du seau S3 de sorte que si nous devons dire un recadrage une petite partie de l'image, nous pouvons opérer directement sur cette plus petite partie. Hélas, comme la fonctionnalité n'est sortie que sur la branche stable en janvier, je n'ai trouvé aucune documentation à ce sujet. Ainsi, la solution doit utiliser le système VSI3 dans la dernière version de GDAL ou autrement utiliser intelligemment le système pour empêcher l'utilisateur d'avoir à télécharger l'image entière sur un lecteur EBS pour l'utiliser.
C'est-à-dire que la prime sera attribuée à la réponse qui utilise les API VSI présentes dans les dernières versions de GDAL afin que le fichier entier n'ait pas besoin d'être lu en mémoire ou sur disque. De plus, nous, les compartiments que nous utilisons, ne sommes pas toujours publics, donc bon nombre des astuces HTTP publiées ne fonctionneront pas dans bon nombre de nos situations.
la source
Réponses:
J'ai découvert que lorsque quelque chose n'est pas particulièrement bien documenté dans GDAL, il peut être utile de parcourir leurs tests.
Le
/vsis3
module de test contient quelques exemples simples, bien qu'il ne contienne aucun exemple de lecture de morceaux.J'ai bricolé le code ci-dessous basé sur le module de test, mais je ne peux pas tester car GDAL / vsis3 nécessite des informations d'identification et je n'ai pas de compte AWS.
la source
Depuis
/vsis3/
est implémenté dans GDAL, vous pouvez également utiliserrasterio
pour lire les ensembles de données Windows de S3. Cela nécessite la configuration de vos informations d'identification pour boto ou l'utilisation du gestionnaire de session rasterios AWS .Voir aussi rasterios windowed -rw et VSI docs.
la source
Essayez d'utiliser un fichier XML pour stocker les informations WMS dans, plus de détails sont dans la documentation GDAL WMS .
Voici un exemple de fichier XML WMS pour récupérer des données de l'API élévation de Mapzen:
Vous pouvez ensuite découper dans un cadre de sélection comme suit:
la source
Je ne connais pas grand-chose aux compartiments S3, mais il semble que ce soit un lecteur de stockage cloud avec authentification utilisant les services REST http. c'est-à-dire pourrait être utilisé comme un point de montage ordinaire, avec un uri associé.
Si vous cherchez à recadrer des parties d'images / raster, le fichier doit être dans un format approprié.
Jetez un œil à la spécification TMS http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification
(Peut-être que netCDF pourrait également faire l'affaire.)
GDAL lit et écrit également des formats TMS. Fondamentalement, ce n'est qu'une structure de répertoires standard avec certains fichiers de métadonnées.
Maintenant, l'astuce consiste à créer à la volée l'URL avec les paramètres d'étendue géographique via le pilote TMS.
Jetez un œil à la documentation du pilote OpenLayers TMS: http://dev.openlayers.org/docs/files/OpenLayers/Layer/TMS-js.html Pour voir comment il gère les requêtes en fonction de l'emplacement, du zoom et de l'étendue.
Bien sûr, cela peut être fait en Python. Vous devez d'abord créer l'URI "point de montage" (ou chemin) approprié avec viscurl (selon la documentation), puis, une fois monté, accédez à la tuile spécifique conformément à la spécification TMS (qui est une extension du chemin) .
la source