in

Convertir GEE Javascript a Python usando geemap no funciona

Estoy buscando convertir mi código para calcular la precipitación media de 30 años de ERA5 en GEE a Python para poder ejecutarlo en la herramienta de línea de comando ee python. Intenté usar la herramienta de conversión geemap, pero no puedo convertir este fragmento de código que escribí para encontrar la precipitación media durante 30 años.

Intenté convertir mi secuencia de comandos manualmente y he enumerado las tres versiones a continuación. Primero, el código que funciona en GEE, segundo, el código generado por geemap y tercero, en el que he estado trabajando. ¿Cómo hago para que el tercero funcione de la misma manera que el primero?

Código GEE correcto

var era5 = ee.ImageCollection("ECMWF/ERA5/MONTHLY").select(['total_precipitation']); //band of interest
  
var mean_30_yr_precip = ee.ImageCollection(ee.List.sequence(1990, 2020)
  .map(function (year) {
    var startDate = ee.Date.fromYMD(ee.Number(year), 1, 1);
    return era5
      .filterDate(startDate, startDate.advance(1, 'year'))
      .map(function (monthlyprecip) {
        return monthlyprecip//.multiply(1000); // convert to mm
      })
      .reduce(ee.Reducer.sum()) // add all the months for total precip per year
      //.divide(12); // go from total precipitation to mean precipitation

  })
).reduce(ee.Reducer.mean()); // get the mean of all of the means over the years

Código de conversión de GEE a Python fallido usando geemap

era5 = ee.ImageCollection("ECMWF/ERA5/MONTHLY").select(['total_precipitation']); #band of interest

mean_30_yr_precip = ee.ImageCollection(ee.List.sequence(1990, 2020)

def func_yty (year):
    startDate = ee.Date.fromYMD(ee.Number(year), 1, 1)
    return era5 \
      .filterDate(startDate, startDate.advance(1, 'year')) \
      .map(function (monthlyprecip) {
        return monthlyprecip#.multiply(1000); # convert to mm
      }) \
      .reduce(ee.Reducer.sum()) 
      #.divide(12); # go from total precipitation to mean precipitation \
  .map(func_yty)











).reduce(ee.Reducer.mean()); # get the mean of all of the means over the years

Mi intento de código python

years_lst = ee.ImageCollection(ee.List.sequence(1990, 2020))
def frost_calculator(years_list):
    for year in years_list:
        startDate = ee.Date.fromYMD(ee.Number(year), 1, 1)
        endDate = startDate.advance(1, 'year')
        filtered_collection = collection.filterDate(startDate, endDate).lt(273.15)
        reduced_collection = filtered_collection.reduce(ee.Reducer.sum()).gt(6)
        frost_var = reduced_collection.reduce(ee.Reducer.sum()).gt(0) # Number of freezing years
        return frost_var
frost = frost_calculator(years_lst)
nonfrost = frost.eq(0)

1 respuesta
1

En su código python, está utilizando una función del lado del cliente (for loop) sobre funciones del lado del servidor. Ese es el primer error.

¿Te ayudó la respuesta?

Subscribirse
Notificar por
guest
0 Comentarios
Inline Feedbacks
Ver todas las Respuestas

Extraño queryplan salta sobre una tabla particionada en el antiguo postgres 9.3

¿Qué significa si mi intervalo de confianza incluye cero con un valor p significativo en el análisis de regresión lineal?