Je voudrais savoir comment obtenir toutes les valeurs raster dans un polygone en utilisant gdal ou pygeoprocessing, sans lire la grille entière comme un tableau.
pygeoprocessing et gdal peuvent faire des statistiques zonales mais seuls les min, max, moyenne, stdev ou count sont disponibles à partir d'une telle fonction. Étant donné que les statistiques zonales doivent accéder aux valeurs, serait-il facile d'extraire les valeurs de la même manière?
J'ai trouvé une question très similaire ici: ( Obtenir la valeur en pixels du raster GDAL sous le point OGR sans NumPy? ) Mais uniquement pour un "point" particulier.
python
gdal
pygeoprocessing
égayer
la source
la source
Réponses:
Vous pouvez utiliser rasterio pour extraire les valeurs raster dans un polygone comme dans GIS SE: image géotiff coupée en python GDAL avec fichier geojson
J'utilise ici un fichier raster à une bande et GeoPandas pour le shapefile (au lieu de Fiona)
Le résultat out_image est un tableau masqué Numpy
Maintenant, j'utilise Comment obtenir les coordonnées d'une cellule dans un géotif? ou Python affine transforme pour se transformer entre le pixel et les coordonnées projetées avec
out_transform
comme transformation affine pour les données du sous-ensembleCréation d'une nouvelle GeoDataFrame résultante avec les valeurs de col, de ligne et d'élévation
la source
geoms = [mapping(geoms[0])]
plutôt que justegeoms[0]
?mapping(geoms[0])
= Format GeoJSON de la géométriedata = out_image.data[0]
jetémulti-dimensional sub-views are not implemented
pour moi, mais adata = out_image[0,:,:]
fonctionné. Est-ce une solution de contournement moins efficace ou autrement problématique? Une idée de pourquoi cela aurait échoué tel qu'écrit?Si vous rencontrez des problèmes en utilisant rasterio dans le même script avec gdal, j'essayais avec le pygeoprocessing (il utilise également galbé ) et j'ai trouvé une solution de contournement. Le script complet (avec les chemins vers mes couches) est le suivant:
Après l'avoir exécuté, j'ai eu:
où les valeurs d'échantillonnage raster étaient comme prévu en chaque point et incorporées à la couche de points.
la source