I want to reproject an Image Collection with .map(). This is what I tried:
import ee
ee.Authenticate()
ee.Initialize()
import geetools
# Outline of lower 48 U.S.
usbound = ee.Image("Q:My Drive/temp/us_bounds.tif");
# The TIFF can be retrieved at
# https://code.earthengine.google.com/?asset=users/japolo/us_bounds
usb = usbound.geometry();
#oeel = require('users/OEEL/lib:loadAll');
# I have to create this to clip the collection
def clip_img(img):
return ee.Image(img).clip(usb)
# Set up Daymet collection from 2009 to 2020
daymetb = ee.ImageCollection("NASA/ORNL/DAYMET_V4").filterDate('2009-01-01', '2009-12-31').map(clip_img);
# Set up projection for reproject of Daymet
proj = ee.Projection('EPSG:4326');
def imreproj(img):
return ee.Image(img).reproject(crs='EPSG:4326', crsTransform='null', scale=1000)
# Reproject Daymet
daymet = daymetb.map(imreproj(img))
The error is
Traceback (most recent call last):
File "<stdin>", line 1, in
<module> NameError: name 'img' is not defined
I also tried:
daymet = daymetb.map(ee.Image.reproject(crs='EPSG:4326', crsTransform='null', scale=1000))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\japolo\code\gee_env\lib\site-packages\ee\apifunction.py", line 205, in <lambda>
return lambda *args, **kwargs: func.call(*args, **kwargs) # pylint: disable=unnecessary-lambda
File "C:\Users\japolo\code\gee_env\lib\site-packages\ee\function.py", line 67, in call
return self.apply(self.nameArgs(args, kwargs))
File "C:\Users\japolo\code\gee_env\lib\site-packages\ee\function.py", line 80, in apply
result = computedobject.ComputedObject(self, self.promoteArgs(named_args))
File "C:\Users\japolo\code\gee_env\lib\site-packages\ee\function.py", line 109, in promoteArgs
raise ee_exception.EEException(
ee.ee_exception.EEException: Required argument (image) missing to function: Force an image to be computed in a given projection and resolution.
Args:
image: The image to reproject.
...
How should I set up the .map(<reproject>)
for the Python API?
EDIT after answer from Daniel:
I changed:
def imreproj(img):
return ee.Image(0).reproject(crs='EPSG:4326', scale = 1000)
daymet = daymetb.map(imreproj(img))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'img' is not defined
# and tried
def imreproj():
return ee.Image(0).reproject(crs='EPSG:4326', scale = 1000)
daymet = daymetb.map(imreproj)
TypeError: imreproj() takes 0 positional arguments but 1 was given
also tried
daymet = daymetb.map(ee.Image(0).reproject(crs='EPSG:4326', scale = 1000))
TypeError: 'Image' object is not callable
I'm dense… and I don't know much Python. I don't know how the .map()
works in Python.
Best Answer
The
crsTransform
argument cannot be the string'null'
. You either leave it out completely, set it toNone
, or specify a proper value.