Ottenere valori di pixel in un singolo punto usando rasterio


14

Per ottenere un singolo valore di pixel in un punto di un raster usando rasterio, c'è un esempio qui: https://github.com/mapbox/rasterio/pull/275

Tuttavia, esiste un'API diretta all'interno di rasterio (e non il cli) che può essere utilizzata per estrarre valore in un singolo punto in un raster?

-- MODIFICARE

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)

Risposte:


12

Il metodo API Python che supporta il comando rio-sample è documentato qui: https://rasterio.readthedocs.io/en/latest/api/rasterio._io.html#rasterio._io.DatasetReaderBase.sample

src.sample() prende un iteratore su x, y tuple, quindi fai: for val in src.sample([(x, y)]): print(val)


Grazie! Sto riscontrando problemi con la sintassi. Dovrebbe essere: vals = src.sample((x, y))o vals = src.sample(x, y)? Nessuno dei due sembra funzionare
user1186

Codice aggiunto nella mia domanda sopra
user1186

4
src.sample()prende un iteratore sopra le x, ytuple, quindi fallo for val in src.sample([(x, y)]): print(val).
sgillies,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.