Optymalizacja FeatureView

Podczas eksportowania FeatureCollection jako zasobu FeatureView możesz ustawić parametry, które określają, które funkcje mają być renderowane na danym poziomie powiększenia (rozrzedzenie) i jak mają być uporządkowane nakładające się funkcje (kolejność z). Te ustawienia wpływają na szybkość i wyświetlanie obiektów FeatureView. W następnych sekcjach opisujemy parametry optymalizacji i ich wpływ na podstawie diagramów, na których płytki mapy są oznaczone przerywanymi liniami, widoczne obiekty – wielokątami z ciągłymi liniami, a odrzucone (zmniejszone) – wielokątami z przerywanymi liniami i bez wypełnienia.

Poniższy blok kodu to przykład eksportu FeatureCollection do FeatureView, który wyróżnia parametry optymalizacji opisane na tej stronie.

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

Maksymalna liczba funkcji na kafelek

Parametr maks. liczba cech na kafelek (maxFeaturesPerTile) określa maksymalną liczbę cech, które mają być renderowane na pojedynczym pikselu mapy. Ta wartość jest górną granicą i może być znacznie niższa w zależności od strategii ograniczania zakresu. Wartość parametru musi mieścić się w zakresie od 1 do 2000. Im wyższa wartość, tym więcej funkcji jest widocznych na kaflu, ale kafelki ładują się dłużej.

Jak widać w poniższej tabeli, wraz ze spadkiem wartości parametru maxFeaturesPerTile maleje też liczba elementów przecinających się z poszczególnymi elementami mapy. Element może mieć mniej niż maksymalną liczbę, ale nie może mieć więcej.

Wszystkie funkcje (informacje)

maxFeaturesPerTile: 5

Wyświetla maksymalnie 5 funkcji na kafelek.

maxFeaturesPerTile: 2

Wyświetla maksymalnie 2 funkcje na element.

Ranking ściemniania

Parametr rankingu rozrzedzania (thinningRanking) określa, jak dane są priorytetowo wybierane do rozrzedzania na podstawie typu geometrii, rozmiaru funkcji i wartości właściwości funkcji. Akceptuje on zestaw reguł, które informują algorytm wygładzania o tym, które cechy należy wygładzić przed innymi, gdy osiągnięta zostanie wartość maxFeaturesPerTile. Każda reguła zawiera właściwość funkcji, po której następuje kierunek sortowania (rosnąco ASC lub malejąco DESC). Może być ich dowolna liczba. Oprócz tradycyjnych właściwości funkcji istnieją 2 właściwości specjalne, które można wykorzystać do nadawania priorytetów rozrzedzaniu: .geometryType.minZoomLevel.

  • .geometryType – charakteryzuje obiekty jako punkty, linie lub wielokąty. Te typy geometrii są odpowiednio określane jako małe, średnie i duże na potrzeby sortowania.
  • .minZoomLevel – najniższy poziom powiększenia mapy, przy którym funkcja może zostać wyświetlona jako kafelek. Poziomy powiększenia poniżej tej wartości nie będą wyświetlać funkcji. Poziomy powiększenia równe lub większe od tej wartości mogą wyświetlać funkcję. Pamiętaj, że niższe poziomy powiększenia obejmują większy obszar geograficzny na pojedynczą płytkę mapy niż wyższe poziomy powiększenia. Punktom przypisana jest wartość 0 (widoczna na wszystkich poziomach powiększenia). Geometriom linii i wielokątów przypisuje się wartości na podstawie ich granic (linie) lub obszaru (wielokąty): duże obiekty mają mniejsze wartości .minZoomLevel niż mniejsze.

Reguły rankingu w ramach odchudzania można podać jako ciąg tekstowy lub listę ciągów tekstowych, w której nazwa obiektu i wybrany kierunek sortowania są rozdzielone spacjami:

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

Reguły podane powyżej kierują algorytm zagęszczania w kierunku priorytetowego traktowania obiektów o większym atrybucie „my-property” (najpierw zagęszczać obiekty o mniejszej wartości atrybutu „my-property”), priorytetowego traktowania obiektów o mniejszym typie geometrii (np. zagęszczać wielokąty przed liniami i linie przed punktami) oraz priorytetowego traktowania obiektów o mniejszym minimalnym poziomie powiększenia (punkty przed dużymi wielokątami i wielokątami przed punktami).

W tabeli poniżej pokazano, jak zmiana reguły thinningRanking w przypadku właściwości size wpływa na to, które funkcje są rysowane. Łączna liczba elementów na kafelek (kolumna „Wszystkie elementy”) jest większa niż 5, więc zastosowano rozrzedzenie, aby ograniczyć liczbę wyświetlanych elementów (kolumna thinningRanking: 5). W pierwszej kolumnie funkcje są posortowane według wartości size od największej do najmniejszej, co oznacza, że większe funkcje mają wyższy priorytet niż mniejsze (funkcje są wyświetlane w kolejności malejącej według rozmiaru, aż do osiągnięcia wartości maxFeaturesPerTile). W drugim wierszu funkcje są posortowane według rosnącego rozmiaru, więc najmniejsze funkcje są rysowane jako pierwsze, według kolejności rozmiaru, aż do osiągnięcia wartości maxFeaturesPerTile.

thinningRanking Wszystkie funkcje (informacje) maxFeaturesPerTile: 5

'size DESC'

Priorytetowo traktować funkcje o większych wartościach size (najpierw odrzucać funkcje o mniejszych wartościach size).

'size ASC'

Priorytetowo traktować funkcje o mniejszych wartościach size (najpierw odrzucać funkcje o większych wartościach size).

Strategia ścięcia

Parametr strategii odchudzania (thinningStrategy) jest używany razem z odchudzaniem rankingu (thinningRanking), aby odchudzać dane w momencie eksportu i w ten sposób poprawiać wydajność renderowania. Obsługiwane są 2 strategie: HIGHER_DENSITY i GLOBALLY_CONSISTENT. Podczas rozrzedzania na określonym poziomie powiększenia strategia rozrzedzania o większej gęstości oznacza, że każda płytka może zbliżyć się do limitu maxFeaturesPerTile, nie zwracając uwagi na pozycję funkcji w innych płytkach. Strategia globalnego zagęszczania oznacza, że jeśli funkcja zostanie usunięta z jakiejkolwiek płytki, wszystkie funkcje o równym lub niższym poziomie zagęszczania zostaną usunięte ze wszystkich płytek, niezależnie od tego, czy płytka wymaga zagęszczania (czyli przekracza limit maxFeaturesPerTile). Użyj strategii HIGHER_DENSITY, aby zoptymalizować gęstość funkcji, oraz strategii GLOBALLY_CONSISTENT, aby zoptymalizować spójne wyświetlanie pozycji funkcji na różnych kafelkach.

W tabeli poniżej widać, jak zmiana wartości thinningStrategy wpływa na rozrzedzenie. W tym przykładzie dane są rozrzedzone za pomocą kształtu lub koloru punktów. Niebieskie kółka, zielone kwadraty i czerwone trójkąty mają odpowiednie oceny z wyraźnym odchyleniem od najlepszej do najgorszej. W przypadku każdego parametru thinningStrategy (HIGHER_DENSITYGLOBALLY_CONSISTENT) dostępne są 3 różne wartości atrybutu maxFeaturesPerTile: liczba wystarczająco duża, aby wyświetlić wszystkie cechy, 10 cech i 9 cech.

Przy HIGHER_DENSITY i 10 maxFeaturesPerTile z lewej strony zostaje wyeliminowanych 6 czerwonych trójkątów (najniższy priorytet w rankingu rozrzedzania), a z lewej strony zostaje wyeliminowany 1 czerwony trójkąt. W przypadku HIGHER_DENSITY i 9 maxFeaturesPerTile z płytki w lewym górnym rogu usunięto 7 czerwonych trójkątów, a z płytki w lewym dolnym rogu – czerwony trójkąt i zielony kwadrat. W tych przykładach każda karta jest wygładzana niezależnie, bez uwzględniania rangi wygładzania cech w sąsiednich kartach. W zależności od cech danych ta strategia zagęszczania może powodować, że sąsiednie elementy mapy będą się wyraźnie różnić od siebie, ale zmaksymalizuje liczbę wyświetlanych elementów.

Pamiętaj, że GLOBALLY_CONSISTENT oznacza, że jeśli funkcja zostanie usunięta z jakiejkolwiek karty, zostaną też usunięte wszystkie inne funkcje o równych lub gorszych wartościach thinningRank. Gdy parametr maxFeaturesPerTile ma wartość 10, czerwone trójkąty nie są widoczne na żadnej karcie, ponieważ są one rozcieńczone na kartach w lewym górnym i lewym dolnym rogu. Gdy wartość maxFeaturesPerTile wynosi 9, zielone kwadraty również nie są widoczne na żadnej karcie, ponieważ zielony kwadrat jest rozcieńczony na karcie w lewym dolnym rogu. Ta strategia rozrzedzania jest mniej prawdopodobna, że da wyraźnie widoczne kafelki, jak to ma miejsce w przypadku strategii HIGHER_DENSITY, ale może rozrzedzać kafelki do liczby funkcji znacznie poniżej limitu maxFeaturesPerTile.

thinningStrategy Wszystkie funkcje (informacje) maxFeaturesPerTile: 10 maxFeaturesPerTile: 9

'HIGHER_DENSITY'

Mniej agresywne rozrzedzanie.

Utrzymuje wysoką gęstość funkcji dzięki cieniowaniu wewnątrz płytki.

'GLOBALLY_CONSISTENT'

bardziej agresywne rozrzedzanie;

Utrzymuje globalnie spójny minimalny współczynnik rozrzedzania dzięki rozrzedzeniu międzypłytkowym.

Ranking typu Z

Parametr kolejność z-wartości (zOrderRanking) określa kolejność nakładających się cech. Akceptuje on zestaw reguł, które określają, które funkcje powinny być wyświetlane pod lub nad innymi, gdy się nakładają. Zasady i format reguły dotyczące kolejności ustawiania funkcji są takie same jak w przypadku określania kolejności wyświetlania. Więcej informacji znajdziesz w tej sekcji.

Reguły rankingu wg kolejności Z mogą być podawane jako ciąg znaków lub lista ciągów znaków, w których nazwa właściwości i wybrany kierunek sortowania są rozdzielone spacjami:

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

Powyższe reguły określają, że obiekty o większej wartości atrybutu „my-property” powinny pojawiać się pod obiektami o mniejszej wartości, obiekty o mniejszym typie geometrii powinny pojawiać się pod obiektami o większym typie geometrii (np. punkty pod liniami i linie pod wielokątami), a obiekty o mniejszym minimalnym powiększeniu (większe obiekty) powinny pojawiać się pod obiektami o większym minimalnym powiększeniu (mniejsze obiekty).

Tabela poniżej pokazuje, jak zmiana reguły zOrderRanking w przypadku właściwości „size” wpływa na to, które cechy są widoczne na pierwszym planie, gdy się na siebie nakładają. W pierwszej kolumnie funkcje są posortowane według rozmiaru w kolejności malejącej, co oznacza, że większe funkcje powinny być widoczne pod mniejszymi (większe funkcje są wyświetlane jako pierwsze). W drugim wierszu funkcje są natomiast posortowane według rozmiaru w kolejności rosnącej, co oznacza, że mniejsze funkcje powinny być widoczne pod większymi (mniejsze funkcje są wyświetlane jako pierwsze).

zOrderRanking: 'size DESC'

Funkcje z mniejszym size są wyświetlane nad funkcjami z większym size.

zOrderRanking: 'size ASC'

Funkcje z większym size są wyświetlane nad funkcjami z mniejszym size.