Comment étiqueter les cellules raster dans QGIS?

10

J'essaie d'afficher un petit fichier raster de résolution dans l'outil QGIS Print Manager. Je voudrais montrer une petite étiquette à chaque valeur de la cellule (position - environ milieu de chaque cellule).

Comment je peux le faire? Existe-t-il un plugin qui peut m'aider à accomplir cette tâche?

Mon idée est d'utiliser gdal2xyz, de charger un tel fichier à l'aide du plugin CSV puis de l'enregistrer en tant que fichier vectoriel. Malheureusement, c'est beaucoup de travail, car j'ai de nombreux fichiers raster.

Une autre idée est d'utiliser gdal2xyz.py, puis ogr2ogr pour l'enregistrer en tant que fichier vectoriel.

Existe-t-il un moyen de regrouper ce processus? Existe-t-il un programme open source où je peux le faire beaucoup plus facilement?

matandked
la source
Voulez-vous dire quelque chose comme ça ? Il existe déjà une demande de fonctionnalité pour cette fonctionnalité .
Tomas

Réponses:

7

Il ne semble pas y avoir de plugin ou de fonctionnalité dans QGIS pour étiqueter les cellules.

L'utilisation d'un fichier vectoriel converti pour étiqueter les centres des cellules est probablement votre meilleur choix. Le package de statistiques open source R dispose de nombreux excellents outils spatiaux et peut traiter par lots ou rapidement des fichiers raster pour créer des fichiers de formes (vecteur / points).

library(maptools)
library(raster)

# Load the raster from a file
r <- raster("/workspace/TEMP/raster.asc")

# Convert to spatial points
p <- as(r, "SpatialPointsDataFrame")

# Save as a shapefile
writeSpatialShape(p, "/workspace/TEMP/raster_points")

Le fichier de formes aura une colonne avec les valeurs raster pour chaque point. Les points peuvent ensuite être chargés dans QGIS, avec une taille de 0 et étiquetés de manière appropriée; ils apparaissent au centre des cellules.

Pour parcourir, par exemple, tous les fichiers TIF d'un répertoire:

for (file in dir("/workspace/TEMP/", pattern="*.tif")) { # list all .tif files
  r <- raster(file)
  p <- as(r, "SpatialPointsDataFrame")
  writeSpatialShape(p, substr(file, start = 1, stop = nchar(file) -4)) # substr() removes extension.
}
Simbamangu
la source
4

Dans le cas où R n'est pas disponible (ou, si vous voulez le faire dans l'environnement QGIS), il y a maintenant l'outil SAGA dans la boîte à outils de traitement, Valeurs raster aux points pour extraire les valeurs des cellules.

Nous pouvons étiqueter le Shapescalque de sortie et le superposer avec le raster d'origine.

entrez la description de l'image ici

Kazuhito
la source