برای تبدیل از یک Image
(رستر) به یک نوع داده FeatureCollection
(بردار)، از image.reduceToVectors()
استفاده کنید. این مکانیسم اولیه برای برداری در Earth Engine است و می تواند برای تولید مناطق برای ورودی به انواع دیگر کاهنده ها مفید باشد. متد reduceToVectors()
لبههای چند ضلعی (بهعنوان اختیاری مرکز یا جعبههای محدودکننده) در مرز گروههای همگن پیکسلهای متصل ایجاد میکند.
به عنوان مثال، تصویر 2012 از ژاپن را در نظر بگیرید. اجازه دهید شماره دیجیتال nightlights به عنوان یک پروکسی برای شدت توسعه عمل کند. مناطق را با استفاده از آستانه های دلخواه در چراغ های شب تعریف کنید، مناطق را در یک تصویر تک باند ترکیب کنید، مناطق را با استفاده از 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');
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 نشان داده شده است. بررسی چند ضلعی های خروجی نشان می دهد که هر چند ضلعی دارای خاصیتی است که برچسب ناحیه ({1، 2، 3}) و میانگین نوار چراغ های شب را ذخیره می کند، زیرا کاهنده میانگین مشخص شده است.
