Suite

Comment utiliser « contexte » dans rasterio ?


Un autrerasterioquestion de suivi, après les questions sur la lecture et l'écriture des rasters. J'ai réussi à créer et à reprojeter une couche de sortie, mais en essayant d'utiliser le Aperçu module pour construire des pyramides, j'ai trouvé que je ne comprenais pas quelque chose de fondamental : lectxparamètre de la fonction.

aperçu def (ctx, input, build, ls, reconstruction, rééchantillonnage):

Par une recherche Google, j'ai trouvé que ctx signifie "contexte" et qu'il existe un module nomméle contextedansCliquez surbibliothèque utilisée parrasterio. Je suis bloqué ici : une recherche plus poussée montre "contexte" uniquement dans d'autres contextes. Les seuls conseils utiles que j'ai trouvés ici : info.py et test_rio_info.py fichiers dans lerasteriodépôt. Je ne suis pas assez bon pour pouvoir faire de l'ingénierie inversectxformat attendu par leAperçufonction de ces bibliothèques (je ne sais pas si c'est possible).

J'ai donc besoin d'un bon manuel expliquant les contextes tels qu'ils sont utilisés dansrasterio, soit comme réponse, soit comme lien avec un résumé. Comment les produire/obtenir, que signifient-ils exactement (ont-ils une utilité en plus de transmettre des données dans des fonctions ?), quels sont leurs composants (le cas échéant), etc.

EDIT : j'ai trouvé leLe contexteclasse dans leCliquez surbibliothèque dans lecore.pyfichier sur mon disque (/usr/local/lib/python2.7/dist-packages/click/core.pysur ma machine Ubuntu). Je n'ai pas réussi à initialiser explicitement cet objet de classe (je n'ai pas compris les paramètres), mais après avoir lu la réponse de Kersten, je pense que ce n'est pas nécessaire lors de l'utilisation de Rasterio via l'API Python. La documentation de la classe semble concorder :

Le contexte est un objet interne spécial qui détient l'état pertinent pour l'exécution du script à chaque niveau. Il est normalement invisible pour les commandes à moins qu'elles n'acceptent d'y accéder.

Le contexte est utile car il peut faire circuler des objets internes et contrôler des fonctionnalités d'exécution spéciales telles que la lecture de données à partir de variables d'environnement.


La fonctionAperçuprovient de l'interface de ligne de commande rasterios rio.

Ce que vous recherchez, c'est la fonction build_overviews à l'intérieur de la classe d'E/S standard de rasterio.

Comment utiliser ça ? Je n'en ai absolument aucune idée car je n'en ai jamais eu besoin jusqu'à présent.

Heureusement, rasterio comprend une suite de tests étendue qui comprend également une appelée test_overviews.py. Si vous regardez le code à l'intérieur du test, l'utilisation est en fait assez simple. Lorsque vous écrivez un ensemble de données ou ouvrez un ensemble de données en mode lecture/écriture, vous pouvez définir les niveaux de vue d'ensemble que vous souhaitez sous forme de liste.

avec rasterio.open('rasterio-test.tif', 'r+') comme dst : # dst.write() si votre jeu de données n'a pas encore été écrit sur le disque dst.build_overviews([2,4])

Sur mon jeu de données de test de 4800x4800 pixels, cela crée des aperçus avec des pyramides de la taille 2400x2400 ainsi que 1200x1200.

>> gdalinfo rasterio-test.tif… Aperçus : 2400x2400, 1200x1200