Как напечатать уменьшенное значение пикселя в движке Google Earth

Я пытаюсь вывести сумму осадков в заданном пикселе (местоположении точки)

 # pixel location
loc_point = ee.Geometry.Point([-0.627983, 52.074361])
# get precip
precip = ee.ImageCollection('NASA/GPM_L3/IMERG_MONTHLY_V06')\
.filterDate('2019-06-01', '2020-06-30')\
.filterBounds(loc_point)\
.select('precipitation')

# sum  
precip_sum = precip.reduce(ee.Reducer.sum())

# print sum precip value
precip_sum.get('precipitation_sum').getInfo()

person Juba    schedule 19.07.2020    source источник
comment
Обратная косая черта в конце строки - это нечитаемое зло практически в любом коде Python. Если вы пытаетесь избежать 79 символов (pep8), сделайте это в удобочитаемой форме, например: создайте функцию, используйте несколько переменных, разорвите строку на ( и ). Таким образом, язык, созданный с использованием блоков и синтаксиса псевдокода, будет легко читаемым, так что вы можете просто летать по коду глазами и знать, что происходит, вместо того, чтобы переворачивать код в уме. просто чтобы прочитать это. Сделайте код читабельным, это облегчит вам жизнь в будущем.   -  person Peter Badida    schedule 19.07.2020


Ответы (1)


Операция reduce дает вам изображение, которое содержит сумму всей коллекции изображений; в данном случае это сокращение со временем. Чтобы получить значение в одном пикселе, вам также необходимо использовать reduceRegion.

reduceRegion предназначен для работы с 2D-областями, поэтому вам нужно указать некоторые вещи, которые не являются строго необходимыми для определения точки:

precip_sum = (precip
  .reduce(ee.Reducer.sum())
  .reduceRegion(
    geometry=loc_point,
    reducer=ee.Reducer.first(),  # take one pixel (there will be only one)
    crs=precip.first().projection()  # doesn't matter but must pick one
  ))

Примечание: я не тестировал именно этот Python; Я преобразовал синтаксис из этого JavaScript-кода Earth Engine, который я протестировал.

person Kevin Reid    schedule 19.07.2020