Optimización de FeatureView

Cuando exportas un FeatureCollection como un recurso FeatureView, puedes establecer parámetros que prioricen qué componentes se renderizan en un nivel de zoom determinado (adelgazamiento) y cómo se ordenan los componentes superpuestos (orden en Z). Estos parámetros de configuración afectan la velocidad y las características de visualización de los objetos FeatureView. En las siguientes secciones, se describen los parámetros de optimización y se demuestra su impacto mediante diagramas conceptuales en los que las tarjetas del mapa se delinean con líneas punteadas, los componentes visibles son polígonos de línea continua y los componentes descartados (adelgazados) son polígonos con líneas punteadas y sin relleno.

El siguiente bloque de código es un ejemplo de una exportación de FeatureCollection a FeatureView que destaca los parámetros de optimización que se describen en esta página.

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']
});

Cantidad máxima de componentes por tarjeta

El parámetro max features per tile (maxFeaturesPerTile) define la cantidad máxima de componentes que se renderizarán en una sola tarjeta de mapa. Este valor es un límite superior y puede ser mucho más bajo según la estrategia de reducción. Este valor se puede establecer en cualquier valor entre 1 y 2,000. Los valores más altos muestran más componentes por tarjeta, pero las tarjetas tardan más en cargarse.

En la siguiente tabla, observa que, a medida que disminuye el valor del parámetro maxFeaturesPerTile, también lo hace la cantidad de componentes que se cruzan en cada tarjeta del mapa. Una tarjeta puede tener menos que el máximo, pero no más.

Todas las funciones (como referencia)

maxFeaturesPerTile: 5

No muestra más de 5 componentes por tarjeta.

maxFeaturesPerTile: 2

No muestra más de 2 componentes por tarjeta.

Clasificación de adelgazamiento

El parámetro de clasificación de adelgazamiento (thinningRanking) controla cómo se priorizan los datos para el adelgazamiento en función del tipo de geometría, el tamaño de los componentes y los valores de las propiedades de los componentes. Acepta un conjunto de reglas que informan al algoritmo de adelgazamiento sobre qué componentes adelgazar antes que otros cuando se alcanza maxFeaturesPerTile. Cada regla incluye una propiedad de componente seguida de la dirección de ordenamiento (ascendente/ASC o descendente/DESC). Puede haber una o más reglas. Además de las propiedades de componentes tradicionales, hay dos propiedades especiales que se pueden usar para priorizar el adelgazamiento: .geometryType y .minZoomLevel.

  • .geometryType: Caracteriza los componentes como puntos, líneas o polígonos. Estos tipos de geometría se cuantifican, respectivamente, como pequeños, medianos y grandes para ordenarlos.
  • .minZoomLevel: Es el nivel de zoom más bajo del mapa en el que un componente puede renderizarse en un mosaico. Los niveles de zoom por debajo de este valor no mostrarán la función, mientras que los niveles de zoom superiores o iguales a este valor sí pueden mostrarla. Recuerda que los niveles de zoom bajos representan una región geográfica más grande por mosaico de mapa que los niveles de zoom más altos. A los componentes de punto se les asigna un valor de 0 (visible en todos los niveles de zoom). A las geometrías de línea y polígono se les asignan valores según sus límites (líneas) o área (polígonos): los componentes grandes tienen valores de .minZoomLevel más bajos que los componentes más pequeños.

Las reglas de clasificación de adelgazamiento se pueden proporcionar como una cadena o una lista de cadenas en la que un nombre de propiedad y la dirección de ordenamiento deseada están separados por un espacio:

// 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']

Las reglas anteriores dirigen al algoritmo de adelgazamiento para que priorice los componentes con un atributo "my-property" más grande (adelgazar los componentes con un valor "my-property" más pequeño primero), priorizar los componentes con un tipo de geometría más pequeño (por ejemplo, adelgazar los polígonos antes que las líneas y las líneas antes que los puntos) y priorizar los componentes con un nivel de zoom mínimo más pequeño (puntos sobre polígonos grandes sobre polígonos más pequeños).

En la siguiente tabla, se ilustra cómo el cambio de la regla thinningRanking para una propiedad size afecta a qué componentes se dibujan. La cantidad total de elementos por tarjeta ("Todas las características") es superior a 5, por lo que se aplica el adelgazamiento para limitar los elementos que se dibujan (columna thinningRanking: 5). En la primera fila, los componentes se ordenan por size de mayor a menor, lo que significa que los componentes más grandes tienen prioridad sobre los más pequeños (los componentes se dibujan en orden descendente por tamaño hasta que se alcanza maxFeaturesPerTile). En la segunda fila, los componentes se ordenan por tamaño ascendente, por lo que los componentes más pequeños se dibujan primero, en orden de tamaño, hasta que se alcanza maxFeaturesPerTile.

thinningRanking Todas las funciones (como referencia) maxFeaturesPerTile: 5

'size DESC'

Prioriza los componentes con size más grandes (primero, adelgaza los componentes con size más pequeños).

'size ASC'

Prioriza las funciones con size más pequeños (primero, reduce las funciones con size más grandes)

Estrategia de adelgazamiento

El parámetro de estrategia de reducción (thinningStrategy) se usa junto con la clasificación de reducción (thinningRanking) para reducir los datos en el momento de la exportación y mejorar el rendimiento de la renderización. Se admiten dos estrategias: HIGHER_DENSITY y GLOBALLY_CONSISTENT. Cuando se adelgaza en un nivel de zoom particular, una estrategia de adelgazamiento de mayor densidad significa que cada tarjeta puede acercarse lo más posible al límite de maxFeaturesPerTile sin tener en cuenta la clasificación de los componentes en otras tarjetas. La estrategia de adelgazamiento coherente a nivel global significa que, si se quita un componente de cualquier tarjeta mediante el adelgazamiento, se quitarán de todas las tarjetas todos los componentes con el mismo rango de adelgazamiento o uno inferior, independientemente de si una tarjeta requiere adelgazamiento (supera el límite de maxFeaturesPerTile). Usa la estrategia HIGHER_DENSITY para optimizar la densidad de componentes y la estrategia GLOBALLY_CONSISTENT para optimizar la representación coherente entre tarjetas del ranking de componentes.

En la siguiente tabla, se muestra cómo el cambio de thinningStrategy afecta el adelgazamiento. En este ejemplo, los datos se diluyen con la forma o el color de los puntos. Los círculos azules, los cuadrados verdes y los triángulos rojos tienen las clasificaciones de reducción correspondientes de mejor a peor. Para cada thinningStrategy (HIGHER_DENSITY y GLOBALLY_CONSISTENT), se especifican tres valores diferentes para maxFeaturesPerTile: un número lo suficientemente grande como para mostrar todas las funciones, 10 funciones y 9 funciones.

Con HIGHER_DENSITY y 10 maxFeaturesPerTile, se eliminan 6 triángulos rojos (la prioridad más baja en la clasificación de adelgazamiento) de la tarjeta superior izquierda y 1 triángulo rojo de la tarjeta inferior izquierda. Con HIGHER_DENSITY y 9 maxFeaturesPerTile, se adelgazan 7 triángulos rojos de la tarjeta de la esquina superior izquierda y un triángulo rojo y un cuadrado verde de la tarjeta de la esquina inferior izquierda. En estos ejemplos, cada mosaico se adelgaza de forma independiente, sin tener en cuenta el rango de adelgazamiento de los componentes en mosaicos vecinos. Según las características de los datos, esta estrategia de adelgazamiento puede hacer que las tarjetas de mapa adyacentes se vean claramente diferentes entre sí, pero maximiza la cantidad de componentes dibujados.

Recuerda que el adelgazamiento de GLOBALLY_CONSISTENT significa que, si se quita una función de cualquier tarjeta, también se quitarán todas las demás funciones con una thinningRank igual o peor. Con maxFeaturesPerTile establecido en 10, los triángulos rojos no aparecen en ninguna tarjeta porque un triángulo rojo se adelgaza en las tarjetas de la esquina superior izquierda y de la esquina inferior izquierda. Con maxFeaturesPerTile establecido en 9, los cuadrados verdes tampoco aparecen en ninguna tarjeta porque un cuadrado verde se adelgaza en la tarjeta inferior izquierda. Es menos probable que esta estrategia de reducción produzca la apariencia distinta de las tarjetas que puede producir la estrategia HIGHER_DENSITY, pero tiene el potencial de reducir las tarjetas a una serie de componentes muy por debajo del límite de maxFeaturesPerTile.

thinningStrategy Todas las funciones (como referencia) maxFeaturesPerTile: 10 maxFeaturesPerTile: 9

'HIGHER_DENSITY'

Adelgazamiento menos agresivo.

Mantiene una alta densidad de componentes a través del adelgazamiento intrateja.

'GLOBALLY_CONSISTENT'

Adelgazamiento más agresivo.

Mantiene un rango de adelgazamiento mínimo coherente a nivel global a través del adelgazamiento entre mosaicos.

Clasificación de orden en Z

El parámetro de clasificación de orden en Z (zOrderRanking) controla el orden de los atributos superpuestos. Acepta un conjunto de reglas que definen qué componentes deben aparecer debajo o sobre otros cuando se superponen. La lógica y el formato de las reglas para establecer el orden de las funciones son los mismos que los de la clasificación de reducción. Consulta esa sección para obtener más detalles.

Las reglas de clasificación en orden Z se pueden proporcionar como una cadena o una lista de cadenas en la que un nombre de propiedad y la dirección de ordenamiento deseada están separados por un espacio:

// 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']

Las reglas anteriores especifican que los componentes con un valor de "my-property" más alto deben aparecer debajo de los componentes con un valor más bajo, los componentes con un tipo de geometría más pequeño deben aparecer debajo de los componentes con un tipo de geometría más grande (por ejemplo, puntos debajo de líneas y líneas debajo de polígonos) y los componentes con un nivel de zoom mínimo más bajo (componentes más grandes) deben aparecer debajo de los componentes con un nivel de zoom mínimo más alto (componentes más pequeños).

En la siguiente tabla, se muestra cómo cambiar la regla zOrderRanking de una propiedad "size" afecta a qué componentes aparecen frente a otros cuando se superponen. En la primera fila, los componentes se ordenan por tamaño en orden descendente, lo que significa que los componentes de mayor tamaño deben aparecer debajo de los más pequeños (los componentes más grandes se dibujan primero). Por el contrario, en la segunda fila, los componentes se ordenan por tamaño en orden ascendente, lo que significa que los componentes de tamaño más pequeño deben aparecer debajo de los componentes más grandes (los componentes más pequeños se dibujan primero).

zOrderRanking: 'size DESC'

Los componentes con size más pequeños aparecen sobre los componentes con size más grandes.

zOrderRanking: 'size ASC'

Los componentes con size más grandes aparecen sobre los componentes con size más pequeños.