रेस्टर से वेक्टर में बदलना

Image (रास्टर) से FeatureCollection (वेक्टर) डेटा टाइप में बदलने के लिए, image.reduceToVectors() का इस्तेमाल करें. यह Earth Engine में वैक्टराइज़ेशन के लिए मुख्य तरीका है. साथ ही, यह अन्य तरह के रिड्यूसर के इनपुट के लिए क्षेत्र जनरेट करने में भी मददगार हो सकता है. reduceToVectors() तरीका, कनेक्ट किए गए पिक्सल के एक जैसे ग्रुप की सीमा पर, पॉलीगॉन के किनारों (इसके बजाय, सेंट्राइड या बाउंडिंग बॉक्स) बनाता है.

उदाहरण के लिए, जापान की 2012 की रात की रोशनी वाली इमेज. रात में रोशनी देने वाली लाइटों की संख्या को, डेवलपमेंट की तीव्रता के लिए प्रॉक्सी के तौर पर इस्तेमाल करें. नाइटलाइट पर अपनी पसंद के थ्रेशोल्ड का इस्तेमाल करके ज़ोन तय करें, ज़ोन को एक-बैंड इमेज में जोड़ें, और reduceToVectors() का इस्तेमाल करके ज़ोन को वेक्टर में बदलें:

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

Python API के बारे में जानकारी पाने और इंटरैक्टिव डेवलपमेंट के लिए geemap का इस्तेमाल करने के लिए, Python एनवायरमेंट पेज देखें.

import ee
import geemap.core as geemap
# 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

ध्यान दें कि इनपुट में पहले बैंड का इस्तेमाल, एक जैसे इलाकों की पहचान करने के लिए किया जाता है. साथ ही, दिए गए रिड्यूसर के हिसाब से बाकी बैंड को कम किया जाता है. इसका आउटपुट, नतीजे वाले वैक्टर में प्रॉपर्टी के तौर पर जोड़ा जाता है. geometry पैरामीटर से यह तय होता है कि वेक्टर किस हद तक बनाए जाने चाहिए. आम तौर पर, ऐसा करना अच्छा होता है कि आप कम से कम उतना ज़ोन तय करें जितने में वेक्टर बनाए जा सकते हैं. scale और crs की जानकारी देना भी एक अच्छा तरीका है, ताकि किसी तरह की गड़बड़ी न हो. आउटपुट टाइप ‘polygon’ है, जहां पॉलीगॉन, एक जैसे चार पड़ोसियों के ज़ोन से बनते हैं (यानी eightConnected गलत है). आखिरी दो पैरामीटर, labelProperty और reducer से पता चलता है कि आउटपुट पॉलीगॉन को ज़ोन लेबल और नाइटलाइट्स के बैंड के औसत के साथ एक प्रॉपर्टी मिलनी चाहिए.

मैप किया गया नतीजा, पहली इमेज में दिखाए गए टोक्यो इलाके जैसा दिखना चाहिए. आउटपुट पॉलीगॉन की जांच से पता चलता है कि हर पॉलीगॉन में एक प्रॉपर्टी होती है, जिसमें ज़ोन ({1, 2, 3}) का लेबल और नाइटलाइट्स बैंड का औसत सेव होता है. ऐसा इसलिए होता है, क्योंकि औसत रिड्यूसर तय किया गया है.

reduceToVectors फ़ंक्शन का आउटपुट
पहली इमेज. जापान के टोक्यो इलाके में, रात में रोशनी वाले ज़ोन. वेक्टर की सीमाएं काले रंग में दिखती हैं.