Omówienie widoku cech

FeatureView to przyspieszona wersja FeatureCollection, która służy tylko do wyświetlania. W odróżnieniu od FeatureCollection, w której przypadku elementy mapy rastrowej są generowane na bieżąco, elementy rastrowe FeatureView są obliczane w poprzedni sposób, aby zapewnić szybkie renderowanie. Oprócz szybszego renderowania komponenty FeatureView implementują funkcję wygładzania zależną od poziomu powiększenia. W efekcie gęste zbiory danych mogą wyglądać niekompletnie przy oddaleniu (małe obiekty nie są rysowane), ale więcej danych staje się widocznych, gdy przybliżysz mapę, co może poprawić jej estetykę przy niższych poziomach powiększenia. Zachowanie cieniowania zbioru danych jest kontrolowane przez kilka parametrów optymalizacji, które są ustawiane podczas eksportowania zasobu FeatureCollection do zasobu FeatureView.

Obiekty FeatureView są zasobami tylko do wyświetlania, dlatego nie można ich uwzględniać w obliczeniach ani wyrażeniach, ale można je wizualizować i przeglądać w Edytorze kodu JavaScript i aplikacji Earth Engine jako FeatureViewLayer. Można je też zintegrować z aplikacją interfejsu API Map Google.

Tworzenie widoku cech

Tworzenie FeatureView obejmuje przygotowanie FeatureCollection z danymi, wywołanie funkcji Export.table.toFeatureView i uruchomienie zadania eksportu. Ten przykład pokazuje eksportowanie widoków z zbioru danych WDPA Polygons. W swojej aplikacji możesz użyć dowolnego zbioru danych FeatureCollectionzarchiwizowanego w Earth Engine Data Catalog lub utworzyć własny, przesyłając zbiór danych wektorowych jako zasób Earth Engine.

Funkcję FeatureView możesz dostosowywać za pomocą kilku parametrów w ramach funkcji Export.table.toFeatureView.

  • maxFeaturesPerTile – określa maksymalną liczbę obiektów wyświetlanych w płytce mapy przy danym powiększeniu. Używaj tego parametru, aby optymalizować szybkość lub gęstość funkcji.
  • thinningStrategy – określa, czy rozrzedzenie funkcji na danej karcie i poziomie powiększenia powinno być zoptymalizowane pod kątem większej gęstości lub spójności gęstości na wszystkich kartach. Pamiętaj, że optymalizacja pod kątem wyższej gęstości może spowodować, że granice płytek staną się wyraźniejsze, ponieważ gęstość cech na poszczególne płytki jest niezależna.
  • thinningRanking – określa priorytet funkcji. Możesz na przykład zoptymalizować odchudzanie pod kątem zatrzymywania cech o wysokich wartościach. Innymi słowy, gdy oddalasz widok, najpierw zostaną odchudzone cechy o niskiej wartości dla wybranej właściwości, a najważniejsze cechy (zgodnie z Twoimi regułami) pozostaną widoczne.
  • zOrderRanking – określa kolejność nakładania elementów wyświetlanych na mapie. Ten parametr określa sposób wyświetlania nakładających się elementów, umożliwiając ustawienie reguł priorytetów na podstawie właściwości elementów, typu geometrii i poziomu powiększenia. Możesz na przykład nadać priorytet cechom o wysokich wartościach danej właściwości, aby nakładały się one na cechy krzyżujące się z nimi, ale o niskich wartościach.

Więcej informacji o tych parametrach i ich akceptowanych argumentach znajdziesz na FeatureViewstronie Optymalizacja.

W przykładzie poniżej argumenty określone dla tych parametrów dają FeatureView, gdzie maksymalna liczba elementów na kafelek przy danym poziomie powiększenia to 1500, gęstość elementów na kafelek jest niezależna i może osiągnąć maksymalną wartość 1500, mniejsze wielokąty są wycinane jako pierwsze, a mniejsze wielokąty leżą na większych.

Edytor kodu (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'],
});

Wykonywanie tego fragmentu kodu w Edytorze kodu spowoduje wygenerowanie zadania eksportu. Uruchom to zadanie, aby rozpocząć eksport.

Lokalizacje komponentów FeatureView

Zasoby FeatureView można znaleźć w publicznym Katalogu danych oraz w sekcji Zasoby w Edytorze kodu. Wszystkie istotne zasoby FeatureCollection w Data Catalog mają towarzyszący im zasób FeatureView z ogólne obowiązujące ustawienia przetwarzania. Twoja osobista archiwum zasobów będzie zawierać wszystkie utworzone przez Ciebie zasoby FeatureView.

Importowanie komponentów FeatureView do skryptów

Zasoby FeatureView można importować do skryptów w Edytorze kodu za pomocą przycisków w edytorze zasobów i w osobnych zasobach oraz przez podanie identyfikatora zasobu FeatureView jako argumentu konstruktora ui.Map.FeatureViewLayer.

Okno komponentu usługi Data Catalog

W edytorze kodu, w polu wyszukiwania, znajduje się przycisk Importuj z menu w prawym dolnym rogu. W menu kliknij „Importuj FeatureView”. Zasób zostanie uwzględniony w sekcji Importy u góry skryptu.

Okno Zasoby osobiste

W przypadku okien zasobów użytkownika FeatureView, do których można przejść, wybierając zasób na karcie Zasoby w Edytorze kodu, w prawym górnym rogu znajduje się przycisk Importuj. Po jego aktywowaniu komponent zostanie uwzględniony w sekcji Importy na początku skryptu. Możesz też użyć przycisku skrótu importowania (ikona strzałki skierowanej w prawo), który pojawia się, gdy najedziesz kursorem na zasób na karcie Zasoby.

Identyfikator zasobu

Zasoby FeatureView mają identyfikator, który można podać jako argument konstruktora ui.Map.FeatureViewLayer, co daje dostęp do zasobu w Twoim skrypcie. Gotowe fragmenty kodu do importowania znajdziesz na stronach komponentów w Data Catalog oraz w oknach komponentów w Edytorze kodu.

Rysunek 1. Okno dialogowe zasobu Data Catalog z wyróżnionymi metodami importu FeatureView.

Metadane FeatureView

Informacje FeatureView i metadane są dostępne w oknach dialogowych komponentów wymienionych w sekcji Lokalizacja komponentów FeatureView. Oprócz opisu i właściwości, które mogą być udostępniane źródłu FeatureCollection, istnieje 5 właściwości unikalnych dla FeatureView. Obejmują one ustawienia parametrów przekształcania opisane w sekcji Tworzenie FeatureView oraz sourceVersion, czyli sygnaturę czasową „ostatniej modyfikacji” zasobu tabeli, z którego utworzono FeatureView. Rysunek 1. powyżej przedstawia właściwości FeatureView w oknie komponentu w Data Catalog. Podobnie jak inne komponenty, właściwości możesz pobierać programowo z słownika zwracanego przez funkcję ee.data.getAsset.

Wizualizacja widoku cech

Obiekt FeatureView można wizualizować w Edytorze kodu, aplikacjach Earth Engine i Mapach Google.

Edytor kodu

Edytor kodu zawiera komponent ui.Map.FeatureViewLayer do wizualizacji komponentów FeatureView na mapie. W tym przykładzie definiujemy identyfikator zasobu FeatureView, importujemy go jako FeatureViewLayer i wyświetlamy na mapie.

Edytor kodu (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);

Styl

Styl FeatureViewLayer możesz nadać, przekazując słownik stylów do funkcji ui.Map.FeatureViewLayer lub dodając go do warstwy za pomocą metody setVisParams. Poniżej znajduje się przykład stylizacji:

  • kolory obrysu na podstawie właściwości „MARINE” (czy chroniony obszar znajduje się całkowicie czy częściowo w środowisku morskim),
  • kolor wypełnienia na podstawie właściwości „IUCN_CAT” (kategoria Międzynarodowej Unii Ochrony Przyrody),
  • przejrzystość wypełniania na podstawie rozmiaru chronionego obszaru zdefiniowanego przez właściwość „REP_AREA”.

Więcej informacji o dostępnych opcjach stylizacji znajdziesz na stronie Stylizacja widoku funkcji.

Edytor kodu (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,
});

Filtrowanie

Reguły filtrowania można stosować do selektywnego stylizowania lub ukrywania elementów na podstawie ich właściwości. Aby na przykład odfiltrować obszary chronione mniejsze niż określony obszar podany przez suwak, możesz użyć tego kodu. Aby dowiedzieć się więcej o polu rules, zapoznaj się z sekcją Reguły szczegółowe na stronie stylizacji FeatureView.

Edytor kodu (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);

Rysunek 2. FeatureViewLayer wizualizacja z widżetem suwaka do ukrywania funkcji mniejszych niż określony obszar.

Interfejs API Map Google

Proces wizualizacji zasobu FeatureView za pomocą interfejsu Google Maps API składa się z 4 części: uzyskania klucza płytek za pomocą funkcji ee.data.getFeatureViewTilesKey, przekazania go do instancji FeatureViewTileSource, stworzenia ee.layer.ImageOverlay, a następnie dodania nakładki do instancji google.maps.Map. Poniżej znajdziesz przykładowy kod JavaScript służący do tworzenia obiektu ImageOverlay.

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);

Następnie możesz dodać nakładkę do instancji google.maps.Map, jak pokazano poniżej.

// embeddedMap is your google.maps.Map instance.
embeddedMap.overlayMapTypes.setAt(0, overlay);

Sprawdzanie widoku cech

Warstwę FeatureViewLayer dodaną do domyślnej mapy w Edytorze kodu możesz sprawdzić za pomocą narzędzia Inspektor. Funkcje są takie same jak w przypadku FeatureCollection. Pamiętaj, że wyniki zwrócone dla klikniętej lokalizacji zawierają tylko funkcje widoczne na bieżącym poziomie powiększenia. Geometrie nie są wyświetlane w przypadku zweryfikowanych funkcji, ponieważ są uproszczone w ramach procesu FeatureView eksportu.

Rysunek 3. Sprawdzam FeatureViewLayer. W inspektorze wyświetlane są warstwa, funkcje, identyfikator zasobu i parametry wizualizacji.