Suite

Comment accéder à la valeur NoData raster ?


J'essaie d'accéder par programmation à la valeur NoData dans un jeu de données raster, comme indiqué dans la capture d'écran.

Deux outils qui me viennent à l'esprit pour décrire les propriétés raster ne semblent pas être en mesure de décrire la valeur NoData : Describe et Get Raster Properties (Data Management).

Comment puis-je accéder par programmation (c'est-à-direimprimer) la valeur NoData d'un raster ?


par commentaires - il semble que les propriétés de la bande raster contiennent une propriété sans données en lecture seule.

import arcpy desc=arcpy.Describe('rasterName') print desc.noDataValue

a donné une valeur de -3,40282346639e+38 sur une seule mauvaise grille binaire ESRI que j'avais traînée.

Merci!


J'ai trouvé la solution sur un blog ESRI. L'idée est de convertir le raster en objet raster, puis d'accéder à la valeur NoData spécifique avec.noDataValue.

import arcpy arcpy.env.workspace = r'C:	emp' rasterList = arcpy.ListRasters() pour raster dans rasterList : rasterObj = arcpy.Raster(raster) noData = rasterObj.noDataValue print "NoData Value: %s 
" %pas de données

Je pense que vous pouvez essayer de transformer les valeurs que vous souhaitez masquer en 0 (ou autre valeur nodata) avant de les importer dans le dépliant. Définissez cette valeur sur nodata dans le raster. Enregistrez l'image au format PNG. Ensuite, vous importez dans le dépliant.

Ce n'est probablement pas la meilleure façon de le faire, mais j'ai une solution à ce problème sans avoir à l'enregistrer au préalable au format PNG.

Je suppose que vous avez un tableau NumPy avec quelques valeurs. Pour mon cas, ce tableau est img , c'est un tableau 2D avec sept valeurs distinctes [0, 1, 2, 3, 4, 5, -128] . C'est une carte raster catégorique donc j'utilise des couleurs qualitatives.

Voici comment j'ajoute la couche raster :

Maintenant, la clé ici est (comme indiqué dans la documentation de Folium) que l'argument de la palette de couleurs peut également prendre des valeurs RGBA. Le A de RGBA est l'alpha de la couleur, en termes humains c'est l'opacité. Si vous définissez simplement l'alpha de n'importe quelle couleur sur 0, vous obtiendrez une couleur transparente, ce que vous recherchez.

Mon cas est plus simple puisque j'utilise des couleurs qualitatives, il ne me reste plus qu'à définir le dictionnaire raster_to_coloridx[x] intelligemment. Voici comment je procède :

De toute évidence, -128 est la valeur de remplissage et tandis que d'autres obtiennent 1.0 pour leur alpha, cela obtient 0. Ce que vous pouvez faire est, au lieu de passer un cmap, passez une fonction qui est presque un cmap avec une torsion :

Cette fonction prend une valeur comprise entre 0 et 1 (cela signifie que vous devez d'abord normaliser votre tableau raster), l'arrondit aux décimales décimales, puis trouve la valeur correspondante dans la palette de couleurs viridis et la renvoie sous forme de tableau RGBA. Si la valeur est -128 qui est la valeur de remplissage, renvoie (0,0,0,0) qui est une couleur transparente. Sinon, il soulève et erreur.


Travailler avec des données raster

Le premier, appelé données vectorielles, fait référence à une représentation où les coordonnées sont indexées dans un espace continu avec un vecteur de position. Les coordonnées n'ont pas de dimension, mais sont combinées pour former géométries, tels que des points, des lignes et des polygones. Ces combinaisons ont certaines règles sur la façon dont elles peuvent être combinées en géométries.

Dans le cahier précédent, nous travaillions principalement avec des géométries vectorielles, bien que les fonds de carte que nous utilisions pour construire de meilleures cartes étaient raster représentations de données géographiques. Raster les représentations de données géographiques sont comme des images, elles sont composées de petits polygones identiques (généralement des carrés) avec une valeur unique. Généralement, les jeux de données raster correspondent naturellement à un déployer, où chaque élément est la valeur observée dans une cellule donnée. S'il y a plusieurs valeurs détectées sur chaque site, alors chaque valeur se voit attribuer un bande. En géographie, cette terminologie provient des premiers travaux de photographie aérienne numérique applications, où chaque bande représente une longueur d'onde électromagnétique (telle que l'infrarouge, le rouge, le vert, le bleu, l'ultraviolet, etc.) enregistrée par un capteur aérien. Ceci s'oppose à données vectorielles, qui est né d'applications en infographie.

Ci-dessous, nous discutons de quelques méthodes pour travailler avec des rasters, ainsi que des moyens de combiner des rasters.


Il identifie les lignes et les colonnes du raster qui n'ont que des valeurs NA et supprime celles qui se trouvent en marge du raster. Il calcule ensuite l'étendue à l'aide de extent() .

Transformez le raster en une matrice qui identifie si les valeurs sont NA ou non.

Trouvez les colonnes et les lignes qui ne sont pas complètement remplies par les AN

Trouvez l'étendue du nouveau raster en utilisant les premières et dernières colonnes et lignes qui ne sont pas complètement remplies par les NA. Utilisez crop() pour recadrer le nouveau raster.


Onglet Couche raster

L'onglet Couche raster vous permet de définir les valeurs par défaut suivantes :

  • Les combinaisons de bandes RVB par défaut
  • Les défauts de rendu
  • La couleur NoData et Background

La section Combinaisons de bandes RVB par défaut vous permet de choisir deux types de valeurs par défaut pour l'affichage de vos données raster. Lorsque les données raster sont livrées avec des informations de longueur d'onde définies pour chaque bande, qui existeront souvent avec des produits raster ou peuvent être une propriété d'une mosaïque, les bandes qui doivent être utilisées pour présenter une image en couleur naturelle (ou en couleur infrarouge dans certains cas spécifiques ) sera utilisé. Par exemple, lors de l'affichage d'une scène QuickBird, la bande représentant la longueur d'onde rouge sera utilisée comme bande rouge dans la combinaison RVB, et il en sera de même pour les bandes bleue et verte pour produire une image en couleur naturelle.

Lorsqu'aucune métadonnée de longueur d'onde n'est disponible ou que la propriété n'a pas été définie dans le jeu de données, la combinaison RVB par défaut peut être définie pour une source de données à 3 bandes ou une source de données à 4 bandes ou plus . Ces valeurs par défaut sont utilisées pour tous les types de couches raster que vous visualisez ou affichez, elles ne s'appliquent pas aux images insérées.

Par défaut, ArcGIS utilisera également les métadonnées et les informations statistiques disponibles pour un rendu optimal de vos rasters. Ces paramètres système affectent le rééchantillonnage de l'affichage, le type d'étirement, les paramètres d'étirement et le gamma. Si vous préférez définir votre propre valeur par défaut personnalisée, cochez la case Activer les valeurs par défaut de rendu personnalisé.

Le rééchantillonnage est le processus d'extrapolation des valeurs de cellule à partir de vos données raster pour les afficher dans votre vue. Ils peuvent subir une transformation de système de coordonnées lorsqu'ils sont reprojetés à la volée. Fondamentalement, le rééchantillonnage de vos données raster modifie la façon dont les données raster sont affichées. L'option Afficher le rééchantillonnage vous permet de définir la méthode de rééchantillonnage par défaut utilisée.

Vous pouvez définir un étirement d'histogramme par défaut pour améliorer l'apparence des données raster lorsqu'elles sont affichées. Vous pouvez définir le type d'étirement sur Aucun si vous travaillez régulièrement avec des données raster que vous ne souhaitez pas étirer ou qui ont déjà été étirées et ne nécessitent donc pas de réglage de contraste supplémentaire. Lorsque vous sélectionnez les types d'étirement Écarts standard ou Pourcentage d'écrêtage, vous pouvez également spécifier les valeurs à appliquer. Ces valeurs par défaut peuvent également être modifiées en modifiant les options de la fenêtre d'analyse d'image.

L'arrière-plan d'un jeu de données raster peut être affiché dans une couleur spécifique ou avec transparence. Cela vous permet de masquer ou de mettre en évidence l'arrière-plan. Si vous souhaitez afficher la valeur d'arrière-plan dans une couleur spécifique, cochez la case, puis spécifiez la valeur d'arrière-plan et la couleur. Habituellement, la couleur d'arrière-plan est définie sur transparent afin qu'elle soit masquée.

La couleur NoData vous permet de masquer ou de mettre en évidence ces valeurs. Généralement, la couleur NoData est définie sur transparent afin que les valeurs NoData soient masquées.


Source d'information

Voici une liste des exemples de données qui seront utilisés dans ce workflow. Ces données peuvent varier en profondeurs de bits, généralement 16 bits ou flottantes, signées ou non signées.

Ce flux de travail suppose que le gestionnaire de données utilise des données internes stockées localement.

GTOPO est un ensemble de données d'altitude globale avec une résolution de 30 secondes d'arc (environ 1 km), disponible en téléchargement sur Global 30 Arc-Second Elevation (GTOPO30).

La mission de topographie radar de la navette (SRTM) consiste en des données d'élévation à une échelle quasi mondiale, acquises à partir de la navette spatiale, pour générer la base de données topographique numérique haute résolution la plus complète de la Terre.

Le National Elevation Dataset (NED) a été créé par l'USGS pour les États-Unis. Les données NED sont disponibles à l'échelle nationale à des résolutions de 1 seconde d'arc (environ 30 mètres, NED 30) et 1/3 seconde d'arc (environ 10 mètres, NED 10).

Les données Lidar peuvent provenir de diverses sources. Dans ce cas particulier, les données sont fournies par l'Oregon Metro Regional Land Information System (RLIS) et peut être utilisé pour fournir à la fois un DTM et un DSM.


Comment obtenir la valeur NoData d'un raster ?

J'essaie de faire en sorte qu'ArcMap dessine mon Landsat 8 GeoTiff sans grandes bordures noires NoData désagréables. Google dit que la valeur NoData est 65536 ou peut-être 0, ou peut-être DOUBLE_MAX, ou peut-être d'autres valeurs aléatoires. J'ai essayé de tous les définir dans le champ de valeur Catalog > Properties > NoData, mais rien ne s'est débarrassé de la grande bordure noire.

Comment puis-je faire en sorte qu'ArcMap ouvre le raster et m'indique la valeur NoData afin que je puisse ensuite dire à ArcMap de ne pas le dessiner ?

Edit : je pense avoir compris. ArcMap ne dessinait pas du tout la valeur NoData, mais il y avait une autre valeur de données 𧮬kground' de zéro qu'ArcMap dessinait. En entrant dans Propriétés de la couche > Symbologie et en vous assurant que 𧫿icher la valeur d'arrière-plan :' est activé et que la valeur est 0, les bordures noires ne sont PAS tracées. Je ne sais pas s'il s'agit d'un bogue, car je m'attendrais à ce que cette option ne dessine PAS les valeurs de données 𧮬kground' si elle n'est pas cochée, mais la logique semble inversée.


2 réponses 2

Je ne sais pas exactement pourquoi RasterBand.GetMaximum() et RasterBand.GetMinimum() renvoient None . Peut-être qu'une table attributaire raster doit être calculée avant que GTiff puisse accéder à cette valeur à la volée ?

Vous pouvez effectuer des opérations similaires sur la variable numpy.ndarray barray .

Le problème évident ici est de savoir si la valeur nodata est soit le min, soit le max, auquel cas cela serait renvoyé à votre mécontentement. Landsat a nodata=0.

Vous pouvez résoudre ce problème en créant un tableau masqué et en utilisant les méthodes min et max du tableau masqué.

Pour que .GetMinimum() & .GetMaximum() de gdal renvoie des valeurs, vous devez d'abord calculer des statistiques sur la bande. Sinon, il apparaît comme aucun. Du moins, c'est mon expérience avec l'imagerie radar et les interférogrammes Sentinel1.
Quelques exemples de code.


Les fichiers USGS DEM de 7,5 minutes (grille UTM) auront généralement des régions de données manquantes autour des bords, et celles-ci sont correctement marquées avec une valeur nodata. Les valeurs d'altitude dans les fichiers USGS DEM peuvent être en mètres ou en pieds, et cela sera indiqué par la valeur de retour de GDALRasterBand::GetUnitType() (soit "m" ou "ft").

Notez que les fichiers USGS DEM sont représentés comme une seule grande tuile. Cela peut entraîner des problèmes de suppression du cache si la taille du cache de tuiles GDAL est petite. Cela entraînera également un retard substantiel lors de la lecture du premier pixel car l'ensemble du fichier sera ingéré.

Une partie du code pour implémenter usgsdemdataset.cpp a été dérivé du code VTP de Ben Discoe. Voir le projet Virtual Terrain pour plus d'informations sur VTP.

REMARQUE : mis en œuvre comme gdal/frmts/sdts/usgsdemdataset.cpp.


Étapes de géocodage

Si vous êtes nouveau dans l'environnement ArcGIS, reportez-vous à l'Annexe : Travailler dans l'environnement ArcGIS, qui vous présentera certains aspects clés d'ArcMap qu'il sera utile de comprendre lors de l'utilisation de cette recette de données.

Télécharger les données Sentinel-1

À l'aide de Vertex, téléchargez un granule Sentinel-1 GRD. Notez que vous devrez vous connecter avec vos identifiants Earthdata avant que le téléchargement ne commence. Le téléchargement sera servi comme un .Zip *: français fichier.

Extraire le .tif Fichier avec les données d'intérêt

Dans le fichier zip téléchargé se trouve un répertoire de base avec le nom du granule suivi d'un .EN SÉCURITÉ extension. Cette structure SAFE contient un certain nombre de répertoires et de fichiers, et les images de données sont enregistrées comme géoréférencées .tiff fichiers dans le dossier nommé “mesure.”

L'image qui nous intéresse pour ce tutoriel est le GRD co-polarisé :

s1a-iw-grd-vv-20170819t001029-20170819t001054-017985-01e2e8-001.tiff

Remarque : Si vous utilisez un granule différent de l'échantillon fourni, l'image co-pol peut être étiquetée hh au lieu de vv.

Utilisez votre méthode préférée pour extraire le fichier souhaité du dossier zippé ou reportez-vous aux suggestions ci-dessous.

Décompresser avec Windows 10

Si vous décompressez l'intégralité du dossier avec l'utilitaire zip standard de Windows 10, il y a de fortes chances que vous dépassiez le nombre de caractères autorisés dans un chemin de répertoire Windows. Vous pouvez soit enregistrer le contenu compressé dans un dossier différent, soit simplement extraire le fichier unique comme suit :

    1. Double-cliquez sur le .Zip *: français fichier dans votre Téléchargements dossier, double-cliquez sur le fichier .EN SÉCURITÉ fichier, double-cliquez sur le dossier de mesure et mettez en surbrillance le fichier .tiff souhaité.
    2. Sous le Outils de dossier compressé (qui apparaît lorsque vous naviguez dans un fichier zip), cliquez sur le Extrait bouton et sélectionnez le Extraire vers… option.
      1. Sélectionnez l'un des dossiers récents (qui lancera l'extraction immédiatement) ou utilisez l'option “Choisir l'emplacement” en bas de la boîte de dialogue pour accéder à l'emplacement d'extraction souhaité et cliquez sur le bouton Copie bouton pour extraire le fichier.
      2. Le seul .tiff le fichier sera extrait de la structure des dossiers compressés.

      Vous pouvez également télécharger le gestionnaire de fichiers 7-Zip pour un utilitaire zip plus flexible que l'utilitaire zip Windows standard, surtout si vous avez un système d'exploitation Windows antérieur à Windows 10.

      Projetez votre produit

        1. Ouvrir un nouveau projet ArcMap
        2. Ouvrir l'outil Projeter un raster
          • Vous pouvez trouver cet outil dans le Boîtes à outils du système ArcGIS, sous Outils de gestion des données > Projections et transformations > Raster. Double-cliquez pour ouvrir l'outil.
          • Vous pouvez également saisir “project raster” dans le champ Recherche ArcMap (utilisez Ctrl+F pour ouvrir la fenêtre de recherche ArcGIS si elle n'est pas déjà ouverte). Clique sur le Raster de projet (Data Management) dans les résultats pour ouvrir l'outil.
        3. Entrez les paramètres dans le Raster de projet boîte de dialogue de l'outil.
          1. Sélectionnez votre raster en entrée dans la liste déroulante des couches de projet (si vous l'avez ajouté à votre projet ArcMap) ou cliquez sur l'icône de dossier en regard du champ pour rechercher l'image à projeter. ( une )
          2. Le système de coordonnées d'entrée sera reconnu comme GCS_WGS_1984. ( b )
          3. Entrez le chemin/nom du fichier de sortie ou cliquez sur l'icône du dossier en regard du champ pour accéder au répertoire de destination et saisissez le nom. ( c )

          Remarque : À moins que vous n'enregistriez la sortie dans une géodatabase, vous devez ajouter le .tif extension à la fin du nom de fichier.

              1. Entrer le Système de coordonnées en sortie. ( )
                • Cliquez sur l'icône de projection à côté du champ pour ouvrir le Propriétés de référence spatiale la fenêtre.

              L'échantillon de granule fourni est situé en Louisiane, qui est la zone UTM 15N (EPSG 32615).

              • Si vous connaissez le numéro EPSG de la projection souhaitée, vous pouvez taper ce numéro dans le champ de recherche et appuyer sur Entrer pour localiser la projection.
                • Cliquez sur d'accord pour appliquer la projection en surbrillance.
                    1. Facultatif : saisissez la transformation géographique. ( e )

                    Si une transformation est requise pour projeter les coordonnées source dans le système de coordonnées en sortie, ArcGIS répertorie les transformations disponibles pour les systèmes de coordonnées en entrée et en sortie sélectionnés sous forme de menu déroulant.

                    Si la référence est la même pour les coordonnées d'entrée et de sortie, aucune transformation géographique n'est probablement requise. Pour notre échantillon de granule, nous générons un produit dans WGS_1984_UTM_Zone_15N, et comme l'entrée est également en coordonnées WGS 84, aucune transformation n'est requise.

                        1. Réglez la technique de rééchantillonnage sur BILINAIRE. ( F )
                        2. Si vous le souhaitez, vous pouvez définir la taille de la cellule de sortie dans les directions X et Y. ( g )

                        La taille de la cellule de sortie sera dans les unités de la projection. Par exemple, les projections UTM sont en mètres. Par conséquent, si vous entrez 10 pour X et Y lors de la projection en UTM, vous obtiendrez un produit avec des pixels de 10 mètres sur 10 mètres.

                        Autres options pour rechercher ou sélectionner des projections

                        • Si vous connaissez le nom du système de coordonnées que vous souhaitez utiliser, mais qu'il ne s'affiche pas lorsque vous effectuez une recherche, vous pouvez également naviguer dans le Système de coordonnées projetées dossier manuellement pour trouver la projection souhaitée.
                        • Si vous avez choisi un granule personnalisé pour couvrir une zone d'intérêt spécifique et que vous avez d'autres images qui ont déjà été projetées dans un système de coordonnées approprié pour cette zone, vous pouvez référencer les informations de projection de ces autres images. Ajoutez l'image de référence à votre projet, ouvrez le Raster de projet outil, l'ouvrir le Référence spatiale Fenêtre Propriétés comme à l'étape 4 ci-dessus. Élargir la Couches dossier pour sélectionner la projection de votre image de référence. Notez que si vous avez plusieurs couches dans votre projet ArcMap, toutes les projections présentes seront affichées. Développez une entrée pour déterminer quelle(s) couche(s) utilisent cette projection. Mettez en surbrillance la bonne projection et cliquez sur d'accord pour l'appliquer.
                        • Vous pouvez examiner la référence spatiale de n'importe quel raster dans ArcCatalog pour trouver les informations de projection :
                          • Faites un clic droit sur le calque dans ArcCatalog (ou dans la fenêtre ArcCatalog d'ArcMap), sélectionnez Propriétés, et faites défiler jusqu'à Référence spatiale section. Le système de coordonnées XY répertorie la projection de la couche.
                          • Clique le Modifier… bouton pour ouvrir le Propriétés de référence spatiale. Le système de coordonnées actuel du raster est affiché, y compris le numéro EPSG.

                          Facultatif — Définir aucune valeur de données

                          ArcMap n'inclut pas d'option pour définir les pixels de remplissage ajoutés pendant le processus de projection sur Aucune donnée par défaut, ils reçoivent des valeurs de 0.

                          Si vous ajoutez une image projetée à un projet ArcMap, ces pixels de remplissage de valeur 0 s'afficheront en noir par défaut.

                          De plus, les granules ESA servis par Vertex peuvent également avoir des pixels de valeur 0 ajoutés le long des bords pour masquer les valeurs parasites.

                          Pour définir n'importe quel pixel de valeur 0 sur une valeur NoData, qui peut ensuite être facilement définie pour s'afficher de manière transparente, procédez comme suit :

                            1. Accédez à la sortie .tif fichier dans le Catalogue fenêtre, faites un clic droit sur le nom du fichier et sélectionnez Propriétés.
                            2. Faites défiler jusqu'à Informations raster, et cliquez sur le Éditer bouton à côté de la valeur NoData.
                            3. Mettez en surbrillance la valeur NoData, entrez 0 et cliquez sur d'accord pour fermer l'éditeur NoData. Cliquez sur d'accord pour fermer le Propriétés des données raster la fenêtre.
                            4. Ajoutez la nouvelle couche raster à votre projet ArcMap en la faisant glisser depuis le Catalogue fenêtre sur le Couches la fenêtre. Décochez la case devant l'ancien calque pour que ce nouveau calque soit le seul visible.
                            5. Cliquez avec le bouton droit sur la couche dans la table des matières ArcMap et sélectionnez Propriétés.
                            6. Dans le Symbologie onglet, définissez l'affichage NoData sur Sans couleur
                            7. Cliquez sur d'accord pour fermer le Propriétés de la couche. L'image s'affichera maintenant avec les valeurs 0 transparentes.

                            Remarque : Bien que la plupart des pixels du bord noir aient disparu, il peut en rester quelques-uns. L'ESA a appliqué différentes approches de masquage aux données Sentinel-1 au fil du temps, et ce n'est qu'à partir de la version IPF 2.90 (mars 2018) que des valeurs 0 ont été utilisées pour masquer tous les pixels indésirables le long des bords des images GRD. L'application de la désignation NoData aux pixels de valeur 0 dans les images plus récentes donne une image très nette sans aucun artefact de bord. Vous pouvez déterminer la version IPF utilisée pour traiter votre granule en ouvrant le fichier manifest.safe (inclus dans le dossier de téléchargement de votre produit GRD) avec un éditeur de texte (par exemple, le Bloc-notes) ou un autre logiciel compatible XML, et en recherchant IPF. Référez-vous à la documentation ESA pour plus de détails sur le masquage.

                            Granules GRD projetés avec des valeurs NoData définies sur 0. L'image supérieure (a) a été traitée par l'ESA en utilisant IPF 2.82 et l'image inférieure (b) en utilisant IPF 2.91, qui appliquent différents masques aux pixels de bord.

                            Visualisation des données raster

                            Les données raster peuvent être visualisées en passant des tableaux NumPy à Matplotlib directement ou en second lieu via une méthode dans Rasterio qui accède à Matplotlib pour vous. La visualisation directe avec Matplotlib permet plus de flexibilité - comme la modification de la légende, de l'axe ou des étiquettes - et est plus adaptée à des fins professionnelles. La visualisation via Rasterio nécessite moins de code et peut donner une idée rapide de vos données raster. Nous allons montrer les deux approches. Faisons une visualisation géographique du DSM et du DTM avec Matplotlib.

                            Si vous n'aimez pas la palette de couleurs orange de Matplotlib, il est possible de passer à une autre palette de couleurs.

                            La deuxième approche avec Rasterio ne nécessite qu'une seule ligne de code pour créer un tracé. En créant des sous-parcelles, les figures peuvent être combinées.

                            Rasterio visualise des histogrammes simples en appelant des fonctions de Matplotlib.


                            Voir la vidéo: How To Convert any value to NoData set null ArcGIS 0 to nodata (Octobre 2021).