Pixelwerte an einem einzelnen Punkt mit Raster abrufen


14

Um mit rasterio einen einzelnen Pixelwert an einem Punkt in einem Raster zu erhalten, finden Sie hier ein Beispiel: https://github.com/mapbox/rasterio/pull/275

Gibt es jedoch eine direkte API in rasterio (und nicht in der cli), mit der der Wert an einem einzelnen Punkt in einem Raster extrahiert werden kann?

- BEARBEITEN

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)

Antworten:


12

Die Python-API-Methode, die den Befehl rio-sample unterstützt, ist hier dokumentiert: https://rasterio.readthedocs.io/en/latest/api/rasterio._io.html#rasterio._io.DatasetReaderBase.sample

src.sample() Nimmt einen Iterator über x, y Tupel. for val in src.sample([(x, y)]): print(val)


Vielen Dank! Ich habe Probleme mit der Syntax. Sollte es sein: vals = src.sample((x, y))oder vals = src.sample(x, y)?
Beides

Code in meiner Frage oben
hinzugefügt

4
src.sample()Nimmt einen Iterator über x, yTupel, so tun for val in src.sample([(x, y)]): print(val).
sgillies
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.