Что касается меня, у вас неправильные отступы, и это создает все проблемы.
# --- function ---
def Landcover_Crops_nr(polygons):
dataset = ee.Image("USGS/GFSAD1000_V0").clip(polygons)
type_crop = dataset.select("landcover")
arr = np.array(type_crop)
values, frequencies = np.unique(arr, return_counts=True)
sum = np.sum(frequencies)
percentages = [x/sum*100 for x in frequencies]
# --- outside function ---
Но если отступы в порядке, вы должны знать, что функция создает локальную переменную arr
, и она не существует снаружи функция.
Вам нужно будет использовать global arr
, чтобы сообщить функции, которую вы хотите назначить внешней / глобальной переменной. И не забудьте выполнить эту функцию перед тем, как использовать внешнюю функцию arr
.
# --- function ---
def Landcover_Crops_nr(polygons):
global arr
dataset = ee.Image("USGS/GFSAD1000_V0").clip(polygons)
type_crop = dataset.select("landcover")
arr = np.array(type_crop)
# --- outside function ---
Landcover_Crops_nr(polygons) # execute function to create variable `arr`
values, frequencies= np.unique(arr, return_counts=True)
sum = np.sum(frequencies)
percentages = [x/sum*100 for x in frequencies]
Но лучше использовать return arr
- это будет более читабельно. И присвоить результат внешнему arr
# --- function ---
def Landcover_Crops_nr(polygons):
dataset = ee.Image("USGS/GFSAD1000_V0").clip(polygons)
type_crop = dataset.select("landcover")
arr = np.array(type_crop)
return arr
# --- outside function ---
arr = Landcover_Crops_nr(polygons) # execute function to get local `arr` and assign to global `arr`
values, frequencies= np.unique(arr, return_counts=True)
sum = np.sum(frequencies)
percentages = [x/sum*100 for x in frequencies]