Вот пример получения изображения Sentinel-2 из Google Earth Engine
import ee
# Sentinel 2 Image Collection
s2_image_collection = ee.ImageCollection("COPERNICUS/S2_SR")
# Defining bounds
sls_latitude = 37.424160
sls_longitude = -122.167951
sls_polygon = ee.Geometry.Polygon(
coords=[
ee.Geometry.Point(-122.170884, 37.446027),
ee.Geometry.Point(-122.152749, 37.430515),
ee.Geometry.Point(-122.174323, 37.419214),
ee.Geometry.Point(-122.189342, 37.429405),
]
)
bounds = sls_polygon
start = ee.Date('2019-10-01');
finish = ee.Date('2019-12-31');
filteredCollection = s2_image_collection.filter(ee.Filter.lt("CLOUDY_PIXEL_PERCENTAGE", 15))\
.filterBounds(bounds)\
.filterDate(start, finish)
# Get First Image in Collection
image = filteredCollection.first().clip(bounds)
Теперь, чтобы преобразовать изображение в «Array Image», где каждый пиксель является массивом значений полосы, я Я следую инструкциям здесь: https://developers.google.com/earth-engine/arrays_array_images#array -изображения .
# Now select the bands of interest
image_select = image.select(['B4', 'B3', 'B2']);
# Make an Array Image, with a 1-D Array per pixel.
arrayImage1D = image_select.toArray();
# Make an Array Image with a 2-D Array per pixel, 6x1.
arrayImage2D = arrayImage1D.toArray(1);
А потом, когда я использую getInfo()
, я получаю:
arrayImage1D.getInfo()
{'type': 'Image',
'bands': [{'id': 'array',
'data_type': {'type': 'PixelType',
'precision': 'int',
'min': 0,
'max': 65535,
'dimensions': 1},
'dimensions': [324, 299],
'origin': [7174, 5532],
'crs': 'EPSG:32610',
'crs_transform': [10, 0, 499980, 0, -10, 4200000]}],
'properties': {'system:footprint': {'type': 'Polygon',
'coordinates': [[[-122.17088399999999, 37.446027],
[-122.189342, 37.429405],
[-122.174323, 37.419214],
[-122.15274900000004, 37.430515],
[-122.17088399999999, 37.446027]]]}}}
Так теперь мои вопросы:
- Почему размеры показывают [324, 299] для
arrayImage1D
? Разве это не должен быть одномерный массив? - Как я на самом деле вижу значения для этого массива? Первоначально я хотел преобразовать в массив numpy, но, может быть, это не то, что я хочу сделать?
- В действительности я пытаюсь начать с коллекции изображений, в которой много изображений курс года для того же места. Я хочу взять разность каждого изображения во времени. Другими словами, для изображения 2019-01-05 получите массив значений диапазона каждого пикселя и сравните его с изображением для того же местоположения 2019-01-01. Повторите это в течение года и сохраните распределение различий. Какой лучший способ сделать это? Будет ли преобразование в массив numpy или я должен использовать
TFRecord
(https://developers.google.com/earth-engine/tfrecord; Экспорт массива изображений в TFRecord в Google Earth Engine )?