Suite

(Comment) puis-je écrire des données de chaîne dans un raster avec Python/GDAL ?


En Python, j'ai un tableau NumPy de valeurs de chaîne (catégories de certaines variables) que j'aimerais écrire dans un fichier raster (.tif ou .img) à l'aide de GDAL.

L'impression que j'ai est qu'il n'est pas possible d'écrire une valeur de chaîne dans la cellule de grille d'un fichier raster, ce qui signifie que je devrais créer une table de recherche d'entiers et écrire les entiers dans les cellules de grille à la place. Ensuite, je devrais écrire les données de caractères dans la colonne de la table attributaire du raster afin que vous puissiez savoir quelles valeurs de chaîne les entiers représentent.

Mon raisonnement est-il correct ? Si c'est le cas, j'aimerais connaître le processus de base pour créer une table attributaire de raster à l'aide de Python, GDAL. Je n'ai pas eu beaucoup de succès dans le passé et, si je comprends bien, tous les formats raster GDAL ne sont pas du tout capables d'avoir des tables d'attributs.


Une table d'attributs raster (RAT) est le meilleur moyen d'associer une chaîne à des valeurs de pixels. Les formats avec le meilleur support RAT que je connaisse sont ERDAS Imagine (HFA) et KEA (KEA; http://kealib.org/).

Les étapes que j'utiliserais sont:

  1. Ecrivez un raster avec des valeurs entières (vous pouvez utiliser GDAL pour écrire un tableau NumPy).
  2. Ajoutez un RAT contenant chaque valeur de pixel (vous pouvez utiliser le module Raster GIS dans RSGISLib pour le faire ; http://rsgislib.org/rsgislib_rastergis.html)
  3. Ajoutez une nouvelle colonne avec la chaîne associée à chaque valeur de pixel (vous pouvez utiliser RIOS pour ce faire ; https://bitbucket.org/chchrsc/rios/).

J'ai écrit un script pour faire les étapes 2 et 3, c'est un peu long à publier donc j'ai téléchargé sur https://bitbucket.org/snippets/danclewley/geaX/add-class-name-to-rat


Un jeu de données (représenté par la classe GDALDataset) est un assemblage de canaux raster associés et de certaines informations communes à tous. En particulier, le jeu de données a un concept de taille de raster (en pixels et en lignes) qui s'applique à toutes les bandes. Le jeu de données est également responsable de la transformation de géoréférencement et de la définition du système de coordonnées de toutes les bandes. L'ensemble de données lui-même peut également avoir des métadonnées associées, une liste de paires nom/valeur sous forme de chaîne.

Notez que le jeu de données GDAL et le modèle de données de bande raster sont vaguement basés sur la spécification OpenGIS Grid Coverages.


Le commutateur -outsize peut être utilisé pour définir la taille du fichier de sortie.

Utilisez gdalinfo pour vérifier la taille.

Le commutateur -scale peut être utilisé pour redimensionner les données. Un contrôle explicite des plages d'entrée et de sortie est également disponible. Le commutateur gdalinfo -mm peut être utilisé pour voir les valeurs min/max des pixels.

Séparons notre image en deux avec -srcwin qui fait une copie basée sur l'emplacement des pixels/lignes (xoff yoff xsize ysize). Vous pouvez également utiliser -projwin et définir les coins en coordonnées géoréférencées (ulx uly lrx lry).


Un jeu de la vie basé sur des trames utilisant Python dans QGIS

Le jeu de la vie de Conway [1] est un excellent moyen de démontrer la manipulation des données raster géospatiales. Le “game” commence par une grille (“board”) de cellules binaires, qui représentent des états vivants (peuplés) ou morts (vides). Chaque cellule interagit avec ses huit voisins adjacents pour déterminer son prochain état. A chaque itération du chronomètre de jeu, les règles suivantes sont appliquées [1] :

  • Une cellule vivante avec moins de deux ou plus de trois voisins vivants meurt (sous-population, surpopulation).
  • Une cellule vivante avec deux ou trois voisins vivants continue de vivre.
  • Une cellule morte avec trois voisins vivants devient vivante (reproduction).

Le progiciel de système d'information géographique (SIG) gratuit et à code source ouvert QGIS [2] prend en charge les scripts avec le langage de programmation Python (module pyQGIS), qui permet l'utilisation de puissantes bibliothèques telles que NumPy et GDAL pour traiter les données raster. Numerical Python (NumPy) [3] est un package développé pour Python qui est orienté vers le calcul scientifique avec la prise en charge des tableaux et matrices multidimensionnels. La bibliothèque d'abstraction de données géospatiales (GDAL) [4] est une bibliothèque de traduction des formats de données géospatiales raster et vectorielles disponible en tant que liaison pour Python.

En utilisant NumPy, GDAL et pyQGIS, nous avons implémenté le jeu de la vie, où NumPy manipule les tableaux, GDAL gère la lecture et l'écriture des données raster, et pyQGIS visualise les rasters et leurs changements relatifs. Le code source a été écrit par l'étudiant en Master of Spatial Analysis Richard Wen avec la contribution du Dr Claus Rinner et est disponible sur https://github.com/rwenite/QGIS_RasterArray. Le projet a été inspiré par la visite d'Anita Graser au Ryerson's Lab for Geocomputation en octobre 2014, au cours de laquelle Anita a développé une version vectorielle du jeu de la vie dans QGIS (voir http://anitagraser.com/2014/11 /16/plus-d'expériences-avec-le-jeu-de-la-vie/).

Notre implémentation adopte une approche orientée objet, dans laquelle un objet d'une classe Game of Life est instancié et le plateau de jeu est mis à jour avec la méthode cycle() à l'aide de la console python QGIS. La fonction principale est la manipulation de cellules raster individuelles sur la base d'un algorithme codé - dans ce cas, les règles définies par le jeu de la vie.

Commençons par initialiser et cycler un plateau de jeu en utilisant les paramètres par défaut :

Le plateau de jeu peut être initialisé avec un raster aléatoire, un raster rempli, un raster personnalisé ou à partir d'un fichier raster prédéfini :

Source de la date : Données ouvertes de la ville de Toronto [5]

Parmi les autres fonctionnalités intéressantes, citons la modification de la vitesse d'animation, les cycles de saut et l'application de styles de calque personnalisés :

Cet article se concentre sur les fonctionnalités du programme, tandis que son fonctionnement interne peut être compris à partir des commentaires du code source Python publié sur https://github.com/rwenite/QGIS_RasterArray. Le code a été écrit et testé pour que les commentaires de QGIS 2.6 sur tous les problèmes soient les bienvenus. L'utilisation d'un tableau NumPy pour parcourir les cellules de la grille a été trouvée dans une réponse de l'utilisateur “gene” sur GIS StackExchange [6]. La lecture et le traitement des données raster ont leurs défis. Lorsqu'il s'agit de grandes grilles, il est conseillé de lire les données raster par blocs plutôt que dans leur ensemble, car il peut ne pas y avoir assez de RAM pour stocker un fichier entier à la fois [7].

L'objectif de la mise en œuvre du jeu de la vie avec Python et QGIS est de démontrer certains concepts fondamentaux d'analyse de données raster et de modélisation d'automates cellulaires, qui ont tous deux des applications importantes en géographie et en SIG. Les fonctionnalités et les scripts QGIS existants pour le traitement raster semblent se concentrer davantage sur les opérations d'entrée/sortie de bas niveau que sur les fonctions d'analyse de niveau supérieur. Par exemple, nous n'avons pas trouvé d'opérations raster locales et focales avancées dans le calculateur raster QGIS’. Ainsi, nous envisageons que le code RasterArray pourrait servir de base pour étendre l'analyse raster dans QGIS. Le code sera également utilisé dans un travail de laboratoire à rédiger dans le cadre du programme GEO641 “GIS and Decision Support” dans Ryerson’s BA in Geographic Analysis.


Logiciel utilisant GDAL¶

actinia Une plate-forme de géotraitement basée sur le cloud de mundialis.

Biodivers Un outil pour l'analyse spatiale de la diversité. Utilise GDAL pour l'import/export de données.

Application GPS basée sur la localisation Bluemapia Multi-Map (Google, Microsoft, Open Street Map, NOAA/BSB Charts, raster auto-calibré) pour Windows Mobile.

BRL-CAD Un système de conception assistée par ordinateur de modélisation solide open source.

Cadcorp SIS : Un SIG Windows avec des plugins GDAL et OGR.

CARTO Une plateforme de cartographie cloud pour analyser et visualiser des données géospatiales.

CatchmentSIM Un modèle d'analyse de terrain Windows pour les applications hydrologiques.

Daylon Leveler Un modeleur de terrain/hauteur/bumpmap

Demeter Un autre moteur de terrain basé sur OpenGL quelque peu similaire à VTP.

Eonfusion Analyse et visualisation d'ensembles de données spatiales variables dans le temps intégrés via une véritable fusion de données.

EOxServer Serveur conforme à l'OGC pour les données d'observation de la Terre (EO) prenant en charge WMS et WCS avec des profils d'application EO.

ERDAS ER Viewer Visionneuse d'images pour les très gros fichiers JPEG 2000 et ECW.

Eternix Blaze Application de visualisation géospatiale avancée et SDK.

exacteextract Statistiques zonales raster/vecteur rapides et précises.

Plateforme SIG FalconView basée sur Windows avec des racines dans la planification de missions militaires, désormais disponible sous forme de package gratuit de visualisation et d'analyse SIG.

Objets de données d'entités (FDO) Bibliothèques d'accès aux données spatiales open source.

Fiona Fiona est l'API la plus soignée d'OGR - élégante et élégante à l'extérieur, puissance indomptable à l'intérieur.

flighttrack, logiciel de visualisation et de téléchargement des traces GPS pour Mac.

FME Un package de traduction SIG inclut un plugin GDAL.

GdalToTiles Programme C# (open source) pour créer des tuiles d'images pour Google Earth avec KML Superoverlay.

Logiciel GenGIS pour l'analyse géospatiale des données génétiques.

Geographic Imager DEM / traitement d'images aériennes / satellites Plug-in SIG pour Adobe Photoshop, par Avenza Systems.

GeoDa Introduction à l'analyse de données spatiales (autocorrélation spatiale et régression spatiale)

GeoDjango Un cadre pour la construction d'applications Web géographiques.

GeoDMS Un cadre pour la construction de modèles de calcul spatiaux.

GeoKettle Un outil ETL spatial open source (Extract, Transform and Load).

GeoNotebook, une extension de bloc-notes Jupyter pour la visualisation et l'analyse géospatiales.

GeoServer est un serveur logiciel open source écrit en Java qui permet aux utilisateurs de partager et de modifier des données géospatiales.

Application de cartographie mobile GeoView Pro IOS.

Geoweb3d Un globe virtuel 3D qui fournit une visualisation à la volée et de qualité jeu des données SIG.

GMT (Generic Mapping Tools) une collection open source d'outils pour le traitement et l'affichage des ensembles de données xy et xyz.

GPSeismic Une suite d'applications pour la prospection sismique.

SIG GRASS Un SIG open source raster/vecteur qui utilise GDAL pour l'import et l'export raster/vecteur (via r.in.gdal/r.out.gdal)

gstat un progiciel de modélisation géostatistique.

GuidosToolbox Une application de bureau multi-plateforme pour l'analyse d'objet image générique.

HydroDaVE Explorer Un client Web qui fournit aux utilisateurs une plate-forme de gestion de données facile à utiliser, sécurisée et fiable pour gérer, accéder et analyser efficacement les données environnementales.

IDRISI Une application de bureau Windows SIG et traitement d'images. Utilise GDAL pour importer/exporter/déformer les données raster.

ILWIS Télédétection et GIS Desktop Package.

Image I/O-Ext inclut gdalframework, un framework s'appuyant sur GDAL via les liaisons JAVA générées par SWIG pour prendre en charge un large ensemble de formats de données.

Infraworks, un logiciel BIM pour la conception de projets d'infrastructure, faisant partie de la suite Autodesk.

Plateforme d'intégration et de publication de données Web iShare par Astun Technology.

libLAS Open Source LAS 1.0/1.1 ASPRS LiDAR outils de traduction de données

Loader Un simple chargeur de données géographiques en GML et KML qui nécessite une certaine préparation avant le chargement via ogr2ogr.

Makai Voyager Une plate-forme de visualisation géospatiale 3D/4D avancée.

MapGuide Serveur de cartographie Web open source.

MapInfo Professional Desktop SIG et application de cartographie

MapServer Une application de cartographie Web populaire avec prise en charge de GDAL.

MapTiler Générateur de tuiles pour cartes interactives et superpositions à partir d'images raster et de géodonnées.

Maptitude Mapping Software Desktop SIG et application de cartographie d'entreprise

Contrôle ActiveX open source MapWindow avec fonctionnalité SIG.

Logiciel avancé MicroImages TNT pour l'analyse géospatiale (Windows, Linux, Mac OS X et UNIX)

Micromine Une solution logicielle d'exploitation minière qui utilise GDAL pour lire/écrire divers formats de fichiers géospatiaux.

Package basé sur Mirone Matlab pour l'analyse géospatiale, océanographique et géophysique des grilles

Mygeodata Converter Convertisseur en ligne des formats vectoriels raster GDAL et OGR

NASA Ames Stereo Pipeline Software pour la création de modèles de terrain et d'images ortho à partir d'images stéréo planétaires.

Bibliothèque de globes virtuels multiplateforme NASA WorldWind pour créer rapidement et facilement des visualisations interactives de globes 3D, de cartes et d'informations géographiques.

Application NextGIS Formbuilder Desktop pour la création et la modification de formulaires.

NextGIS Web SIG côté serveur et un cadre pour le stockage, la visualisation et la gestion des autorisations de toutes sortes

Ogr2 GUI Interface utilisateur graphique pour ogr2ogr

Orientation OPALS et traitement des données de balayage laser aéroporté

OpenCPN Un traceur/navigateur concis. Une application graphique embarquée multiplateforme.

OpenEV Un visualiseur graphique basé sur OpenGL/GTK/Python qui utilise exclusivement GDAL pour l'accès raster.

OFGT un ensemble d'utilitaires pour la surveillance polyvalente des forêts dans le cadre de l'Open Foris Initiative Open Foris Initiative.

OpenFLUID une plateforme logicielle de modélisation spatiale de la dynamique des paysages

Moteur de rendu 3D OpenSceneGraph avec les plugins osgdem et osgEarth.

Optique une application de télédétection open source et un cadre de développement, avec un plugin GDAL.

Orfeo Toolbox (OTB) une bibliothèque générale de traitement d'images de télédétection.

OSSIM Un autre environnement de visualisation et d'analyse géospatiale qui utilise GDAL comme l'un des nombreux plugins.

Bibliothèque d'abstraction de données de nuages ​​de points PDAL

pktools outils open source (GPLv3) écrits en C++ pour le traitement d'images de télédétection

PNMapcalc Un calculateur de carte raster avec un langage de script de type C.

Extension de base de données spatiale PostGIS pour PostgreSQL : le chargeur de raster et de nombreuses fonctions SQL raster reposent sur GDAL.

PostgreSQL OGR Foreign Data Wrapper Expose la couche OGR en tant que tables étrangères PostgreSQL.

Système d'inspection Procura Landholding développé pour la UK Homes and Communities Agency. GDAL est utilisé pour vérifier le mappage d'arrière-plan.

PYXIS Une application pour visualiser effectuer des analyses et des modélisations sur les données géolocalisées de l'utilisateur.

QGIS Un SIG de bureau multiplateforme.

QLandkarte GT GT est l'outil ultime pour les amateurs de plein air pour les cartes GPS au format GeoTiff ainsi que le format de carte vectorielle img de Garmin.

R Un environnement logiciel libre pour le calcul statistique et graphique, avec des liaisons à GDAL via le package rgdal.

Rasterix Un utilitaire open source multiplateforme pour traiter les données raster basées sur Qt et GDAL.

SAGA GIS Un système d'information géographique (SIG) gratuit, avec une ‘Application Programming Interface’ (API) spéciale pour le traitement des données géographiques.

Application ScanMagic Win32 pour la visualisation, l'analyse et le traitement des données de télédétection.

Logiciel Scalable Algorithmics (SCALGO) pour construire et effectuer efficacement des calculs sur de très grands modèles de terrain raster et TIN.

Le logiciel Scenomics pour la création de bases de données de terrain utilise GDAL pour la projection et l'import/export de données.

scenProc scenProc : Un outil pour créer des scènes pour Microsoft Flight Simulator et Lockheed Martin Prepar3D en traitant G

SeaView Un progiciel SIG 3D pour les données géophysiques et hydrographiques (sonar à balayage latéral, profileur de sous-fond, magnétomètre, multifaisceaux, etc.

SkylineGlobe La suite d'applications interactives Skyline vous permet de créer, visualiser, interroger et analyser des paysages 3D virtuels personnalisés.

Plate-forme d'application SNAP Sentinel pour le traitement et l'analyse de l'observation de la Terre.

Logiciel de visualisation 3D SpacEyes3D pour les données cartographiques.

Spatial Manager Une suite de produits conçue pour gérer les données spatiales de manière simple, rapide et peu coûteuse. Utilise GDAL pour importer/exporter des données.

Carmenta Engine (anciennement SpatialAce) : un environnement de développement rapide d'applications SIG

TacitView Un progiciel de visualisation et d'exploitation d'images pour le renseignement militaire.

Application de cartographie et d'édition de données SIG TatukGIS Desktop.

Technologies TerraGo Le format de fichier GeoPDF est utilisé pour distribuer et collaborer des données géospatiales et utilise GDAL pour l'import/export de données.

t-rex Serveur de tuiles vectorielles écrit en Rust.

Logiciel SIG 3D interactif en temps réel TerrainView.

Thuban Un visualiseur de données géographiques interactif multi-plateforme.

Logiciel d'analyse de transport TransCAD GIS Desktop

TravTime .NET Application pour visualiser, traiter et analyser les données GPS pour le temps de trajet, la vitesse et la vitesse

VectorWorks La gamme de produits logiciels Vectorworks fournit des solutions de conception professionnelles dans les secteurs de l'AEC, du divertissement et de l'aménagement paysager.

Vertual Terrain Project favorisant des outils pour une construction facile du monde réel sous forme numérique interactive en 3D.


Tutoriel sur le traitement raster

Un didacticiel pratique sur le traitement et la préparation des données raster pour une visualisation ou une analyse ultérieure. Les exercices comprendront :

  • Explorer vos données d'image
  • Traduction de format
  • Optimisation des données pour MapServer/MapGuide?/etc
  • Remise à l'échelle
  • Mosaïque
  • Reprojection
  • Utilisation de fichiers virtuels.

La plupart des exercices seront effectués à l'aide de programmes utilitaires en ligne de commande GDAL, avec un dernier exercice démontrant les scripts Python pour un traitement spécialisé. Il est prévu que l'atelier soit utile à toute personne ayant besoin de préparer des données raster à utiliser dans des packages tels que ​ MapServer, ​ MapGuide, ​ QGIS, ​ GRASS, ​ OSSIM ou des applications SIG et d'imagerie propriétaires.


Objets du système de coordonnées¶

Référence Spatiale ¶

Les objets de référence spatiale sont initialisés sur le srs_input , qui peut être l'un des suivants :

  • OGC Well Known Text (WKT) (une chaîne)
  • Code EPSG (entier ou chaîne)
  • chaîne PROJ
  • Une chaîne abrégée pour les normes bien connues ( 'WGS84' , 'WGS72' , 'NAD27' , 'NAD83' )

Renvoie la valeur du nœud d'attribut de chaîne donné, Aucun si le nœud n'existe pas. Peut également prendre un tuple comme paramètre (cible, enfant), où enfant est l'index de l'attribut dans le WKT. Par exemple:

La valeur de l'attribut pour le nœud cible donné (par exemple, 'PROJCS' ). Le mot clé index spécifie un index du nœud enfant à retourner.

Renvoie le nom de l'autorité pour le nœud cible de chaîne donné.

Renvoie le code d'autorité pour le nœud cible de chaîne donné.

Renvoie un clone de cet objet de référence spatiale.

Cette méthode inspecte le WKT de cette SpatialReference et ajoutera des nœuds d'autorité EPSG où un identifiant EPSG est applicable.

Transforme cette référence spatiale du format ESRI en EPSG

Transforme cette référence spatiale au format ESRI.

Vérifie si la référence spatiale donnée est valide, sinon une exception sera levée.

Importer une référence spatiale à partir du code EPSG.

Importer une référence spatiale à partir de la chaîne PROJ.

import_user_input (entrée_utilisateur)¶ import_wkt (sem

Importer une référence spatiale à partir de WKT.

Importer une référence spatiale à partir de XML.

Renvoie le nom de cette référence spatiale.

Renvoie le SRID de l'autorité de niveau supérieur, ou Aucun s'il n'est pas défini.

Renvoie le nom des unités linéaires.

Renvoie la valeur des unités linéaires.

Renvoie le nom des unités angulaires.

Renvoie la valeur des unités angulaires.

Renvoie un tuple de la valeur des unités et du nom des unités et détermine automatiquement s'il faut renvoyer les unités linéaires ou angulaires.

Renvoie un tuple des paramètres de l'ellipsoïde pour cette référence spatiale : (semi-grand axe, demi-petit axe et aplatissement inverse).

Renvoie le demi-grand axe de l'ellipsoïde pour cette référence spatiale.

Renvoie le demi-petit axe de l'ellipsoïde pour cette référence spatiale.

Renvoie l'aplatissement inverse de l'ellipsoïde pour cette référence spatiale.

Renvoie True si cette référence spatiale est géographique (le nœud racine est GEOGCS ).

Renvoie True si cette référence spatiale est locale (le nœud racine est LOCAL_CS ).

Renvoie True si cette référence spatiale est un système de coordonnées projetées (le nœud racine est PROJCS ).

Renvoie la représentation WKT de cette référence spatiale.

Renvoie la "jolie" représentation du WKT.

Renvoie la représentation PROJ pour cette référence spatiale.

Renvoie la représentation XML de cette référence spatiale.

CoordTransform ¶

Représente une transformation de système de coordonnées. Il est initialisé avec deux SpatialReference , représentant respectivement les systèmes de coordonnées source et cible. Ces objets doivent être utilisés lors de l'exécution répétée de la même transformation de coordonnées sur différentes géométries :


Veuillez installer Rasterio dans un environnement virtuel afin que ses exigences ne perturbent pas le Python de votre système.

Certificats SSL

Les roues Linux sur PyPI sont construites sur CentOS et libcurl s'attend à ce que les certificats soient dans /etc/pki/tls/certs/ca-bundle.crt. Les certificats d'Ubuntu, par exemple, se trouvent dans un emplacement différent. Vous devrez peut-être utiliser la variable d'environnement CURL_CA_BUNDLE pour spécifier l'emplacement des certificats SSL sur votre ordinateur. Sur un système Ubuntu, définissez la variable comme indiqué ci-dessous.

Dépendances

Rasterio a une dépendance à la bibliothèque C : GDAL >= 2.3. GDAL lui-même dépend d'autres bibliothèques fournies par la plupart des principaux systèmes d'exploitation et dépend également des bibliothèques non standard GEOS et PROJ4. Comment répondre à ces exigences sera expliqué ci-dessous.

Les dépendances Python de Rasterio sont répertoriées dans son fichier requirements.txt.

Le développement nécessite également (voir requirements-dev.txt) Cython et d'autres packages.

Distributions binaires

Utilisez si possible des distributions binaires qui fournissent directement ou indirectement GDAL.

Linux

Les distributions Rasterio sont disponibles sur UbuntuGIS et le canal conda-forge d'Anaconda.

De nombreuses roues linux1 sont disponibles sur PyPI.

Les distributions binaires avec les bibliothèques GDAL, GEOS et PROJ4 incluses sont disponibles pour les versions OS X 10.9+. Pour installer, exécutez pip installer rasterio. Ces roues binaires sont préférées par les nouvelles versions de pip.

Si vous ne voulez pas ces roues et souhaitez installer à partir d'une distribution source, exécutez pip install rasterio --no-binary rasterio au lieu.

La bibliothèque GDAL incluse est assez minime, ne fournissant que les pilotes de format fournis avec GDAL et activés par défaut. Pour accéder à plus de formats, vous devez construire à partir d'une distribution source (voir ci-dessous).

Les fenêtres

Les roues binaires pour rasterio et GDAL sont créées par Christoph Gohlke et sont disponibles sur son site Web.

Pour installer rasterio, téléchargez simplement les deux binaires pour votre système (rasterio et GDAL) et exécutez quelque chose comme ceci à partir du dossier de téléchargement, en ajustant votre version Python.

Vous pouvez également installer rasterio avec conda en utilisant le canal conda-forge d'Anaconda.

Répartition des sources

Rasterio est une extension Python C et pour construire, vous aurez besoin d'un compilateur fonctionnel (XCode sur OS X, etc.). Vous aurez également besoin de Numpy préinstallé. Les en-têtes Numpy sont nécessaires pour exécuter le script de configuration rasterio. Numpy doit être installé (via le fichier d'exigences indiqué) avant que rasterio puisse être installé. Voir la configuration Travis de rasterio pour plus de conseils.

Linux

Les commandes suivantes sont adaptées de la configuration Travis-CI de Rasterio.

Adaptez-les si nécessaire à votre système Linux.

Pour un environnement Python basé sur Homebrew, procédez comme suit.

Les fenêtres

Vous pouvez télécharger une distribution binaire de GDAL à partir d'ici. Vous devrez également télécharger les bibliothèques et les en-têtes compilés (fichiers inclus).

Lors de la construction à partir des sources sous Windows, il est important de savoir que setup.py ne peut pas s'appuyer sur gdal-config, qui n'est présent que sur les systèmes UNIX, pour découvrir les emplacements des fichiers d'en-tête et des bibliothèques dont rasterio a besoin pour compiler ses extensions C. Sous Windows, ces chemins doivent être fournis par l'utilisateur. Vous devrez trouver les fichiers d'inclusion et les fichiers de bibliothèque pour gdal et utiliser setup.py comme suit. Vous devrez également spécifier la version de gdal installée via la variable d'environnement GDAL_VERSION.

Remarque : --no-use-pep517 est requis car pip n'a actuellement pas implémenté de moyen pour que les arguments facultatifs soient transmis au backend de construction lors de l'utilisation de PEP 517. Voir ici pour plus de détails.

Alternativement, les variables d'environnement (par exemple, INCLUDE et LINK) utilisées par le compilateur MSVC peuvent être utilisées pour pointer pour inclure des répertoires et des fichiers de bibliothèque.

Nous avons réussi à compiler du code en utilisant la même version de Visual Studio de Microsoft utilisée pour compiler la version ciblée de Python (plus d'informations sur les versions utilisées ici.).

Remarque : la DLL GDAL et le répertoire gdal-data doivent se trouver dans votre PATH Windows, sinon rasterio ne fonctionnera pas.


Installation de GDAL

Comme je l'ai déjà mentionné, GDAL s'exécute sur la ligne de commande, mais n'est qu'un peu plus difficile à installer que l'application commerciale typique.

Sur un Mac, j'ai trouvé que l'approche la plus simple consiste à télécharger l'image disque GDAL 2.1 Complete à partir de KyngChaos (je sais que cela ressemble à un collectif de hackers du milieu des années 80 distribuant des jeux bootleg C64, mais le site est légitime). Ce programme d'installation repose sur la version de Python incluse avec OS X, dans mon cas 2.7.12, pas 3.x.

Sur l'image disque se trouvent deux programmes d'installation : un pour NumPy (exécutez-le en premier) et un pour GDAL Complete (exécutez-le en second). Vous devrez ouvrir les fichiers avec un clic de contrôle car les programmes d'installation proviennent d'un "développeur inconnu". (Ne vous inquiétez pas, ça va toujours. (Je pense.)) Après une dernière étape, vous serez prêt à partir : coupez et collez les deux lignes suivantes (empruntées à MapBox) dans le Terminal (elles vous permettront de exécutez les commandes GDAL simplement en les tapant, sans spécifier de chemin. bash_profile est un fichier caché, alors ne soyez pas surpris si vous ne le trouvez pas.)


Transformation de coordonnées avancée¶

OGRCreateCoordinateTransformation() sous le capot peut déterminer plusieurs opérations de coordonnées candidates se transformant du CRS source au CRS cible. Ces opérations de coordonnées candidates ont chacune leur propre domaine d'utilisation. Lorsque Transform() est invoqué, il déterminera l'opération de coordonnées la plus appropriée en fonction des coordonnées du point à transformer et de la zone d'utilisation. Par exemple, il existe plusieurs dizaines d'opérations de coordonnées possibles pour la transformation NAD27 en WGS84.

Si une boîte englobante de la zone d'intérêt dans laquelle se situent les coordonnées à transformer est connue, il est possible de la spécifier pour restreindre les opérations de coordonnées candidates à considérer :

Pour les cas où une opération de coordonnées particulière doit être utilisée, il est possible de la spécifier comme une chaîne PROJ (opération en une seule étape ou chaîne en plusieurs étapes commençant par +proj=pipeline), une chaîne WKT2 décrivant une CoordinateOperation, ou une urn:ogc :def:coordinateOperation:EPSG::XXXX URN


Voir la vidéo: Read and write raster files with GDAL in Python (Octobre 2021).