Obtenir des valeurs de pixels en un seul point à l'aide de rasterio

14

Pour obtenir une valeur de pixel unique à un point d'un raster à l'aide de rasterio, il existe un exemple ici: https://github.com/mapbox/rasterio/pull/275

Cependant, existe-t-il une API directe dans rasterio (et non le cli) qui peut être utilisée pour extraire de la valeur à un seul point dans un raster?

-- ÉDITER

with rasterio.drivers():

    # Read raster bands directly to Numpy arrays.
    #
    with rasterio.open('C:\\Users\\rit\\38ERP.tif') as src:
        x = (src.bounds.left + src.bounds.right) / 2.0
        y = (src.bounds.bottom + src.bounds.top) / 2.0

        vals = src.sample((x, y))
        for val in vals:
            print list(val)
user1186
la source

Réponses:

12

La méthode de l'API Python qui prend en charge la commande rio-sample est documentée ici: https://rasterio.readthedocs.io/en/latest/api/rasterio._io.html#rasterio._io.DatasetReaderBase.sample

src.sample() prend un itérateur sur x, y tuples, alors faites: for val in src.sample([(x, y)]): print(val)

sgillies
la source
Merci! J'ai des problèmes avec la syntaxe. Doit-il être: vals = src.sample((x, y))ou vals = src.sample(x, y)? Ni l'un ni l'autre ne semble fonctionner
user1186
Code ajouté dans ma question ci
user1186
4
src.sample()prend un itérateur sur les x, ytuples, faites-le for val in src.sample([(x, y)]): print(val).
sgillies