Похоже, это связано с переменными на стороне клиента и на стороне сервера.
Таким образом, требуются этапы обработки на стороне обслуживания.
Вот кое-что, что, кажется, работает:
var o = ee.Dictionary(loc.aggregate_histogram('relativeOrbitNumber_start'))
var okeys = ee.List(o.keys())
var ovals = ee.List(o.values())
var minmax = ee.Dictionary(ovals.reduce(ee.Reducer.minMax()))
var maxval = ee.Number(minmax.get('max'))
var maxind = ovals.indexOf(maxval)
var maxkey = okeys.get(maxind)
print('maxkey:', maxkey)
К сожалению, эта переменная не может быть использована в качестве входных данных для filterMetadata
:
// this yields an empty collection, where maxKey = 42.0:
var sel = loc.filterMetadata('relativeOrbitNumber_start', 'equals', maxKey)
// this yields a non-empty collection:
var sel = loc.filterMetadata('relativeOrbitNumber_start', 'equals', 42.0)
Так что сначала я должен получить ее на стороне клиента, используя getInfo, согласно этот ответ .
var ms = maxKey.getInfo() // local string
var mi = parseInt(ms) // local integer
// this yields a non-empty collection:
var sel = loc.filterMetadata('relativeOrbitNumber_start', 'equals', mi)
Хотя это похоже на ошибку, почему filterMetadata не сможет принимать переменные на стороне сервера в качестве аргументов? Тем более что использование getInfo()
не рекомендуется в документации . ?