Konversi Raster ke Vektor

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');

Penyiapan Python

Lihat halaman Lingkungan Python untuk mengetahui informasi tentang Python API dan penggunaan geemap untuk pengembangan interaktif.

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.

Output reduceToVectors
Gambar 1. Zona lampu malam di area Tokyo, Jepang. Batas vektor ditampilkan dalam warna hitam.