Objek gambar adalah kumpulan piksel yang terhubung dan memiliki nilai bilangan bulat yang sama. Data gambar kategoris, dikelompokkan, dan boolean cocok untuk analisis objek.
Earth Engine menawarkan metode untuk memberi label pada setiap objek dengan ID unik, menghitung jumlah piksel yang menyusun objek, dan menghitung statistik untuk nilai piksel yang memotong objek.
connectedComponents()
: memberi label pada setiap objek dengan ID unik.connectedPixelCount()
: menghitung jumlah piksel di setiap objek.reduceConnectedComponents()
: menghitung statistik untuk piksel di setiap objek.
Hotspot termal
Bagian berikut memberikan contoh metode berbasis objek yang diterapkan ke suhu permukaan Landsat 8 dengan setiap bagian yang dibuat berdasarkan metode sebelumnya. Jalankan cuplikan berikutnya untuk membuat gambar dasar: hotspot termal (> 303 derajat Kelvin) untuk wilayah kecil di San Francisco.
Editor Kode (JavaScript)
// Make an area of interest geometry centered on San Francisco. var point = ee.Geometry.Point(-122.1899, 37.5010); var aoi = point.buffer(10000); // Import a Landsat 8 image, subset the thermal band, and clip to the // area of interest. var kelvin = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318') .select(['B10'], ['kelvin']) .clip(aoi); // Display the thermal band. Map.centerObject(point, 13); Map.addLayer(kelvin, {min: 288, max: 305}, 'Kelvin'); // Threshold the thermal band to set hot pixels as value 1, mask all else. var hotspots = kelvin.gt(303) .selfMask() .rename('hotspots'); // Display the thermal hotspots on the Map. Map.addLayer(hotspots, {palette: 'FF0000'}, 'Hotspots');
import ee import geemap.core as geemap
Colab (Python)
# Make an area of interest geometry centered on San Francisco. point = ee.Geometry.Point(-122.1899, 37.5010) aoi = point.buffer(10000) # Import a Landsat 8 image, subset the thermal band, and clip to the # area of interest. kelvin = ( ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318') .select(['B10'], ['kelvin']) .clip(aoi) ) # Threshold the thermal band to set hot pixels as value 1, mask all else. hotspots = kelvin.gt(303).selfMask().rename('hotspots') # Define a map centered on Redwood City, California. map_objects = geemap.Map(center=[37.5010, -122.1899], zoom=13) # Add the image layers to the map. map_objects.add_layer(kelvin, {'min': 288, 'max': 305}, 'Kelvin') map_objects.add_layer(hotspots, {'palette': 'FF0000'}, 'Hotspots')

Gambar 1. Suhu untuk wilayah San Francisco. Piksel dengan suhu lebih besar dari 303 derajat Kelvin dibedakan dengan warna merah (hotspot termal).
Memberi label pada objek
Memberi label pada objek sering kali merupakan langkah pertama dalam analisis objek. Di sini, fungsi connectedComponents()
digunakan untuk mengidentifikasi objek gambar dan menetapkan
ID unik untuk setiap objek; semua piksel yang termasuk dalam objek diberi nilai ID bilangan bulat yang sama. Hasilnya adalah salinan gambar input dengan band "label" tambahan yang mengaitkan piksel dengan nilai ID objek berdasarkan konektivitas piksel di band pertama gambar.
Editor Kode (JavaScript)
// Uniquely label the hotspot image objects. var objectId = hotspots.connectedComponents({ connectedness: ee.Kernel.plus(1), maxSize: 128 }); // Display the uniquely ID'ed objects to the Map. Map.addLayer(objectId.randomVisualizer(), null, 'Objects');
import ee import geemap.core as geemap
Colab (Python)
# Uniquely label the hotspot image objects. object_id = hotspots.connectedComponents( connectedness=ee.Kernel.plus(1), maxSize=128 ) # Add the uniquely ID'ed objects to the map. map_objects.add_layer(object_id.randomVisualizer(), None, 'Objects')
Perhatikan bahwa ukuran patch maksimum ditetapkan ke 128 piksel; objek yang terdiri dari lebih banyak piksel akan disamarkan. Konektivitas ditentukan oleh kernel
ee.Kernel.plus(1)
, yang menentukan konektivitas empat tetangga; gunakan ee.Kernel.square(1)
untuk delapan tetangga.

Gambar 2. Objek hotspot termal yang diberi label dan gaya oleh ID unik.
Ukuran objek
Jumlah piksel
Hitung jumlah piksel yang menyusun objek menggunakan
metode gambar connectedPixelCount()
. Mengetahui jumlah piksel dalam objek
dapat membantu menyamarkan objek berdasarkan ukuran dan
menghitung area objek. Cuplikan berikut menerapkan connectedPixelCount()
ke band "label" gambar objectId
yang ditentukan di bagian sebelumnya.
Editor Kode (JavaScript)
// Compute the number of pixels in each object defined by the "labels" band. var objectSize = objectId.select('labels') .connectedPixelCount({ maxSize: 128, eightConnected: false }); // Display object pixel count to the Map. Map.addLayer(objectSize, null, 'Object n pixels');
import ee import geemap.core as geemap
Colab (Python)
# Compute the number of pixels in each object defined by the "labels" band. object_size = object_id.select('labels').connectedPixelCount( maxSize=128, eightConnected=False ) # Add the object pixel count to the map. map_objects.add_layer(object_size, None, 'Object n pixels')
connectedPixelCount()
menampilkan salinan gambar input dengan setiap piksel dari setiap band berisi jumlah tetangga yang terhubung sesuai dengan aturan konektivitas empat atau delapan tetangga yang ditentukan oleh argumen boolean yang diteruskan ke parameter eightConnected
. Perhatikan bahwa konektivitas
ditentukan secara independen untuk setiap band gambar input. Dalam
contoh ini, gambar satu band (objectId
) yang mewakili ID objek
disediakan sebagai input, sehingga gambar satu band ditampilkan dengan band "label"
(ada dalam gambar input), tetapi sekarang nilainya mewakili jumlah
piksel yang menyusun objek; setiap piksel dari setiap objek akan memiliki nilai jumlah
piksel yang sama.

Gambar 3. Objek hotspot termal diberi label dan gaya berdasarkan ukuran.
Area
Hitung area objek dengan mengalikan area satu piksel dengan jumlah
piksel yang membentuk objek (ditentukan oleh connectedPixelCount()
). Area piksel
disediakan oleh gambar yang dihasilkan dari ee.Image.pixelArea()
.
Editor Kode (JavaScript)
// Get a pixel area image. var pixelArea = ee.Image.pixelArea(); // Multiply pixel area by the number of pixels in an object to calculate // the object area. The result is an image where each pixel // of an object relates the area of the object in m^2. var objectArea = objectSize.multiply(pixelArea); // Display object area to the Map. Map.addLayer(objectArea, {min: 0, max: 30000, palette: ['0000FF', 'FF00FF']}, 'Object area m^2');
import ee import geemap.core as geemap
Colab (Python)
# Get a pixel area image. pixel_area = ee.Image.pixelArea() # Multiply pixel area by the number of pixels in an object to calculate # the object area. The result is an image where each pixel # of an object relates the area of the object in m^2. object_area = object_size.multiply(pixel_area) # Add the object area to the map. map_objects.add_layer( object_area, {'min': 0, 'max': 30000, 'palette': ['0000FF', 'FF00FF']}, 'Object area m^2', )
Hasilnya adalah gambar dengan setiap piksel objek yang terkait dengan area
objek dalam meter persegi. Dalam contoh ini, gambar objectSize
berisi
satu band, jika multi-band, operasi perkalian akan
diterapkan ke setiap band gambar.
Memfilter objek menurut ukuran
Ukuran objek dapat digunakan sebagai kondisi mask untuk memfokuskan analisis Anda pada objek
berukuran tertentu (misalnya, menyamarkan objek yang terlalu kecil). Di sini,
gambar objectArea
yang dihitung pada langkah sebelumnya digunakan sebagai mask untuk menghapus
objek yang luasnya kurang dari satu hektar.
Editor Kode (JavaScript)
// Threshold the `objectArea` image to define a mask that will mask out // objects below a given size (1 hectare in this case). var areaMask = objectArea.gte(10000); // Update the mask of the `objectId` layer defined previously using the // minimum area mask just defined. objectId = objectId.updateMask(areaMask); Map.addLayer(objectId, null, 'Large hotspots');
import ee import geemap.core as geemap
Colab (Python)
# Threshold the `object_area` image to define a mask that will mask out # objects below a given size (1 hectare in this case). area_mask = object_area.gte(10000) # Update the mask of the `object_id` layer defined previously using the # minimum area mask just defined. object_id = object_id.updateMask(area_mask) map_objects.add_layer(object_id, None, 'Large hotspots')
Hasilnya adalah salinan gambar objectId
dengan objek kurang dari satu hektar
disamarkan.
![]() |
![]() |
---|---|
Gambar 4a. Objek hotspot termal diberi label dan gaya berdasarkan ID unik. | Gambar 4b. Objek hotspot termal yang difilter menurut area minimum (1 hektar). |
Statistik zona
Metode reduceConnectedComponents()
menerapkan pengurangan ke piksel
yang menyusun objek unik. Cuplikan berikut menggunakannya untuk menghitung suhu
rata-rata objek hotspot. reduceConnectedComponents()
memerlukan gambar
input dengan band (atau band) yang akan dikurangi dan band yang menentukan label
objek. Di sini, band gambar "label" objectID
ditambahkan ke gambar suhu kelvin
untuk membuat gambar input yang sesuai.
Editor Kode (JavaScript)
// Make a suitable image for `reduceConnectedComponents()` by adding a label // band to the `kelvin` temperature image. kelvin = kelvin.addBands(objectId.select('labels')); // Calculate the mean temperature per object defined by the previously added // "labels" band. var patchTemp = kelvin.reduceConnectedComponents({ reducer: ee.Reducer.mean(), labelBand: 'labels' }); // Display object mean temperature to the Map. Map.addLayer( patchTemp, {min: 303, max: 304, palette: ['yellow', 'red']}, 'Mean temperature' );
import ee import geemap.core as geemap
Colab (Python)
# Make a suitable image for `reduceConnectedComponents()` by adding a label # band to the `kelvin` temperature image. kelvin = kelvin.addBands(object_id.select('labels')) # Calculate the mean temperature per object defined by the previously added # "labels" band. patch_temp = kelvin.reduceConnectedComponents( reducer=ee.Reducer.mean(), labelBand='labels' ) # Add object mean temperature to the map and display it. map_objects.add_layer( patch_temp, {'min': 303, 'max': 304, 'palette': ['yellow', 'red']}, 'Mean temperature', ) display(map_objects)
Hasilnya adalah salinan gambar input tanpa band yang digunakan untuk menentukan objek, dengan nilai piksel mewakili hasil pengurangan per objek, per band.

Gambar 5. Piksel objek hotspot termal yang diringkas dan diberi gaya berdasarkan suhu rata-rata.