earthengine-api/python/ee/clusterer.py
Google Earth Engine Authors 4929ae5555 v0.1.394
PiperOrigin-RevId: 615537108
2024-03-13 21:10:43 +00:00

67 lines
1.8 KiB
Python

"""A wrapper for Clusterers."""
from ee import apifunction
from ee import computedobject
class Clusterer(computedobject.ComputedObject):
"""An object to represent an Earth Engine Clusterer.
Example:
# Load a pre-computed Landsat composite for input.
input_img = ee.Image('LANDSAT/LE7_TOA_1YEAR/2001')
# Define a region in which to generate a sample of the input.
region = ee.Geometry.Rectangle(29.7, 30, 32.5, 31.7)
# Make the training dataset.
training = input_img.sample(region=region, scale=30, numPixels=5000)
# Instantiate the clusterer and train it.
clusterer = ee.Clusterer.wekaKMeans(15).train(training)
# Cluster the input using the trained clusterer.
result = input_img.cluster(clusterer)
"""
_initialized: bool = False
def __init__(
self,
clusterer: computedobject.ComputedObject,
):
"""Creates a Clusterer wrapper.
Args:
clusterer: A Clusterer to cast.
"""
self.initialize()
if isinstance(clusterer, computedobject.ComputedObject):
# There is no server-side constructor for ee.Clusterer. Pass the object
# as-is to the server in case it is intended to be a Clusterer cast.
super().__init__(clusterer.func, clusterer.args, clusterer.varName)
return
raise TypeError(
'Clusterer can only be used as a cast to Clusterer. Found'
f' {type(clusterer)}.'
)
@classmethod
def initialize(cls) -> None:
"""Imports API functions to this class."""
if not cls._initialized:
apifunction.ApiFunction.importApi(cls, cls.name(), cls.name())
cls._initialized = True
@classmethod
def reset(cls) -> None:
"""Removes imported API functions from this class."""
apifunction.ApiFunction.clearApi(cls)
cls._initialized = False
@staticmethod
def name() -> str:
return 'Clusterer'