Оптимизация FeatureView

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

Следующий блок кода представляет собой пример экспорта FeatureCollection в FeatureView , в котором выделяются параметры оптимизации, описанные на этой странице.

Export.table.toFeatureView({
  collection: fooFc,
  assetId: 'foo-featureview-demo',
  description: 'foo-featureview-demo',
  maxFeaturesPerTile: 1500,
  thinningStrategy: 'HIGHER_DENSITY',
  thinningRanking: ['my-property DESC'],
  zOrderRanking: ['my-property DESC']
});

Максимальное количество функций на плитку

Параметр «Максимальное количество объектов на тайл» ( maxFeaturesPerTile ) определяет максимальное количество объектов, отображаемых на одном тайле карты. Это значение является верхней границей и может быть значительно ниже в зависимости от стратегии прореживания . Это значение может быть установлено в диапазоне от 1 до 2000. Более высокие значения показывают больше объектов на плитку, но загрузка плиток занимает больше времени.

Обратите внимание, что в следующей таблице показано, что по мере уменьшения значения параметра maxFeaturesPerTile увеличивается и количество объектов, пересекающих каждый фрагмент карты. На плитке может быть меньше максимального значения, но не более.

Все функции (для справки)

maxFeaturesPerTile: 5

Показывает не более 5 объектов на плитке.

maxFeaturesPerTile: 2

Показывает не более двух объектов на плитке.

Понижение рейтинга

Параметр ранжирования прореживания ( thinningRanking ) управляет приоритетом данных для прореживания на основе типа геометрии, размера объекта и значений свойств объекта. Он принимает набор правил, которые информируют алгоритм прореживания о том, какие функции следует прорезать раньше других при достижении maxFeaturesPerTile . Каждое правило включает свойство объекта, за которым следует направление сортировки (по возрастанию/ ASC или по убыванию/ DESC ); может быть одно или несколько правил. В дополнение к традиционным свойствам объектов, есть два специальных свойства, которые можно использовать для определения приоритета прореживания: .geometryType и .minZoomLevel .

  • .geometryType – характеризует объекты как точки, линии или полигоны. Для целей сортировки эти типы геометрии соответственно оцениваются как малые, средние и большие.
  • .minZoomLevel – минимальный уровень масштабирования карты, при котором объект может отображаться в виде плитки. Уровни масштабирования ниже этого значения не будут отображать объект, уровни масштабирования, превышающие или равные этому значению, могут отображать объект. Помните, что низкие уровни масштабирования представляют собой больший географический регион на каждый фрагмент карты, чем более высокие уровни масштабирования. Точечным объектам присвоено значение 0 (видно на всех уровнях масштабирования). Линейным и полигональным геометриям присваиваются значения на основе их границ (линии) или площади (полигоны): большие объекты имеют более низкие значения .minZoomLevel , чем меньшие объекты.

Правила ранжирования прореживания могут быть представлены в виде строки или списка строк, где имя свойства и желаемое направление сортировки разделены пробелом:

// String input format for setting thinning ranking based on 3 rules.
'my-property DESC, .geometryType ASC, .minZoomLevel ASC'

// List of strings input format for setting thinning ranking based on 3 rules.
['my-property DESC', '.geometryType ASC', '.minZoomLevel ASC']

Приведенные выше правила предписывают алгоритму прореживания определять приоритет объектов с большим атрибутом «my-property» (сначала тонкие объекты с меньшим значением «my-property»), определять приоритет объектов с меньшим типом геометрии (например, прореживать полигоны перед линиями и линии перед точками) и устанавливать приоритет объектов с меньшим минимальным уровнем масштабирования (точки над большими полигонами над меньшими полигонами).

В следующей таблице показано, как изменение правила thinningRanking для свойства size влияет на прорисовываемые объекты. Общее количество объектов на плитку (столбец «Все объекты») превышает 5, поэтому для ограничения рисуемых объектов применяется прореживание (столбец thinningRanking: 5 ). В первой строке объекты сортируются по size от большего к меньшему, что означает, что более крупные объекты имеют приоритет над меньшими объектами (объекты отрисовываются в порядке убывания размера до тех пор, пока не будет достигнуто значение maxFeaturesPerTile ). Во второй строке объекты сортируются по возрастанию размера, поэтому сначала отрисовываются самые маленькие объекты в порядке размера, пока не будет достигнуто значение maxFeaturesPerTile .

thinningRanking Все функции (для справки) maxFeaturesPerTile: 5

'size DESC'

Отдайте приоритет функциям большего size (сначала сократите функции меньшего size ).

'size ASC'

Расставьте приоритеты для функций меньшего size (сначала уменьшите функции с большим size )

Стратегия прореживания

Параметр стратегии прореживания ( thinningStrategy ) используется вместе с ранжированием прореживания ( thinningRanking ) для прореживания данных во время экспорта и улучшения производительности рендеринга. Поддерживаются две стратегии: HIGHER_DENSITY и GLOBALLY_CONSISTENT . При прореживании на определенном уровне масштабирования стратегия прореживания с более высокой плотностью означает, что каждый тайл может максимально приблизиться к пределу maxFeaturesPerTile без учета ранга объектов в других тайлах. Глобально согласованная стратегия прореживания означает, что если объект удаляется путем прореживания из любого тайла, то все объекты с равным или меньшим рангом прореживания будут удалены из всех тайлов, независимо от того, требует ли тайл прореживания (превышает предел maxFeaturesPerTile ). Используйте стратегию HIGHER_DENSITY для оптимизации плотности объектов и используйте стратегию GLOBALLY_CONSISTENT для оптимизации для согласованного представления ранга объектов между плитками.

В следующей таблице показано, как изменение thinningStrategy влияет на прореживание. В этом примере данные прореживаются с использованием формы/цвета точек. Синие круги, зеленые квадраты и красные треугольники имеют соответствующие ранги утончения от лучшего к худшему. Для каждой thinningStrategy ( HIGHER_DENSITY и GLOBALLY_CONSISTENT ) указано три разных значения maxFeaturesPerTile : число, достаточно большое, чтобы отобразить все объекты, 10 объектов и 9 объектов.

При использовании HIGHER_DENSITY и 10 maxFeaturesPerTile 6 красных треугольников (самый низкий приоритет в ранге прореживания) прореживаются из верхней левой плитки, а 1 красный треугольник прореживается из нижней левой плитки. При использовании HIGHER_DENSITY и 9 maxFeaturesPerTile 7 красных треугольников утончаются из верхней левой плитки, а красный треугольник и зеленый квадрат — из нижней левой плитки. В этих примерах каждый тайл утончается независимо, без учета ранга утончения объектов в соседних тайлах. В зависимости от характеристик данных эта стратегия прореживания может привести к тому, что соседние фрагменты карты будут сильно отличаться друг от друга, но максимально увеличит количество нарисованных объектов.

Напомним, что прореживание GLOBALLY_CONSISTENT означает, что если объект удаляется путем прореживания из любого тайла, то все остальные объекты с равным или худшим thinningRank также будут удалены. Если для maxFeaturesPerTile установлено значение 10, красные треугольники не отображаются ни на одной плитке, поскольку красный треугольник становится тоньше в левом верхнем и левом нижнем углу плиток. Если для maxFeaturesPerTile установлено значение 9, зеленые квадраты также не отображаются ни на одной плитке, поскольку зеленый квадрат в левом нижнем углу плитки становится тоньше. Эта стратегия прореживания с меньшей вероятностью приведет к созданию четкого внешнего вида плитки, чем стратегия HIGHER_DENSITY , но имеет потенциал для прореживания плиток до количества функций, намного ниже предела maxFeaturesPerTile .

thinningStrategy Все функции (для справки) maxFeaturesPerTile: 10 maxFeaturesPerTile: 9

'HIGHER_DENSITY'

Менее агрессивное истончение.

Поддерживает высокую плотность элементов за счет утонения внутри плитки.

'GLOBALLY_CONSISTENT'

Более агрессивное истончение.

Поддерживает глобально согласованный минимальный ранг прореживания за счет прореживания между фрагментами.

Рейтинг Z-порядка

Параметр ранжирования по z-порядку ( zOrderRanking ) управляет порядком перекрывающихся объектов. Он принимает набор правил, определяющих, какие объекты должны отображаться под другими или над другими, когда они перекрываются. Логика и формат правил для установки порядка объектов такие же, как и для прореживания ранжирования . Более подробную информацию см. в этом разделе.

Правила ранжирования по Z-порядку могут быть представлены в виде строки или списка строк, где имя свойства и желаемое направление сортировки разделены пробелом:

// String input format for setting z-order ranking based on 3 rules.
'my-property DESC, .geometryType ASC, .minZoomLevel ASC'

// List of strings input format for setting z-order ranking based on 3 rules.
['my-property DESC', '.geometryType ASC', '.minZoomLevel ASC']

Приведенные выше правила определяют, что объекты с большим значением «my-property» должны появляться под объектами с меньшим значением, объекты с меньшим типом геометрии должны появляться под объектами с большим типом геометрии (например, точки под линиями и линии под полигонами), а объекты с меньшим минимальным уровнем масштабирования (большие объекты) должны появляться под объектами с большим минимальным уровнем масштабирования (меньшие объекты).

В следующей таблице показано, как изменение правила zOrderRanking для свойства «размер» влияет на то, какие объекты появляются перед другими, когда они перекрываются. В первой строке объекты сортируются по размеру в порядке убывания. Это означает, что объекты большего размера должны отображаться под объектами меньшего размера (объекты большего размера рисуются первыми). И наоборот, во второй строке объекты сортируются по размеру в порядке возрастания, то есть объекты меньшего размера должны отображаться под объектами большего размера (объекты меньшего размера рисуются первыми).

zOrderRanking: 'size DESC'

Объекты меньшего size отображаются поверх объектов большего size .

zOrderRanking: 'size ASC'

Объекты большего size отображаются поверх объектов меньшего size .