FeatureView 개요

FeatureViewFeatureCollection의 뷰 전용 가속된 표현입니다. 래스터 지도 타일이 실시간으로 생성되는 FeatureCollection와 달리 FeatureView 래스터 타일은 빠른 렌더링을 위해 사전 계산됩니다. FeatureView 애셋은 더 빠르게 렌더링할 뿐만 아니라 확대/축소 수준에 종속된 지형지물 씬을 구현합니다. 이렇게 하면 밀도가 높은 데이터 세트가 축소될 때 불완전하게 보일 수 있지만 (작은 지형지물이 그려지지 않음) 확대하면 더 많은 데이터가 표시되므로 낮은 확대/축소 수준에서 지도의 미학을 개선할 수 있습니다. 데이터 세트의 씬 처리 동작은 FeatureCollectionFeatureView 애셋으로 내보내는 동안 설정되는 여러 최적화 매개변수에 의해 제어됩니다.

보기 전용 애셋이므로 FeatureView 객체는 계산이나 표현식에 포함할 수 없지만 JavaScript 코드 편집기와 Earth Engine 앱에서 FeatureViewLayer로 시각화하고 검사할 수 있습니다. Google 지도 API 애플리케이션에 통합할 수도 있습니다.

FeatureView 만들기

FeatureView를 만들려면 데이터로 FeatureCollection를 준비하고 Export.table.toFeatureView 함수를 호출한 후 내보내기 작업을 시작해야 합니다. 다음 예에서는 WDPA 다각형 데이터 세트의 뷰를 내보내는 방법을 보여줍니다. 자체 애플리케이션에서 Earth Engine Data Catalog에 보관처리된 FeatureCollection 데이터 세트를 사용하거나 벡터 데이터 세트를 업로드하여 Earth Engine 애셋으로 자체 데이터 세트를 만듭니다.

FeatureViewExport.table.toFeatureView 함수의 여러 매개변수를 사용하여 맞춤설정할 수 있습니다.

  • maxFeaturesPerTile: 지정된 확대/축소 수준에서 지도 타일에 표시되는 최대 지형지물 수를 정의합니다. 이 매개변수를 사용하여 속도 또는 지형지물 밀도를 최적화합니다.
  • thinningStrategy: 지정된 타일 및 확대/축소 수준의 지형지물 제거를 더 높은 밀도 또는 타일 전체의 밀도 일관성에 맞게 최적화해야 하는지 제어합니다. 밀도를 높이도록 최적화하면 타일당 지형지물 밀도가 독립적이므로 타일 경계가 구분될 수 있습니다.
  • thinningRanking: 지형지물 제거 우선순위를 정의합니다. 예를 들어 값이 높은 특정 지형지물 속성의 유지를 타겟팅하도록 씬닝을 최적화할 수 있습니다. 즉, 축소하면 선택한 속성의 값이 낮은 지형지물이 먼저 제거되고 규칙에 따라 가장 중요한 지형지물은 계속 표시됩니다.
  • zOrderRanking: 지도에 표시되는 지형지물의 z 순서 (비슷한 항목의 순서)를 정의합니다. 이 매개변수는 지형지물 속성, 도형 유형, 확대/축소 수준을 기반으로 우선순위 규칙을 설정하여 중복 지형지물이 표시되는 방식을 제어합니다. 예를 들어 특정 속성의 값이 높은 지형지물에 우선순위를 부여하여 값이 낮은 교차 지형지물 위에 겹쳐 표시할 수 있습니다.

이러한 매개변수와 허용되는 인수에 관한 자세한 내용은 FeatureView 최적화 페이지를 참고하세요.

아래 예에서 이러한 매개변수에 지정된 인수는 지정된 확대/축소 수준에서 카드당 최대 지형지물이 1,500개이고, 카드당 지형지물의 밀도가 독립적이며 최대 1,500개까지 허용되며, 작은 다각형이 먼저 얇아지고, 작은 다각형이 큰 다각형 위에 배치되는 FeatureView를 생성합니다.

코드 편집기 (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'],
});

Code 편집기에서 위의 코드 스니펫을 실행하면 내보내기 작업이 생성됩니다. 이 작업을 실행하여 내보내기를 시작합니다.

FeatureView 확장 소재 위치

FeatureView 애셋은 공개 데이터 카탈로그와 Code Editor의 애셋 탭에 있는 개인 애셋에서 찾을 수 있습니다. Data Catalog의 모든 관련 FeatureCollection 애셋에는 일반적으로 적용 가능한 처리 설정이 포함된 FeatureView 애셋이 있습니다. 개인 저작물 보관 파일에는 내가 만든 FeatureView 저작물이 모두 포함됩니다.

스크립트로 FeatureView 애셋 가져오기

FeatureView 애셋은 Code Editor 애셋 대화상자 및 개인 애셋 항목의 버튼을 사용하고 FeatureView 애셋 ID를 ui.Map.FeatureViewLayer 생성자에 입력으로 제공하여 Code Editor 스크립트로 가져올 수 있습니다.

Data Catalog 애셋 대화상자

코드 편집기의 검색창에서 액세스하는 데이터 카탈로그 표 애셋 대화상자의 오른쪽 하단에는 드롭다운 메뉴가 있는 가져오기 버튼이 있습니다. 드롭다운 메뉴에서 'FeatureView 가져오기'를 선택합니다. 저작물은 스크립트 상단의 가져오기 섹션에 포함됩니다.

개인 애셋 대화상자

코드 편집기의 애셋 탭에서 애셋을 선택하여 액세스하는 개인 FeatureView 애셋 대화상자의 오른쪽 상단에는 가져오기 버튼이 있습니다. 버튼을 활성화하면 스크립트 상단의 가져오기 섹션에 애셋이 포함됩니다. 애셋 탭에서 저작물 위로 마우스를 가져갈 때 표시되는 가져오기 바로가기 버튼(오른쪽 화살표 아이콘)을 사용할 수도 있습니다.

저작물 ID

FeatureView 애셋에는 ui.Map.FeatureViewLayer 생성자에 입력으로 제공할 수 있는 ID가 있으며, 이를 통해 스크립트에서 애셋에 액세스할 수 있습니다. 사전 구성된 가져오기 스니펫은 Data Catalog 애셋 페이지와 Code Editor의 애셋 대화상자에서 확인할 수 있습니다.

그림 1. FeatureView 가져오기 메서드가 강조 표시된 Data Catalog 애셋 대화상자

FeatureView 메타데이터

FeatureView 정보와 메타데이터는 위의 FeatureView 애셋 위치 섹션에 언급된 애셋 대화상자에서 확인할 수 있습니다. 소스 FeatureCollection와 공유할 수 있는 설명 및 속성 외에도 FeatureView에만 고유한 5가지 속성이 있습니다. 여기에는 FeatureView 만들기 섹션에 설명된 처리 매개변수 설정과 FeatureView가 생성된 테이블 애셋의 '최종 수정' 타임스탬프인 sourceVersion가 포함됩니다. 위의 그림 1은 Data Catalog 애셋 대화상자의 FeatureView 관련 속성을 보여줍니다. 다른 애셋과 마찬가지로 ee.data.getAsset에서 반환된 사전에서 프로그래매틱 방식으로 속성을 가져올 수도 있습니다.

FeatureView 시각화

FeatureView 객체는 코드 편집기, Earth Engine 앱, Google 지도에서 시각화할 수 있습니다.

코드 편집기

코드 편집기에는 지도에 FeatureView 애셋을 시각화하는 ui.Map.FeatureViewLayer 구성요소가 포함되어 있습니다. 다음 예에서는 FeatureView 저작물 ID를 정의하고 저작물을 FeatureViewLayer로 가져와 지도에 표시합니다.

코드 편집기 (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);

스타일 지정

스타일 사전을 ui.Map.FeatureViewLayer 함수에 전달하거나 setVisParams 메서드를 사용하여 레이어에 추가하여 FeatureViewLayer의 스타일을 지정할 수 있습니다. 다음은 스타일을 지정하는 예입니다.

  • 'MARINE' 속성 (보호 지역이 해양 환경 내에 완전히 또는 부분적으로 포함되는지 여부)에 따른 윤곽선 색상
  • 'IUCN_CAT' 속성 (국제 자연 보전 협회 (IUCN) 카테고리)을 기반으로 한 채우기 색상
  • 'REP_AREA' 속성으로 정의된 보호된 영역의 크기를 기반으로 채우기 불투명도입니다.

사용 가능한 스타일 지정 옵션에 관한 자세한 내용은 FeatureView 스타일 지정 페이지를 참고하세요.

코드 편집기 (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,
});

필터링

필터 규칙을 적용하여 지형지물의 속성에 따라 지형지물의 스타일을 선택적으로 지정하거나 숨길 수 있습니다. 예를 들어 슬라이더 위젯에서 지정된 특정 영역보다 작은 보호 영역을 필터링하려면 다음 코드를 사용하면 됩니다. rules 필드에 관한 자세한 내용은 FeatureView 스타일 지정 페이지의 특정 규칙 섹션을 참고하세요.

코드 편집기 (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);

그림 2. 지정된 영역보다 작은 지형지물을 숨기는 슬라이더 위젯이 있는 FeatureViewLayer 시각화

Google 지도 API

Google 지도 API를 사용하여 FeatureView 애셋을 시각화하는 프로세스는 4단계로 구성됩니다. ee.data.getFeatureViewTilesKey를 사용하여 카드 키를 가져오고, 이를 FeatureViewTileSource 인스턴스에 전달하고, ee.layer.ImageOverlay를 구성한 다음 google.maps.Map 인스턴스에 오버레이를 추가합니다. JavaScript에서 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);

완료되면 아래와 같이 google.maps.Map 인스턴스에 오버레이를 추가할 수 있습니다.

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

FeatureView 검사

기본 Code Editor 지도에 추가된 FeatureViewLayer 레이어는 Inspector 도구를 사용하여 검사할 수 있습니다. 기능은 FeatureCollection와 동일합니다. 클릭한 위치에 대해 반환된 결과에는 현재 확대/축소 수준에서 표시되는 지형지물만 나열됩니다. 검사된 지형지물에는 도형이 표시되지 않습니다. FeatureView 내보내기 프로세스의 일환으로 단순화되기 때문입니다.

그림 3. FeatureViewLayer 검사 검사기에는 레이어, 지형지물, 애셋 ID, 시각화 매개변수가 표시됩니다.