Untuk mengonversi dari jenis data Image
(raster) ke jenis data FeatureCollection
(vektor), gunakan image.reduceToVectors()
. Ini adalah mekanisme utama untuk vektorisasi di Earth Engine, dan dapat berguna untuk membuat region sebagai input ke jenis pengurangan lainnya. Metode reduceToVectors()
membuat tepi poligon (sebagai gantinya, centroid atau kotak pembatas) di batas grup piksel yang terhubung dan homogen.
Misalnya, pertimbangkan gambar lampu malam Jepang tahun 2012. Biarkan angka digital lampu tidur
berfungsi sebagai proxy untuk intensitas pengembangan. Tentukan zona menggunakan nilai minimum arbitrer
pada lampu malam, gabungkan zona menjadi gambar satu band, vektorkan zona menggunakan
reduceToVectors()
:
Editor Kode (JavaScript)
// Load a Japan boundary from the Large Scale International Boundary dataset. var japan = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017') .filter(ee.Filter.eq('country_na', 'Japan')); // Load a 2012 nightlights image, clipped to the Japan border. var nl2012 = ee.Image('NOAA/DMSP-OLS/NIGHTTIME_LIGHTS/F182012') .select('stable_lights') .clipToCollection(japan); // Define arbitrary thresholds on the 6-bit nightlights image. var zones = nl2012.gt(30).add(nl2012.gt(55)).add(nl2012.gt(62)); zones = zones.updateMask(zones.neq(0)); // Convert the zones of the thresholded nightlights to vectors. var vectors = zones.addBands(nl2012).reduceToVectors({ geometry: japan, crs: nl2012.projection(), scale: 1000, geometryType: 'polygon', eightConnected: false, labelProperty: 'zone', reducer: ee.Reducer.mean() }); // Display the thresholds. Map.setCenter(139.6225, 35.712, 9); Map.addLayer(zones, {min: 1, max: 3, palette: ['0000FF', '00FF00', 'FF0000']}, 'raster'); // Make a display image for the vectors, add it to the map. var display = ee.Image(0).updateMask(0).paint(vectors, '000000', 3); Map.addLayer(display, {palette: '000000'}, 'vectors');
import ee import geemap.core as geemap
Colab (Python)
# Load a Japan boundary from the Large Scale International Boundary dataset. japan = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017').filter( ee.Filter.eq('country_na', 'Japan') ) # Load a 2012 nightlights image, clipped to the Japan border. nl_2012 = ( ee.Image('NOAA/DMSP-OLS/NIGHTTIME_LIGHTS/F182012') .select('stable_lights') .clipToCollection(japan) ) # Define arbitrary thresholds on the 6-bit nightlights image. zones = nl_2012.gt(30).add(nl_2012.gt(55)).add(nl_2012.gt(62)) zones = zones.updateMask(zones.neq(0)) # Convert the zones of the thresholded nightlights to vectors. vectors = zones.addBands(nl_2012).reduceToVectors( geometry=japan, crs=nl_2012.projection(), scale=1000, geometryType='polygon', eightConnected=False, labelProperty='zone', reducer=ee.Reducer.mean(), ) # Display the thresholds. m = geemap.Map() m.set_center(139.6225, 35.712, 9) m.add_layer( zones, {'min': 1, 'max': 3, 'palette': ['0000FF', '00FF00', 'FF0000']}, 'raster', ) # Make a display image for the vectors, add it to the map. display_image = ee.Image(0).updateMask(0).paint(vectors, '000000', 3) m.add_layer(display_image, {'palette': '000000'}, 'vectors') m
Perhatikan bahwa band pertama dalam input digunakan untuk mengidentifikasi wilayah homogen dan
band yang tersisa dikurangi sesuai dengan pengurangan yang disediakan, yang outputnya
ditambahkan sebagai properti ke vektor yang dihasilkan. Parameter geometry
menentukan cakupan pembuatan vektor. Secara umum, sebaiknya
tentukan zona minimum tempat vektor akan dibuat. Sebaiknya tentukan juga
scale
dan crs
untuk menghindari ambiguitas. Jenis outputnya adalah ‘polygon’
dengan poligon yang terbentuk dari zona homogen dari tetangga yang terhubung empat (yaitu eightConnected
salah). Dua parameter
terakhir, labelProperty
dan reducer
, menentukan bahwa poligon
output harus menerima properti dengan label zona dan rata-rata band lampu jalan
masing-masing.
Hasil yang dipetakan akan terlihat seperti area Tokyo yang ditampilkan dalam Gambar 1. Pemeriksaan poligon output menunjukkan bahwa setiap poligon memiliki properti yang menyimpan label zona ({1, 2, 3}) dan rata-rata band lampu malam, karena pengurangan rata-rata ditentukan.
