Ottimizzazione di FeatureView

Quando esporti un FeatureCollection come risorsa FeatureView, puoi impostare parametri che danno la priorità alle funzionalità da visualizzare a un determinato livello di zoom (assottigliamento) e all'ordine delle funzionalità sovrapposte (ordine Z). Queste impostazioni influiscono sulla velocità e sulle caratteristiche di visualizzazione degli oggetti FeatureView. Le seguenti sezioni descrivono i parametri di ottimizzazione e ne mostrano l'impatto utilizzando diagrammi concettuali in cui i riquadri della mappa sono delineati da linee tratteggiate, le funzionalità visibili sono poligoni con linee continue e le funzionalità eliminate (assottigliate) sono poligoni con linee tratteggiate e senza riempimento.

Il seguente blocco di codice è un esempio di esportazione da FeatureCollection a FeatureView che mette in evidenza i parametri di ottimizzazione descritti in questa pagina.

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

Elementi massimi per riquadro

Il parametro elementi massimi per tile (maxFeaturesPerTile) definisce il numero massimo di elementi da visualizzare in un singolo tile della mappa. Questo valore è un limite superiore e potrebbe essere notevolmente inferiore a seconda della strategia di sfoltimento. Questo valore può essere impostato su qualsiasi valore tra 1 e 2000. I valori più elevati mostrano più funzionalità per riquadro, ma il caricamento dei riquadri richiede più tempo.

Nella tabella seguente, tieni presente che, con la diminuzione del valore del parametro maxFeaturesPerTile, diminuisce anche il numero di elementi che intersecano ogni riquadro della mappa. Un elemento può avere meno elementi del massimo, ma non di più.

Tutte le funzionalità (come riferimento)

maxFeaturesPerTile: 5

Non mostrare più di 5 elementi per riquadro.

maxFeaturesPerTile: 2

Non mostrare più di due elementi per riquadro.

Ranking di assottigliamento

Il parametro di ranking per l'assottigliamento (thinningRanking) controlla in che modo i dati vengono assegnati come priorità per l'assottigliamento in base al tipo di geometria, alle dimensioni degli elementi e ai valori delle proprietà degli elementi. Accetta un insieme di regole che informano l'algoritmo di sfoltimento su quali elementi sfoltire prima di altri quando viene raggiunto il valore maxFeaturesPerTile. Ogni regola include una proprietà della funzionalità seguita dall'ordine di ordinamento (crescente/ASC o decrescente/DESC). Possono essere presenti una o più regole. Oltre alle proprietà delle funzionalità tradizionali, esistono due proprietà speciali che possono essere utilizzate per dare la priorità al rilascio: .geometryType e .minZoomLevel.

  • .geometryType: caratterizza gli elementi come punti, linee o poligoni. Questi tipi di geometria sono quantificati rispettivamente come piccoli, medi e grandi ai fini dell'ordinamento.
  • .minZoomLevel: il livello di zoom della mappa più basso a cui un elemento può essere visualizzato in un riquadro. I livelli di zoom inferiori a questo valore non mostrano la funzionalità, mentre quelli superiori o uguali a questo valore potrebbero farlo. Ricorda che i livelli di zoom bassi rappresentano una regione geografica più ampia per ogni riquadro della mappa rispetto ai livelli di zoom più elevati. Agli elementi punto viene assegnato un valore pari a 0 (visibile a tutti i livelli di zoom). Alle geometrie di linee e poligoni vengono assegnati valori basati sui relativi limiti (linee) o sull'area (poligoni): gli elementi di grandi dimensioni hanno valori .minZoomLevel inferiori rispetto a quelli più piccoli.

Le regole di ranking per l'assottigliamento possono essere fornite come stringa o elenco di stringhe dove un nome della proprietà e l'ordine di ordinamento desiderato sono separati da uno spazio:

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

Le regole riportate sopra indicano all'algoritmo di sfoltimento di dare la priorità agli elementi con un attributo "my-property" più grande (prima vengono sfoltiti gli elementi con un valore "my-property" più piccolo), agli elementi con un tipo di geometria più piccolo (ad es. sfoltimento dei poligoni prima delle linee e delle linee prima dei punti) e agli elementi con un livello di zoom minimo più piccolo (punti su poligoni grandi su poligoni più piccoli).

La tabella seguente illustra in che modo la modifica della regola thinningRanking per una proprietà size influisce sulle funzionalità disegnate. Il numero totale di elementi per riquadro ("Tutte le caratteristiche") è superiore a 5, pertanto viene applicato l'assottigliamento per limitare gli elementi disegnati (colonna thinningRanking: 5). Nella prima riga, le funzionalità sono messe in ordine in base a size dal maggiore al minore, il che significa che le funzionalità più grandi hanno la priorità su quelle più piccole (le funzionalità vengono disegnate in ordine decrescente per dimensione fino a quando non viene raggiunto maxFeaturesPerTile). Nella seconda riga, gli elementi sono ordinati in ordine crescente di dimensioni, quindi gli elementi più piccoli vengono disegnati per primi, in ordine di dimensione, fino a raggiungere maxFeaturesPerTile.

thinningRanking Tutte le funzionalità (come riferimento) maxFeaturesPerTile: 5

'size DESC'

Dai la priorità alle funzionalità con un valore size più elevato (elimina prima le funzionalità con un valore size più basso).

'size ASC'

Dai la priorità alle funzionalità con un valore size più piccolo (elimina prima le funzionalità con un valore size più grande)

Strategia di assottigliamento

Il parametro della strategia di sfoltimento (thinningStrategy) viene utilizzato insieme al ranking di sfoltimento (thinningRanking) per ridurre i dati al momento dell'esportazione al fine di migliorare le prestazioni di rendering. Sono supportate due strategie: HIGHER_DENSITY e GLOBALLY_CONSISTENT. Quando esegui il rilascio a un determinato livello di zoom, una strategia di rilascio con una densità più elevata consente a ogni riquadro di avvicinarsi il più possibile al limite di maxFeaturesPerTile elementi, indipendentemente dal ranking delle funzionalità in altri riquadri. La strategia di sfoltimento coerente a livello globale prevede che se un elemento viene rimosso da un riquadro tramite sfoltimento, tutte le funzionalità con un ranking di sfoltimento uguale o inferiore verranno rimosse da tutti i riquadri, indipendentemente dal fatto che un riquadro richieda lo sfoltimento (supera il limite di maxFeaturesPerTile). Utilizza la strategia HIGHER_DENSITY per ottimizzare in base alla densità di elementi e la strategia GLOBALLY_CONSISTENT per ottimizzare in base a una rappresentazione coerente del ranking degli elementi tra riquadri.

La tabella seguente mostra in che modo la modifica di thinningStrategy influisce sul rilascio. In questo esempio, i dati vengono assottigliati utilizzando la forma/il colore dei punti. I cerchi blu, i quadrati verdi e i triangoli rossi hanno rispettivi ranghi di attenuazione dal migliore al peggiore. Per ogni thinningStrategy (HIGHER_DENSITY e GLOBALLY_CONSISTENT), vengono specificati tre valori diversi per maxFeaturesPerTile: un numero sufficientemente grande da mostrare tutte le funzionalità, 10 funzionalità e 9 funzionalità.

Con HIGHER_DENSITY e 10 maxFeaturesPerTile, 6 triangoli rossi (priorità più bassa nel ranking di sfoltimento) vengono rimossi dal riquadro in alto a sinistra e 1 triangolo rosso viene rimosso dal riquadro in basso a sinistra. Con HIGHER_DENSITY e 9 maxFeaturesPerTile, 7 triangoli rossi vengono assottigliati nel riquadro in alto a sinistra, e un triangolo rosso e un quadrato verde vengono assottigliati nel riquadro in basso a sinistra. In questi esempi, ogni riquadro viene svuotato in modo indipendente, senza tenere conto del ranking di svuotamento degli elementi nei riquadri adiacenti. A seconda delle caratteristiche dei dati, questa strategia di sfoltimento può portare a riquadri della mappa adiacenti che sembrano nettamente diversi l'uno dall'altro, ma massimizza il numero di elementi disegnati.

Ricorda che con il GLOBALLY_CONSISTENTthinning, se un elemento viene rimosso da un riquadro tramite il thinning, verranno rimosse anche tutte le altre funzionalità con un valore thinningRank uguale o peggiore. ConmaxFeaturesPerTile impostato su 10, i triangoli rossi non vengono visualizzati su nessun riquadro perché un triangolo rosso viene assottigliato nei riquadri in alto a sinistra e in basso a sinistra. Con maxFeaturesPerTile impostato su 9, i quadrati verdi non vengono visualizzati su nessun riquadro perché un quadrato verde è assottigliato nel riquadro in basso a sinistra. Questa strategia di sfoltimento ha meno probabilità di produrre l'aspetto distinto delle schede che è possibile ottenere con la strategia HIGHER_DENSITY, ma ha il potenziale di sfoltire le schede in un numero di elementi molto al di sotto del limite maxFeaturesPerTile.

thinningStrategy Tutte le funzionalità (come riferimento) maxFeaturesPerTile: 10 maxFeaturesPerTile: 9

'HIGHER_DENSITY'

Assolvimento meno aggressivo.

Mantiene un'alta densità di elementi tramite l'assottigliamento all'interno dei riquadri.

'GLOBALLY_CONSISTENT'

Assolvimento più aggressivo.

Mantiene un ranking di sfoltimento minimo coerente a livello globale tramite lo sfoltimento tra riquadri.

Ranking in ordine Z

Il parametro di ranking in ordine Z (zOrderRanking) controlla l'ordinamento delle funzionalità sovrapposte. Accetta un insieme di regole che definiscono quali elementi devono essere visualizzati sotto/sopra altri quando si sovrappongono. La logica e il formato delle regole per impostare l'ordine delle funzionalità sono gli stessi del ranking attenuato. Per maggiori dettagli, consulta la sezione dedicata.

Le regole di ranking in ordine Z possono essere fornite come stringa o elenco di stringhe dove un nome della proprietà e l'ordinamento desiderato sono separati da uno spazio:

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

Le regole riportate sopra specificano che gli elementi con un valore "my-property" maggiore devono essere visualizzati sotto gli elementi con un valore inferiore, gli elementi con un tipo di geometria inferiore devono essere visualizzati sotto gli elementi con un tipo di geometria superiore (ad es. punti sotto linee e linee sotto poligoni) e gli elementi con un livello di zoom minimo inferiore (elementi più grandi) devono essere visualizzati sotto gli elementi con un livello di zoom minimo superiore (elementi più piccoli).

La tabella seguente mostra in che modo la modifica della regola zOrderRanking per una proprietà "size" influisce sulle funzionalità visualizzate davanti ad altre quando si sovrappongono. Nella prima riga, gli elementi sono ordinati per dimensioni in ordine decrescente, il che significa che gli elementi di dimensioni maggiori devono apparire sotto quelli più piccoli (gli elementi più grandi vengono disegnati per primi). Al contrario, nella seconda riga, gli elementi vengono ordinati per dimensione in ordine crescente, il che significa che gli elementi di dimensioni più piccole devono apparire sotto quelli più grandi (gli elementi più piccoli vengono disegnati per primi).

zOrderRanking: 'size DESC'

Le funzionalità con size più piccolo vengono visualizzate sopra quelle con size più grande.

zOrderRanking: 'size ASC'

Le funzionalità con size più grande vengono visualizzate sopra quelle con size più piccolo.