Компромиссы между индексированием массива numpy и открытием файла в растерио - PullRequest
0 голосов
/ 27 декабря 2018

При использовании rasterio я могу сделать один из следующих способов, чтобы получить одну полосу растра:

import rasterio
import numpy as np

dataset = rasterio.open('filepath')

# note that if you have the full dataset read in with image = dataset.read() you can do:
image = dataset.read()
print(image.shape)
red_band = image[2, :, :] # this 
print(red_band.shape)

# which is equal to simply doing
red_band_read = dataset.read(3)
print(red_band_read.shape)

if np.array_equal(red_band_read, red_band):
    print('They are the same.')

И она распечатает:

(8, 250, 250)
(250, 250)
(250, 250)
They are the same.

НоМне любопытно, что лучше?Я полагаю, что индексирование в массив массивов намного быстрее, чем чтение из файла, но наличие некоторых из этих больших спутниковых снимков непозволительно увеличивает объем памяти.Есть ли веские причины для того или другого?

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете попробовать синхронизировать каждый метод и посмотреть, есть ли разница!

Если все, что вам нужно, это данные из красной полосы, я, конечно, использовал бы последний метод, а не считывал все полосы в память изатем отрезая красную полосу от большего массива.

Аналогичным образом, если вы уже знаете подмножество данных, на которые хотите посмотреть, вы можете использовать чтение и запись оконного растрио для дальнейшего сокращения потребления памяти:

...