本文解决这个问题:EEException: A mapped function's arguments cannot be used in client-side operations。
这个坑,我踩了四天。
缘起自己想用GEE下载哨兵二号矢量切片,原始的代码是吴秋生老师的这个:96 image chips - geemap
但是它是没有循环的,因此我想对很多个时间或者很多个位置去做的时候,就得写一个循环套上去。好了问题来了。这个例子里面很多的getInfo,埋下了很多坑。
getInfo——ee类型转python(或者JS)类型的唯一函数!
这个唯一,是因为我搜了好几天,真就没有别的解决办法了。比如你想把ee.List转成list,这个ee.list转List的问题本质上就是一个客户端和服务器端的类型的问题,服务器端的东西(ee.XXX)只能通过getInfo转成客户端(python的类型)的东西。可以参考这一篇官方文档:https://developers.google.com/earth-engine/guides/client_server但是getInfo在map里面是不能用的。
所以当你遇到getInfo,就会报错A mapped function's arguments cannot be used in client-side operations。
解决方法也是很简单粗暴:把map换成for。虽然失去了并行计算的优点,但是至少能跑了!