Обзор FeatureView

FeatureView — это ускоренное представление FeatureCollection , доступное только для просмотра. В отличие от FeatureCollection , чьи фрагменты растровой карты генерируются «на лету», растровые фрагменты FeatureView предварительно вычисляются для обеспечения быстрого рендеринга. Помимо ускорения рендеринга, ресурсы FeatureView реализуют прореживание объектов в зависимости от уровня масштабирования. В результате плотные наборы данных могут выглядеть неполными при уменьшении масштаба (небольшие объекты не прорисовываются), но при увеличении масштаба становится видно больше данных, что может улучшить эстетику карты при более низких уровнях масштабирования. Поведение прореживания набора данных контролируется несколькими параметрами оптимизации , которые задаются во время экспорта FeatureCollection в актив FeatureView .

Объекты FeatureView , доступные только для просмотра, не могут быть включены в вычисления или выражения, но их можно визуализировать и проверять в редакторе кода JavaScript и приложениях Earth Engine как FeatureViewLayer . Их также можно интегрировать в приложения Google Maps API.

Создание FeatureView

Создание FeatureView включает подготовку FeatureCollection с вашими данными, вызов функции Export.table.toFeatureView и запуск задачи экспорта. В следующем примере демонстрируется экспорт представлений набора данных полигонов WDPA . В своем приложении используйте любой набор данных FeatureCollection заархивированный в каталоге данных Earth Engine, или создайте свой собственный, загрузив набор векторных данных в качестве ресурса Earth Engine.

FeatureView можно настроить с помощью нескольких параметров в функции Export.table.toFeatureView .

  • maxFeaturesPerTile — определяет максимальное количество объектов, отображаемых на фрагменте карты при заданном уровне масштабирования. Используйте этот параметр для оптимизации скорости или плотности объектов.
  • thinningStrategy — определяет, следует ли оптимизировать прореживание объектов для данной плитки и уровня масштабирования для более высокой плотности или единообразия плотности по всем плиткам. Обратите внимание, что оптимизация для более высокой плотности может привести к тому, что границы фрагментов станут отчетливыми, поскольку плотность объектов на фрагмент не зависит.
  • thinningRanking — определяет приоритет прореживания объектов. Например, вы можете оптимизировать прореживание, чтобы сохранить определенное свойство объекта с высокими значениями. Другими словами, при уменьшении масштаба сначала будут прореживаться объекты с низким значением выбранного свойства, оставляя наиболее важные объекты (в соответствии с вашими правилами) видимыми.
  • zOrderRanking — определяет z-порядок (порядок стека) объектов, отображаемых на карте. Этот параметр управляет отображением перекрывающихся объектов, позволяя вам устанавливать правила приоритета на основе свойств объекта, типа геометрии и уровня масштабирования. Например, вы можете назначить приоритет объектам с высокими значениями определенного свойства, чтобы они накладывались поверх пересекающихся объектов с низкими значениями.

См . страницу оптимизации FeatureView для получения более подробной информации об этих параметрах и их принимаемых аргументах.

В приведенном ниже примере указанные аргументы для этих параметров создают FeatureView , где максимальное количество объектов на плитку при заданном уровне масштабирования равно 1500, плотность объектов на плитку независима и может достигать максимума 1500, меньшие полигоны сначала прореживаются, а меньшие полигоны лежат поверх больших.

Редактор кода (JavaScript)

// 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 .

Диалоговое окно ресурса каталога данных

Диалоговые окна ресурсов таблицы каталога данных, доступные из панели поиска редактора кода, имеют кнопку «Импорт» в правом нижнем углу с раскрывающимся меню. В раскрывающемся меню выберите «Импортировать FeatureView». Ресурс будет включен в раздел «Импорт» в верхней части вашего скрипта.

Диалоговое окно «Личный актив»

Диалоговые окна ресурсов Personal FeatureView , доступные при выборе ресурса на вкладке «Ресурсы» редактора кода, имеют кнопку «Импорт» в правом верхнем углу. Активация кнопки добавит актив в раздел «Импорт» в верхней части вашего скрипта. Вы также можете использовать кнопку быстрого доступа к импорту (значок со стрелкой вправо), которая появляется при наведении курсора на ресурс на вкладке «Ресурсы» .

Идентификатор актива

Ресурсы FeatureView имеют идентификатор, который можно предоставить в качестве входных данных конструктору ui.Map.FeatureViewLayer , который дает вам доступ к активу в вашем скрипте. Предварительно созданные фрагменты импорта можно найти на страницах ресурсов каталога данных и в диалоговых окнах ресурсов в редакторе кода.

Рис. 1. Диалоговое окно ресурса каталога данных, в котором показаны методы импорта FeatureView .

Метаданные FeatureView

Информация и метаданные FeatureView доступны в диалоговых окнах ресурсов, упомянутых выше в разделе « Местоположения активов FeatureView» . Помимо описания и свойств, которые могут быть общими с исходным FeatureCollection , существует пять свойств, уникальных для FeatureView . Они включают в себя настройки параметров приема, описанные в разделе «Создание FeatureView» , и sourceVersion , который является меткой времени «последнего изменения» ресурса таблицы, из которого был создан FeatureView . На рисунке 1 выше показаны свойства, специфичные для FeatureView в диалоговом окне ресурсов каталога данных. Как и другие ресурсы, вы также можете программно получать свойства из словаря, возвращаемого ee.data.getAsset .

Визуализация FeatureView

Объект FeatureView можно визуализировать в редакторе кода, приложениях Earth Engine и Google Maps.

Редактор кода

Редактор кода включает компонент ui.Map.FeatureViewLayer для визуализации ресурсов FeatureView на карте. В следующем примере определяется идентификатор актива FeatureView , импортируется актив как FeatureViewLayer и отображается на карте.

Редактор кода (JavaScript)

// 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 . Ниже приведен пример стиля:

  • цвета контуров на основе свойства «МОРСКОЙ» (независимо от того, находится ли охраняемая территория полностью или частично в морской среде),
  • цвет заливки на основе свойства «IUCN_CAT» (категория Международного союза охраны природы (МСОП)) и
  • заполняйте непрозрачность в зависимости от размера защищенной области, определенной свойством «REP_AREA».

Посетите страницу «Стилизация FeatureView», чтобы получить более подробную информацию о доступных вариантах стиля.

Редактор кода (JavaScript)

// 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 .

Редактор кода (JavaScript)

// 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 с виджетом-ползунком для скрытия функций, размер которых меньше указанной области.

API Карт Google

Процесс визуализации ресурса FeatureView с помощью API Google Maps состоит из четырех этапов: получение ключа плитки с помощью ee.data.getFeatureViewTilesKey , передача его в экземпляр FeatureViewTileSource , создание ee.layer.ImageOverlay , а затем добавление наложения в экземпляр google.maps.Map . Пример кода для создания ImageOverlay в JavaScript показан ниже.

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 , добавленный к карте редактора кода по умолчанию, можно проверить с помощью инструмента «Инспектор» . Функциональность такая же, как у FeatureCollection . Обратите внимание, что в результатах, возвращаемых для выбранного местоположения, перечислены только объекты, видимые на текущем уровне масштабирования. Геометрия проверяемых объектов не отображается, поскольку они упрощаются в рамках процесса экспорта FeatureView .

Рисунок 3. Проверка FeatureViewLayer . Инспектор показывает слой, объекты, идентификатор актива и параметры визуализации.