Obtendo valores de pixel em um único ponto usando rasterio


14

Para obter um único valor de pixel em um ponto de uma varredura usando rasterio, há um exemplo aqui: https://github.com/mapbox/rasterio/pull/275

No entanto, existe uma API direta no rasterio (e não no cli) que pode ser usada para extrair valor em um único ponto em um raster?

- EDITAR

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)

Respostas:


12

O método da API Python que suporta o comando rio-sample está documentado aqui: https://rasterio.readthedocs.io/en/latest/api/rasterio._io.html#rasterio._io.DatasetReaderBase.sample

src.sample() assume um iterador sobre x, y tuplas, assim como: for val in src.sample([(x, y)]): print(val)


obrigado! Estou tendo problemas com a sintaxe. Deveria ser: vals = src.sample((x, y))ou vals = src.sample(x, y)? Não parece funcionar
user1186

Código adicionado na minha pergunta acima
user1186

4
src.sample()toma um iterador sobre x, ytuplas, o mesmo acontece for val in src.sample([(x, y)]): print(val).
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.