Verwenden Sie image.reduceToVectors()
, um von einem Image
-Datentyp (Raster) in einen FeatureCollection
-Datentyp (Vektor) zu konvertieren. Dies ist der primäre Mechanismus für die Vektorisierung in Earth Engine und kann zum Generieren von Regionen für die Eingabe in andere Arten von Reducern verwendet werden. Mit der Methode reduceToVectors()
werden Polygonkanten (optional auch Mittelpunkte oder Begrenzungsrahmen) an der Grenze homogener Gruppen verbundener Pixel erstellt.
Angenommen, Sie haben ein Nachtlichtbild von Japan aus dem Jahr 2012. Die digitale Nummer des Nachtlichts dient als Proxy für die Entwicklungsintensität. Definieren Sie Zonen mit beliebigen Grenzwerten für die Nachtlichter, kombinieren Sie die Zonen zu einem Einzelbandbild und vektorisieren Sie die Zonen mit reduceToVectors()
:
Code-Editor (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
Der erste Band in der Eingabe wird verwendet, um homogene Regionen zu identifizieren. Die verbleibenden Bänder werden gemäß dem angegebenen Reducer reduziert, dessen Ausgabe den resultierenden Vektoren als Eigenschaft hinzugefügt wird. Der Parameter geometry
gibt den Umfang an, in dem die Vektoren erstellt werden sollen. Im Allgemeinen empfiehlt es sich, eine minimale Zone anzugeben, über die Vektoren erstellt werden sollen. Es empfiehlt sich auch, scale
und crs
anzugeben, um Unklarheiten zu vermeiden. Der Ausgabetyp ist ‘polygon’
, wobei die Polygone aus homogenen Zonen mit vier verbundenen Nachbarn gebildet werden (d.h. eightConnected
ist falsch). Die letzten beiden Parameter, labelProperty
und reducer
, geben an, dass die Ausgabepolygone ein Attribut mit dem Zonenlabel bzw. dem Mittelwert der Nachtlichtbänder erhalten sollen.
Das kartierte Ergebnis sollte in etwa so aussehen wie der Großraum Tokio in Abbildung 1. Die Ausgabepolygone enthalten jeweils ein Attribut, das das Label der Zone ({1, 2, 3}) und den Mittelwert des Nachtlichtbands speichert, da der Mittelwert-Reducer angegeben ist.
