


tutoriel python gdal : lecture de données raster avec gdal
GDAL prend en charge nativement plus de 100 types de données raster, couvrant tous les formats de données SIG et RS courants, y compris
grilles ArcInfo, raster ArcSDE, Imagine, Idrisi, ENVI, GRASS, GeoTIFF
HDF4, HDF5
USGS DOQ, USGS DEM
ECW, MrSID
TIFF, JPEG, JPEG2000, PNG, GIF, BMP
Support complet pour le liste, veuillez vous référer à http://www.gdal.org/formats_list.html
Importer la bibliothèque de support GDAL
Ancienne version (avant 1.5) : importer gdal, gdalconst
Nouvelle version (1.6 et versions ultérieures) : depuis osgeo import gdal, gdalconst
Il est préférable d'importer à la fois gdal et gdalconst. Les constantes de gdalconst sont préfixées pour minimiser les conflits avec d'autres modules. Vous pouvez donc importer directement gdalconst comme ceci : depuis osgeo.gdalconst import *
Le pilote de données GDAL, similaire au pilote de données OGR, doit d'abord créer un certain type de pilote de données, puis créer l'ensemble de données raster correspondant.
Enregistrez tous les pilotes de données à la fois, mais ne pouvez que lire et non écrire : gdal.AllRegister()
Enregistrez un certain type de pilote de données séparément, afin qu'il puisse être lu et écrit, oui Créer un nouveau jeu de données :
driver = gdal.GetDriverByName('HFA')
driver.Register()
Ouvrir un jeu de données raster existant :
fn = 'aster.img'
ds = gdal.Open(fn, GA_ReadOnly)
si ds est Aucun :
imprimer 'Impossible d'ouvrir ' fn
sys.exit(1)
Lire le nombre de pixels dans la direction x, le nombre de pixels dans la direction y et le nombre de canaux de l'ensemble de données raster
cols = ds.RasterXSize
rows = ds.RasterYSize
bands = ds.RasterCount
Notez qu'il n'y a pas de crochets après, car ce sont des propriétés (propriétés) non méthodes (méthodes)
Lire Obtenir des informations de référence de coordonnées géographiques (informations de géoréférence)
GeoTransform est une liste qui stocke les informations de coordonnées géographiques de l'ensemble de données raster
adfGeoTransform[0] /* coin supérieur gauche x coin supérieur gauche x coordonnée* /
adfGeoTransform[1] /* w--e résolution en pixels résolution en pixels dans la direction est-ouest*/
adfGeoTransform[2] /* rotation, 0 si l'image est "nord vers le haut" Si le nord est orienté vers le haut, l'angle de rotation de la carte*/
adfGeoTransform[3] /* en haut à gauche y y coordonnée du coin supérieur gauche*/
adfGeoTransform[4] /* rotation, 0 si l'image est "nord vers le haut" Si le nord est vers le haut, l'angle de rotation de la carte*/
adfGeoTransform[5] /* n-s résolution en pixels résolution en pixels dans la direction nord-sud*/
Notez le jeu de données raster. Les coordonnées sont généralement basées sur le coin supérieur gauche.
L'exemple suivant consiste à prendre le Geotransform d'un ensemble de données raster sous forme de liste, puis à lire les données qu'il contient
geotransform = ds.GetGeoTransform()
originX = géotransformation [0]
originY = géotransform[3] originY = géotransform[3]
pixelWidth = géotransform[1]
pixelHeight = géotransformation[5]
Calculez la position relative (décalage de pixels) du pixel correspondant à une certaine coordonnée, c'est-à-dire la position relative de la coordonnée et du pixel dans le coin supérieur gauche, calculée en fonction du nombre de pixels. La formule de calcul est la suivante. suit :
xOffset = int((x – originX) / pixelWidth)
yOffset = int((y – originY) / pixelHeight)
Lecture de la valeur d'un certain le pixel nécessite deux étapes
Lire d'abord Obtenir une bande : GetRasterBand(
puis utiliser ReadAsArray( band = ds.GetRasterBand(1) data = band.ReadAsArray(xOffset, yOffset, 1, 1) Si vous souhaitez lire un texte entier bande à une image temporelle, puis définissez le décalage sur 0 et la taille sur la taille de l'image entière, par exemple : data = band.ReadAsArray(0, 0, cols, rows) Mais veuillez noter que pour lire la valeur d'un certain pixel à partir de données, vous devez utiliser data[yoff, xoff]. Attention à ne pas le faire à l'envers. Une matrice en mathématiques c’est [row,col], mais ici c’est tout le contraire ! Ici, row correspond à l'axe y et col correspond à l'axe x. Faites attention à libérer de la mémoire lorsque cela est approprié, comme band = None ou dataset = None. Surtout lorsque l'image est très grande Comment lire les données raster plus efficacement ? Évidemment, lire un par un est très inefficace. Ce n'est pas une bonne idée de regrouper l'intégralité du jeu de données raster dans un tableau à deux dimensions, car cela prend encore beaucoup de mémoire. Une meilleure approche consiste à accéder aux données par blocs et à mettre uniquement le bloc dont vous avez besoin en mémoire. L'exemple de code de cette semaine comporte un module utils capable de lire la taille du bloc. Par exemple : import utils blockSize = utils.GetBlockSize(band) xBlockSize = blockSize[0] yBlockSize = taille de bloc[1] Tile (carrelé), c'est-à-dire que les données raster sont stockées en blocs. Certains formats, comme GeoTiff, ne sont pas carrelés et chaque ligne est un bloc. Le format Erdas imagine est carrelé de 64x64 pixels. Si une ligne est un bloc, alors la lecture par ligne permet d'économiser davantage de ressources. S'il s'agit d'une structure de données en mosaïque, définir la valeur du paramètre ReadAsArray() afin qu'il ne puisse lire qu'un seul bloc à la fois est la méthode la plus efficace. Par exemple : lignes = 13, cols = 11, xBSize = 5, yBSize = 5 pour i dans la plage (0, lignes, yBSize) : si je yBSize < lignes : numRows = yBSize else : numRows = lignes – i pour j dans la plage (0, cols, xBSize) : si j xBSize < cols : numCols = xBSize sinon : numCols = colsnumCols = col s – j data = band.ReadAsArray(j, i, numCols, numRows) Ce code est universel et peut être utilisé de temps en temps. Ce qui suit présente quelques compétences en matière de traitement de tableaux bidimensionnels Deux bibliothèques sont utilisées ici, Numeric et numpy. Le numérique est plus ancien et FWTools l'utilise. Si vous l'installez et le configurez vous-même, vous devez utiliser le numpy plus puissant. Conversion de type de données : data = band.ReadAsArray(j, i, nCols, nRows) data = data.astype(Numeric.Float) # Numeric data = data.astype(numpy.float) # numpy Ou écrivez simplement une phrase simple data = band.ReadAsArray(j, i, nCols, nRows).astype (Numeric.Float) Masque C'est la fonction des bibliothèques numériques et numpy. Il entre un tableau et une condition et génère un tableau binaire. Par exemple mask = Numeric.greater(data, 0)mask = Numeric.greater(data, 0) >>> , 6, 0, 2]) >>> imprimer un [0 4 6 0 2] >>> . Greater(a, 0) >>> masque d'impression [0 1 1 0 1] Somme du tableau > >> a = Numeric.array([0, 4, 6, 0, 2]) >>> imprimer a>> imprimer un [ 0 4 6 0 2] >>> print Numeric.sum(a) 12 S'il s'agit d'un tableau à deux dimensions, alors la somme sera renvoie un tableau unidimensionnel >>> b = Numeric.array([a, [5, 10, 0, 3, 0]]) >> > imprimer b [[ 0 4 6 0 2] [ 5 10 0 3 0]] >>> )> >> print Numeric.sum(b) [ 5 14 6 3 2] Donc, la somme des tableaux bidimensionnels est comme ça >> ;> print Numeric.sum(Numeric.sum(b)) 30 Voici une petite astuce Pour compter le nombre de pixels supérieur à 0, vous pouvez. utiliser le masque et la somme ensemble. Fonction >>> imprimer un [0 4 6 0 2] >>> supérieur(a, 0) >>> masque d'impression [0 1 1 0 1] >>> masque) 3 Ce qui précède est le tutoriel python gdal : utiliser gdal pour lire des données raster. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn). !

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Ce tutoriel montre comment utiliser Python pour traiter le concept statistique de la loi de Zipf et démontre l'efficacité de la lecture et du tri de Python de gros fichiers texte lors du traitement de la loi. Vous vous demandez peut-être ce que signifie le terme distribution ZIPF. Pour comprendre ce terme, nous devons d'abord définir la loi de Zipf. Ne vous inquiétez pas, je vais essayer de simplifier les instructions. La loi de Zipf La loi de Zipf signifie simplement: dans un grand corpus en langage naturel, les mots les plus fréquents apparaissent environ deux fois plus fréquemment que les deuxième mots fréquents, trois fois comme les troisième mots fréquents, quatre fois comme quatrième mots fréquents, etc. Regardons un exemple. Si vous regardez le corpus brun en anglais américain, vous remarquerez que le mot le plus fréquent est "th

Cet article explique comment utiliser la belle soupe, une bibliothèque Python, pour analyser HTML. Il détaille des méthodes courantes comme find (), find_all (), select () et get_text () pour l'extraction des données, la gestion de diverses structures et erreurs HTML et alternatives (Sel

Traiter avec des images bruyantes est un problème courant, en particulier avec des photos de téléphones portables ou de caméras basse résolution. Ce tutoriel explore les techniques de filtrage d'images dans Python à l'aide d'OpenCV pour résoudre ce problème. Filtrage d'image: un outil puissant Filtre d'image

Les fichiers PDF sont populaires pour leur compatibilité multiplateforme, avec du contenu et de la mise en page cohérents sur les systèmes d'exploitation, les appareils de lecture et les logiciels. Cependant, contrairement aux fichiers de texte brut de traitement Python, les fichiers PDF sont des fichiers binaires avec des structures plus complexes et contiennent des éléments tels que des polices, des couleurs et des images. Heureusement, il n'est pas difficile de traiter les fichiers PDF avec les modules externes de Python. Cet article utilisera le module PYPDF2 pour montrer comment ouvrir un fichier PDF, imprimer une page et extraire du texte. Pour la création et l'édition des fichiers PDF, veuillez vous référer à un autre tutoriel de moi. Préparation Le noyau réside dans l'utilisation du module externe PYPDF2. Tout d'abord, l'installez en utilisant PIP: pip is p

Ce tutoriel montre comment tirer parti de la mise en cache Redis pour augmenter les performances des applications Python, en particulier dans un cadre Django. Nous couvrirons l'installation redis, la configuration de Django et les comparaisons de performances pour mettre en évidence le bien

Cet article compare TensorFlow et Pytorch pour l'apprentissage en profondeur. Il détaille les étapes impliquées: préparation des données, construction de modèles, formation, évaluation et déploiement. Différences clés entre les cadres, en particulier en ce qui concerne le raisin informatique

Python, un favori pour la science et le traitement des données, propose un écosystème riche pour l'informatique haute performance. Cependant, la programmation parallèle dans Python présente des défis uniques. Ce tutoriel explore ces défis, en se concentrant sur l'interprète mondial

Ce didacticiel montre la création d'une structure de données de pipeline personnalisée dans Python 3, en tirant parti des classes et de la surcharge de l'opérateur pour une fonctionnalité améliorée. La flexibilité du pipeline réside dans sa capacité à appliquer une série de fonctions à un ensemble de données, GE
