Error: RuntimeError: AttributeError: 'ApiFunction' object has no attribute 'name'
- rgee version: 1.1.6
- R version: 4.2.2
- Operating System: win 10
Description
I want to download all the values of GCI index in a data frame from sentinel2, for all images of a field whitout clouds. I want to do a iteration, but stop me an error: Error: RuntimeError: AttributeError: 'ApiFunction' object has no attribute 'name'
What I Did
library(sf)
library(sp)
library(tidyverse)
library(rgee)
library(raster)
##ee_check()
##ee_Authenticate(auth_mode = "notebook")
ee_Initialize(drive = T)
archivo <- choose.files(caption = "Seleccione archivo a estandatizar (shp, gpkg)",
multi = FALSE)
file_name <- paste0(tools::file_path_sans_ext(archivo),
'_AMBIENTADO_GCI.',
tools::file_ext(archivo))
poligono<-st_read(archivo, crs= 32721)%>%
st_geometry()
roi <-poligono %>%
sf_as_ee()
# Crear una grilla regular de 10 metros x 10 metros centrada en los polígonos
grid <- poligono%>%
st_make_grid(what = "centers", cellsize = c(10, 10))%>%
st_intersection(poligono)
df<- grid%>%
st_as_sf%>%
st_coordinates()%>%
as.data.frame()%>%
mutate(index = 1:n())%>%
st_as_sf(coords = c("X", "Y"), crs = 32721)
str(df)
#Creamos una coleccion de imagenes
collection_imag<- ee$ImageCollection("COPERNICUS/S2_SR_HARMONIZED")$
filterBounds(roi)$
filter(ee$Filter$lt("CLOUD_COVERAGE_ASSESSMENT", 5))
#func_gci<- this is a function to calculate satellite index
func_gci <-function(image){
gci =image$expression(
expression = 'NIR/GREEN-1',
opt_map = list(
'NIR' = image$select('B8'),
'GREEN' = image$select('B3')
)
)
return(image$addBands(image$addBands(gci$rename('GCI')))
)
}
collection_gci<- collection_imag$map(func_gci)$
select("GCI")$
map(function(image) {
image$clip(roi)
}
)
resacale_rename<- function(image){
date<- ee$Date(image$get("system:time_start"))$format("%m_%d_%y")
return(image$rename(date))
}
gci_rescaled<- collection_gci$map(resacale_rename)
for (start in seq(1, as.integer(c(nrow(df))), by=10000)) {
end <- min(start + 10000 - 1, as.integer(c(nrow(df))))
chunk <- df[start:end, ]
ee_extract(
x=gci_rescaled,
y=sf_as_ee(chunk),
scale= 10,
sf= F,
maxFeatures = 1000000
)
}
hi @wilson733 can I have access to your geometry?
Yes, of course don_cristobal_1_mascara.zip
I also encountered this problem.
R 4.2.2 rgee 1.1.6 installed from github
rgee 1.1.6 I found three bugs:
- Error: AttributeError: 'ApiFunction' object has no attribute 'name'
- Error in strsplit(code, ":") : object 'band_metadata' not found
- Error: ee.ee_exception.EEException: reduce.median: Error in map(ID=2018_05_01): Image.select: Pattern 'LST' did not match any bands.
code:
library(sf)
library(rgee)
ee_Initialize(drive = T)
# Define a region of interest with sf
roi <- read_sf("./ROI.gpkg", query = 'SELECT * FROM MongoliaTuLatest') %>%
sf_as_ee()
day_start = '2018-05-01'
day_end = '2018-06-01'
#1km LST daily
MOD_LST = ee$ImageCollection('MODIS/006/MOD11A1')$
select('LST_Day_1km', 'LST')$ #Error 3, if remove 'LST', it's ok
filter(ee$Filter$date(day_start, day_end))$
map(function(img) {
return(img$multiply(0.02)$clip(roi))
})
MOD_LST = MOD_LST$median()
ee_print(MOD_LST)
#预览数据
LSTVisPara <- list(min = 300,
max = 340,
palette = c('#040274', '#040281', '#0502a3', '#0502b8', '#0502ce', '#0502e6',
'#0602ff', '#235cb1', '#307ef3', '#269db1', '#30c8e2', '#32d3ef',
'#3be285', '#3ff38f', '#86e26f', '#3ae237', '#b5e22e', '#d6e21f',
'#fff705', '#ffd611', '#ffb613', '#ff8b13', '#ff6e08', '#ff500d',
'#ff0000', '#de0101', '#c21301', '#a71001', '#911003'))
Map$centerObject(roi)
Map$addLayer(MOD_LST, LSTVisPara,'MOD_LST')+
Map$addLegend(LSTVisPara, name = "LST", position = "bottomright")
#MODIS 逐日250m地表反射率数据
MOD_SR = ee$ImageCollection("MODIS/061/MOD09GQ")$
select(c('sur_refl_b01','sur_refl_b02'), c('red', 'NIR'))$
filter(ee$Filter$date(day_start, day_end))$
map(function(img){
ndvi = img$normalizedDifference(c('NIR','red'))$rename("NDVI")
return(img$addBands(ndvi)$clip(roi))
})$
median()
ee_print(MOD_SR)
falseColorVis = list(
min = -100,
max = 8000,
bands = c('NIR', 'NIR', 'red')
)
Map$centerObject(roi, zoom = 3)
Map$addLayer(MOD_SR, falseColorVis, "MOD_SR")
#MODIS IGBP逐年土地覆被
MOD_LULC = ee$ImageCollection("MODIS/061/MCD12Q1")$
select('LC_Type1')$
filter(ee$Filter$date('2018-01-01','2019-01-01'))$
map(function(img){
return(img$clip(roi))
})$
mean()
ee_print(MOD_LULC)
igbpLandCoverVis = list(
min = 1.0,
max = 17.0,
palette= c('05450a', '086a10', '54a708', '78d203', '009900', 'c6b044', 'dcd159',
'dade48', 'fbff13', 'b6ff05', '27ff87', 'c24f44', 'a5a5a5', 'ff6d4c',
'69fff8', 'f9ffa4', '1c0dff')
)
Map$centerObject(roi, zoom = 4)
Map$addLayer(MOD_LULC, igbpLandCoverVis, "MOD_LULC")
#获取DEM
SRTM = ee$Image('CGIAR/SRTM90_V4')$select('elevation')$clip(roi)
img_Original = MOD_LST$
addBands(MOD_SR)$
addBands(MOD_LULC)$
addBands(SRTM)
#定义一个重采样函数
reSampleFun = function(image,scale){
dst_crs = image$select('blue')$projection()$crs()
reSampleImg = image$ #resample('bilinear') # bilinear bicubic
reproject(
crs= 'EPSG:4326',
scale= scale
)
return(reSampleImg)
}
img_240 = reSampleFun(img_Original,240)
img_960 = reSampleFun(img_Original,960)
m1 = Map$addLayer(img_240$select('LST_Day_1km'), LSTVisPara, 'img_240')
m2 = Map$addLayer(img_960$select('LST_Day_1km'), LSTVisPara, 'img_960')
m1|m2
#生成样本点
randomPoint = ee$FeatureCollection$randomPoints(
region = roi,
points = 5000
)
Map$addLayer(randomPoint)
#Code as fellow, report error:
SamplePointCol = img_960$sampleRectangle(
collection = randomPoint,
scale = 100,
tileScale = 2,
geometries = T
)

I found that ee$ImageCollection()$select() function, most time only can fill 'selectors' option, if fill 'names' function,it will report an error.
hi @wilson733 can I have access to your geometry?
Can you help us?
Hi Cesar, can you help me with the error please!? I need the code for a paper. Thank you!
El mié., 22 de febrero de 2023 10:29, TianyaImpression < @.***> escribió:
I also encountered this problem.
R 4.2.2 rgee 1.1.6 installed from github
rgee 1.1.6 I found three bugs:
- Error: AttributeError: 'ApiFunction' object has no attribute 'name'
- Error in strsplit(code, ":") : object 'band_metadata' not found
- Error: ee.ee_exception.EEException: reduce.median: Error in map(ID=2018_05_01): Image.select: Pattern 'LST' did not match any bands.
code:
library(sf)
library(rgee)
ee_Initialize(drive = T)
Define a region of interest with sf
roi <- read_sf("./ROI.gpkg", query = 'SELECT * FROM MongoliaTuLatest') %>%
sf_as_ee()
day_start = '2018-05-01'
day_end = '2018-06-01'
#1km LST daily
MOD_LST = ee$ImageCollection('MODIS/006/MOD11A1')$
select('LST_Day_1km', 'LST')$ #Error 3, if remove 'LST', it's ok
filter(ee$Filter$date(day_start, day_end))$
map(function(img) {
return(img$multiply(0.02)$clip(roi))
})
MOD_LST = MOD_LST$median()
ee_print(MOD_LST)
#预览数据
LSTVisPara <- list(min = 300,
max = 340, palette = c('#040274', '#040281', '#0502a3', '#0502b8', '#0502ce', '#0502e6', '#0602ff', '#235cb1', '#307ef3', '#269db1', '#30c8e2', '#32d3ef', '#3be285', '#3ff38f', '#86e26f', '#3ae237', '#b5e22e', '#d6e21f', '#fff705', '#ffd611', '#ffb613', '#ff8b13', '#ff6e08', '#ff500d', '#ff0000', '#de0101', '#c21301', '#a71001', '#911003'))Map$centerObject(roi)
Map$addLayer(MOD_LST, LSTVisPara,'MOD_LST')+
Map$addLegend(LSTVisPara, name = "LST", position = "bottomright")
#MODIS 逐日250m地表反射率数据
MOD_SR = ee$ImageCollection("MODIS/061/MOD09GQ")$
select(c('sur_refl_b01','sur_refl_b02'), c('red', 'NIR'))$
filter(ee$Filter$date(day_start, day_end))$
map(function(img){
ndvi = img$normalizedDifference(c('NIR','red'))$rename("NDVI") return(img$addBands(ndvi)$clip(roi))})$
median()
ee_print(MOD_SR)
falseColorVis = list(
min = -100,
max = 8000,
bands = c('NIR', 'NIR', 'red')
)
Map$centerObject(roi, zoom = 3)
Map$addLayer(MOD_SR, falseColorVis, "MOD_SR")
#MODIS IGBP逐年土地覆被
MOD_LULC = ee$ImageCollection("MODIS/061/MCD12Q1")$
select('LC_Type1')$
filter(ee$Filter$date('2018-01-01','2019-01-01'))$
map(function(img){
return(img$clip(roi))})$
mean()
ee_print(MOD_LULC)
igbpLandCoverVis = list(
min = 1.0,
max = 17.0,
palette= c('05450a', '086a10', '54a708', '78d203', '009900', 'c6b044', 'dcd159',
'dade48', 'fbff13', 'b6ff05', '27ff87', 'c24f44', 'a5a5a5', 'ff6d4c', '69fff8', 'f9ffa4', '1c0dff'))
Map$centerObject(roi, zoom = 4)
Map$addLayer(MOD_LULC, igbpLandCoverVis, "MOD_LULC")
#获取DEM
SRTM = ee$Image('CGIAR/SRTM90_V4')$select('elevation')$clip(roi)
img_Original = MOD_LST$
addBands(MOD_SR)$
addBands(MOD_LULC)$
addBands(SRTM)
#定义一个重采样函数
reSampleFun = function(image,scale){
dst_crs = image$select('blue')$projection()$crs()
reSampleImg = image$ #resample('bilinear') # bilinear bicubic
reproject( crs= 'EPSG:4326', scale= scale )return(reSampleImg)
}
img_240 = reSampleFun(img_Original,240)
img_960 = reSampleFun(img_Original,960)
m1 = Map$addLayer(img_240$select('LST_Day_1km'), LSTVisPara, 'img_240')
m2 = Map$addLayer(img_960$select('LST_Day_1km'), LSTVisPara, 'img_960')
m1|m2
#生成样本点
randomPoint = ee$FeatureCollection$randomPoints(
region = roi,
points = 5000
)
Map$addLayer(randomPoint)
#Code as fellow, report error:
SamplePointCol = img_960$sampleRectangle(
collection = randomPoint,
scale = 100,
tileScale = 2,
geometries = T
)
[image: image] https://user-images.githubusercontent.com/22004043/220630074-b5a659a6-29f8-465f-b3e8-afac8b2ccb4a.png [image: image] https://user-images.githubusercontent.com/22004043/220630229-e9aeb71b-a4e6-4897-a00a-023e4dc1382c.png [image: image] https://user-images.githubusercontent.com/22004043/220632248-10611666-3c63-47b0-a2f7-0618a79d0280.png
I found that ee$ImageCollection()$select() function, most time only can fill 'selectors' option, if fill 'names' function,it will report an error.
— Reply to this email directly, view it on GitHub https://github.com/r-spatial/rgee/issues/316#issuecomment-1440020052, or unsubscribe https://github.com/notifications/unsubscribe-auth/A2PQB4EBXGQ5JMIP2AHICJTWYYIB7ANCNFSM6AAAAAAUXMLADQ . You are receiving this because you were mentioned.Message ID: @.***>