نمای کلی FeatureView

FeatureView یک نمایش تسریع شده از یک FeatureCollection فقط برای مشاهده است. برخلاف FeatureCollection که کاشی های نقشه شطرنجی آن به سرعت تولید می شوند، کاشی های شطرنجی FeatureView برای ارائه رندر سریع از پیش محاسبه شده اند. دارایی های FeatureView علاوه بر رندر سریعتر، نازک شدن ویژگی وابسته به سطح زوم را پیاده سازی می کنند. اثر این است که مجموعه داده‌های متراکم ممکن است در صورت کوچک‌نمایی ناقص به نظر برسند (ویژگی‌های کوچک ترسیم نمی‌شوند)، اما با بزرگ‌نمایی بیشتر داده‌ها قابل مشاهده می‌شوند، که می‌تواند زیبایی‌شناسی نقشه را در سطوح زوم پایین‌تر بهبود بخشد. رفتار نازک شدن یک مجموعه داده توسط چندین پارامتر بهینه‌سازی کنترل می‌شود که در حین صدور یک FeatureCollection به یک دارایی FeatureView تنظیم می‌شوند.

به‌عنوان یک دارایی فقط برای مشاهده، اشیاء FeatureView نمی‌توانند در محاسبات یا عبارات گنجانده شوند، اما می‌توانند در ویرایشگر کد جاوا اسکریپت و برنامه‌های Earth Engine به عنوان یک FeatureViewLayer تجسم و بازرسی شوند. آنها همچنین می توانند در برنامه های Google Maps API ادغام شوند.

ایجاد FeatureView

ایجاد FeatureView شامل تهیه FeatureCollection با داده های شما، فراخوانی تابع Export.table.toFeatureView و شروع کار صادرات است. مثال زیر صادرات نماهای مجموعه داده های چند ضلعی WDPA را نشان می دهد. در برنامه خود، از هر مجموعه داده FeatureCollection که در کاتالوگ داده موتور زمین بایگانی شده است استفاده کنید یا مجموعه خود را با آپلود یک مجموعه داده برداری به عنوان دارایی Earth Engine ایجاد کنید.

یک FeatureView می توان با استفاده از چندین پارامتر در تابع Export.table.toFeatureView سفارشی کرد.

  • maxFeaturesPerTile - حداکثر تعداد ویژگی های نمایش داده شده در کاشی نقشه را در یک سطح بزرگنمایی مشخص تعیین می کند. از این پارامتر برای بهینه سازی سرعت یا چگالی ویژگی استفاده کنید.
  • thinningStrategy - کنترل می کند که آیا نازک شدن ویژگی برای یک کاشی معین و سطح زوم باید برای تراکم بالاتر یا ثبات در تراکم بین کاشی ها بهینه شود یا خیر. توجه داشته باشید که بهینه سازی برای تراکم بالاتر می تواند باعث شود که مرزهای کاشی متمایز شوند، زیرا چگالی ویژگی در هر کاشی مستقل است.
  • thinningRanking - اولویت نازک شدن ویژگی را مشخص می کند. به عنوان مثال، می توانید نازک شدن را برای هدف قرار دادن حفظ یک ویژگی خاص با مقادیر بالا بهینه کنید - به عبارت دیگر، با بزرگنمایی، ویژگی هایی که مقدار کمی برای ویژگی انتخاب شده دارند ابتدا نازک می شوند و مهم ترین ویژگی ها (طبق قوانین شما) قابل مشاهده خواهند بود.
  • zOrderRanking - ترتیب z (ترتیب پشته) ویژگی های نمایش داده شده روی نقشه را مشخص می کند. این پارامتر نحوه نمایش ویژگی های همپوشانی را کنترل می کند و به شما امکان می دهد قوانین اولویت را بر اساس ویژگی های ویژگی، نوع هندسه و سطح بزرگنمایی تنظیم کنید. برای مثال، می‌توانید ویژگی‌هایی را با مقادیر بالای یک ویژگی خاص اولویت‌بندی کنید تا روی ویژگی‌های متقاطع با مقادیر کم قرار بگیرند.

برای جزئیات بیشتر در مورد این پارامترها و آرگومان های پذیرفته شده آنها به صفحه FeatureView Optimization مراجعه کنید.

در مثال زیر، آرگومان‌های مشخص شده برای این پارامترها یک FeatureView ایجاد می‌کنند که در آن حداکثر ویژگی‌های هر کاشی در یک سطح بزرگ‌نمایی معین 1500 است، چگالی ویژگی‌ها در هر کاشی مستقل است و اجازه می‌دهد به حداکثر 1500 برسد، چند ضلعی‌های کوچک‌تر ابتدا نازک می‌شوند، و چند ضلعی‌های کوچک‌تر روی چند ضلعی‌های بزرگ‌تر قرار می‌گیرند.

ویرایشگر کد (جاوا اسکریپت)

// Import the WDPA feature collection.
var wdpa = ee.FeatureCollection('WCMC/WDPA/current/polygons');

// Export the WDPA FeatureCollection as a FeatureView asset.
Export.table.toFeatureView({
  collection: wdpa,
  assetId: 'wdpa-featureview-demo',
  description: 'wdpa-featureview-demo',
  maxFeaturesPerTile: 1500,
  thinningStrategy: 'HIGHER_DENSITY',
  thinningRanking: ['REP_AREA DESC'],
  zOrderRanking: ['REP_AREA DESC'],
});

اجرای قطعه کد بالا در ویرایشگر کد، یک کار صادراتی ایجاد می کند. برای شروع صادرات، وظیفه را اجرا کنید.

مکان های دارایی FeatureView

دارایی های FeatureView را می توان در کاتالوگ داده های عمومی و در میان دارایی های شخصی شما در برگه دارایی های ویرایشگر کد پیدا کرد. همه دارایی‌های FeatureCollection مربوطه در کاتالوگ داده‌ها دارای یک دارایی FeatureView همراه با تنظیمات عمومی قابل اجرا هستند. بایگانی دارایی شخصی شما شامل هر گونه دارایی FeatureView است که ایجاد می کنید .

وارد کردن دارایی های FeatureView به اسکریپت ها

دارایی‌های FeatureView را می‌توان با استفاده از دکمه‌های موجود در گفتگوهای دارایی ویرایشگر کد و ورودی‌های دارایی شخصی، و با ارائه شناسه دارایی FeatureView به عنوان ورودی به سازنده ui.Map.FeatureViewLayer ، به اسکریپت‌های ویرایشگر کد وارد کرد.

گفتگوی دارایی کاتالوگ داده

دیالوگ‌های دارایی جدول کاتالوگ داده، که از نوار جستجوی ویرایشگر کد قابل دسترسی هستند، دارای یک دکمه واردات در پایین سمت راست با منوی کشویی هستند. از منوی کشویی، "Import FeatureView" را انتخاب کنید. دارایی در قسمت واردات در بالای اسکریپت شما گنجانده می شود.

گفتگوی دارایی های شخصی

گفتگوهای دارایی FeatureView شخصی که با انتخاب یک دارایی از برگه دارایی ویرایشگر کد قابل دسترسی هستند، دارای یک دکمه Import در سمت راست بالا هستند. با فعال کردن دکمه، دارایی در قسمت Imports در بالای اسکریپت شما قرار می گیرد. همچنین می‌توانید از دکمه میانبر وارد کردن (نماد فلش رو به راست) استفاده کنید که وقتی ماوس را روی یک دارایی در برگه Assets نگه می‌دارید ظاهر می‌شود.

شناسه دارایی

دارایی های FeatureView دارای شناسه ای هستند که می تواند به عنوان ورودی سازنده ui.Map.FeatureViewLayer ارائه شود که به شما امکان دسترسی به دارایی موجود در اسکریپت خود را می دهد. قطعات وارداتی از پیش ساخته شده را می توان در صفحات دارایی کاتالوگ داده و گفتگوهای دارایی در ویرایشگر کد پیدا کرد.

شکل 1. دیالوگ دارایی کاتالوگ داده که روش های واردات FeatureView را برجسته می کند.

متادیتا FeatureView

اطلاعات FeatureView و ابرداده ها در گفتگوهای دارایی ذکر شده در بخش مکان های دارایی FeatureView در بالا موجود است. علاوه بر توضیحات و ویژگی هایی که ممکن است با منبع FeatureCollection به اشتراک گذاشته شود، پنج ویژگی منحصر به فرد برای FeatureView وجود دارد. آنها شامل تنظیمات پارامتر جذب توصیف شده در بخش Creating a FeatureView و sourceVersion می‌شوند که «آخرین تغییر» مهر زمانی دارایی جدول است که FeatureView از آن ایجاد شده است. شکل 1 در بالا ویژگی های خاص FeatureView در گفتگوی دارایی کاتالوگ داده نشان می دهد. مانند سایر دارایی‌ها، می‌توانید ویژگی‌ها را به صورت برنامه‌نویسی از فرهنگ لغت برگردانده شده توسط ee.data.getAsset واکشی کنید.

تجسم FeatureView

یک شی FeatureView را می توان در ویرایشگر کد، برنامه های Earth Engine و Google Maps تجسم کرد.

ویرایشگر کد

ویرایشگر کد شامل مولفه ui.Map.FeatureViewLayer برای تجسم دارایی های FeatureView بر روی نقشه است. مثال زیر یک شناسه دارایی FeatureView را تعریف می کند، دارایی را به عنوان یک FeatureViewLayer وارد می کند و آن را روی نقشه نمایش می دهد.

ویرایشگر کد (جاوا اسکریپت)

// Define the FeatureView asset ID.
var assetId = 'WCMC/WDPA/current/polygons_FeatureView';

// Import the FeatureView asset as a FeatureViewLayer.
var layer = ui.Map.FeatureViewLayer(assetId);

// Add the FeatureViewLayer to the map.
Map.add(layer);

یک ظاهر طراحی شده

می‌توانید FeatureViewLayer را با ارسال یک فرهنگ لغت به تابع ui.Map.FeatureViewLayer یا اضافه کردن آنها به یک لایه با استفاده از متد setVisParams استایل دهید. در زیر نمونه ای از سبک ها آورده شده است:

  • رنگ ها را بر اساس ویژگی "MARINE" ترسیم کنید (خواه منطقه حفاظت شده به طور کامل یا جزئی در محیط دریایی قرار گیرد)،
  • پر کردن رنگ بر اساس ویژگی "IUCN_CAT" (رده اتحادیه بین المللی حفاظت از طبیعت (IUCN))، و
  • کدورت را بر اساس اندازه منطقه محافظت شده که توسط ویژگی "REP_AREA" تعریف شده است، پر کنید .

برای جزئیات بیشتر در مورد گزینه های استایل موجود، از صفحه FeatureView Styling دیدن کنید.

ویرایشگر کد (جاوا اسکریپت)

// Set visualization properties for the defined layer.
layer.setVisParams({
  color: {
    property: 'MARINE',
    categories: [
      ['0', 'purple'],
      ['1', 'green'],
      ['2', 'blue'],
    ]
  },
  fillColor: {
    property: 'IUCN_CAT',
    defaultValue: 'd3d3d3',
    categories: [
      ['Ia', 'a6cee3'],
      ['Ib', '1f78b4'],
      ['II', 'b2df8a'],
      ['III', '33a02c'],
      ['IV', 'fb9a99'],
      ['V', 'e31a1c'],
      ['VI', 'fdbf6f'],
    ]
  },
  fillOpacity: {
    property: 'REP_AREA',
    mode: 'interval',
    palette: [
      [0, 0.5],
      [80, 0.35],
      [2000, 0.22],
      [5000, 0.15],
    ],
  },
  width: 1.0,
  pointSize: 6.0,
});

فیلتر کردن

قوانین فیلتر را می توان برای سبک انتخابی یا پنهان کردن ویژگی ها بر اساس ویژگی های آنها اعمال کرد. به عنوان مثال، برای فیلتر کردن مناطق محافظت شده کوچکتر از یک منطقه خاص که توسط ویجت اسلایدر ارائه شده است، می توانید از کد زیر استفاده کنید. برای کسب اطلاعات بیشتر در مورد فیلد rules ، به بخش قوانین خاص صفحه FeatureView Styling مراجعه کنید.

ویرایشگر کد (جاوا اسکریپت)

// Define the FeatureView asset ID.
var assetId = 'WCMC/WDPA/current/polygons_FeatureView';

// Import the FeatureView asset as a FeatureViewLayer.
var layer = ui.Map.FeatureViewLayer(assetId, null, 'WDPA FeatureViewLayer');

// Callback function to update FeatureViewLayer style.
var updateVisParams = function() {
  layer.setVisParams({
    color: {
      property: 'MARINE',
      categories: [
        ['0', 'purple'],
        ['1', 'green'],
        ['2', 'blue'],
      ]
    },
    fillColor: {
      property: 'IUCN_CAT',
      defaultValue: 'd3d3d3',
      categories: [
        ['Ia', 'a6cee3'],
        ['Ib', '1f78b4'],
        ['II', 'b2df8a'],
        ['III', '33a02c'],
        ['IV', 'fb9a99'],
        ['V', 'e31a1c'],
        ['VI', 'fdbf6f'],
      ]
    },
    fillOpacity: {
      property: 'REP_AREA',
      mode: 'interval',
      palette: [
        [0, 0.5],
        [80, 0.35],
        [2000, 0.22],
        [5000, 0.15],
      ],
    },
    width: 1.0,
    pointSize: 6.0,
    rules: [
      {
        filter: ee.Filter.lt('REP_AREA', filterSlider.getValue()),
        isVisible: false,
      },
    ],
  });
};

// Slider widget that calls the updateVisParams function on change.
var filterSlider = ui.Slider({
  min: 0,
  max: 10000,
  step: 10,
  value: 0,
  style: { stretch: 'horizontal'},
  onChange: updateVisParams,
});
var filterSliderLabel = ui.Label(
  'Adjust slider to hide features less than the specified area (km²)');

// Add the slider to the map.
Map.add(ui.Panel([filterSliderLabel, filterSlider]));

// Initialize the FeatureViewLayer style.
updateVisParams();

// Add the FeatureViewLayer to the map.
Map.add(layer);

شکل 2. تجسم FeatureViewLayer با ویجت لغزنده برای پنهان کردن ویژگی های کوچکتر از ناحیه مشخص شده.

Google Maps API

فرآیند تجسم یک دارایی FeatureView با استفاده از Google Maps API یک فرآیند چهار قسمتی است: یک کلید tiles با استفاده از ee.data.getFeatureViewTilesKey به دست آورید، آن را به نمونه ای از FeatureViewTileSource منتقل کنید، یک ee.layer.ImageOverlay بسازید و سپس همپوشانی را به google.maps.Map خود اضافه کنید. کد نمونه برای ساخت ImageOverlay در جاوا اسکریپت در زیر نشان داده شده است.

var tilesKey = ee.data.getFeatureViewTilesKey({
  assetId: 'WCMC/WDPA/current/polygons_FeatureView',
  visParams: {  },
});

var tileSource = new ee.layers.FeatureViewTileSource(tilesKey);
var overlay = new ee.layers.ImageOverlay(tileSource);

پس از انجام این کار، می‌توانید مطابق شکل زیر پوشش را به نمونه google.maps.Map خود اضافه کنید.

// embeddedMap is your google.maps.Map instance.
embeddedMap.overlayMapTypes.setAt(0, overlay);

بازرسی FeatureView

یک لایه FeatureViewLayer که به نقشه پیش‌فرض ویرایشگر کد اضافه شده است را می‌توان با استفاده از ابزار Inspector بازرسی کرد. عملکرد مانند یک FeatureCollection است. توجه داشته باشید که نتایج برگردانده شده برای مکان کلیک شده فقط ویژگی هایی را فهرست می کند که در سطح بزرگنمایی فعلی قابل مشاهده هستند. هندسه ها برای ویژگی های بازرسی شده نشان داده نمی شوند زیرا آنها به عنوان بخشی از فرآیند صادرات FeatureView ساده شده اند.

شکل 3. بازرسی یک FeatureViewLayer . بازرس لایه، ویژگی ها، شناسه دارایی و پارامترهای تجسم را نشان می دهد.