ภาพรวมของ FeatureView

FeatureView คือการแสดงFeatureCollectionแบบเร่งที่รับชมได้อย่างเดียว ซึ่งแตกต่างจาก FeatureCollection ที่ระบบจะสร้างไทล์แผนที่แรสเตอร์ขณะแสดงผล แต่ FeatureView จะประมวลผลไทล์แรสเตอร์ล่วงหน้าเพื่อให้แสดงผลได้อย่างรวดเร็ว นอกจากการแสดงผลที่เร็วขึ้นแล้ว ชิ้นงาน FeatureView ยังใช้การลดจำนวนองค์ประกอบตามระดับการซูม ผลที่ได้คือชุดข้อมูลที่มีความหนาแน่นอาจดูไม่สมบูรณ์เมื่อซูมออก (ระบบจะไม่วาดองค์ประกอบเล็กๆ) แต่คุณจะเห็นข้อมูลมากขึ้นเมื่อซูมเข้า ซึ่งจะช่วยปรับปรุงความสวยงามของแผนที่ในระดับการซูมต่ำ ลักษณะการกรองชุดข้อมูลจะควบคุมโดยพารามิเตอร์การเพิ่มประสิทธิภาพหลายรายการที่ตั้งค่าไว้ในระหว่างการส่งออก FeatureCollection ไปยังเนื้อหา FeatureView

เนื่องจากเป็นชิ้นงานที่ดูได้อย่างเดียว ออบเจ็กต์ FeatureView จึงรวมไว้ในการคํานวณหรือนิพจน์ไม่ได้ แต่สามารถแสดงภาพและตรวจสอบได้ในเครื่องมือแก้ไขโค้ด JavaScript และแอป Earth Engine เป็น FeatureViewLayer และยังผสานรวมเข้ากับแอปพลิเคชัน Google Maps API ได้ด้วย

การสร้าง FeatureView

การสร้าง FeatureView เกี่ยวข้องกับการเตรียม FeatureCollection ด้วยข้อมูลของคุณ การเรียกใช้ฟังก์ชัน Export.table.toFeatureView และเริ่มงานส่งออก ตัวอย่างต่อไปนี้แสดงการส่งออกมุมมองของชุดข้อมูลรูปหลายเหลี่ยม WDPA ในแอปพลิเคชันของคุณเอง ให้ใช้ชุดข้อมูล FeatureCollection ที่เก็บถาวรในแคตตาล็อกข้อมูล Earth Engine หรือสร้างชุดข้อมูลของคุณเองโดยการอัปโหลดชุดข้อมูลเวกเตอร์เป็นชิ้นงาน Earth Engine

คุณสามารถปรับแต่ง FeatureView โดยใช้พารามิเตอร์หลายรายการในฟังก์ชัน Export.table.toFeatureView

  • maxFeaturesPerTile — กําหนดจํานวนองค์ประกอบสูงสุดที่แสดงในชิ้นส่วนแผนที่ที่ระดับการซูมหนึ่งๆ ใช้พารามิเตอร์นี้เพื่อเพิ่มประสิทธิภาพสำหรับความเร็วหรือความหนาแน่นของฟีเจอร์
  • thinningStrategy — ควบคุมว่าควรเพิ่มประสิทธิภาพการกรองฟีเจอร์ของชิ้นส่วนแผนที่และระดับการซูมหนึ่งๆ เพื่อให้ความหนาแน่นสูงขึ้นหรือมีความหนาแน่นที่สอดคล้องกันทั่วทั้งชิ้นส่วนแผนที่ โปรดทราบว่าการเพิ่มประสิทธิภาพเพื่อเพิ่มความหนาแน่นอาจทําให้ขอบเขตของไทล์แตกต่างกัน เนื่องจากความหนาแน่นขององค์ประกอบต่อไทล์จะแยกกัน
  • thinningRanking — กําหนดลําดับความสําคัญของการลดจำนวนฟีเจอร์ ตัวอย่างเช่น คุณสามารถเพิ่มประสิทธิภาพการกรองเพื่อกำหนดเป้าหมายการคงไว้ของพร็อพเพอร์ตี้องค์ประกอบที่เฉพาะเจาะจงซึ่งมีค่าสูง กล่าวคือ เมื่อคุณซูมออก ระบบจะกรององค์ประกอบที่มีค่าต่ำสำหรับพร็อพเพอร์ตี้ที่เลือกออกก่อน เพื่อให้เห็นองค์ประกอบที่สำคัญที่สุด (ตามกฎของคุณ)
  • zOrderRanking — กําหนดลําดับ z (ลําดับกอง) ขององค์ประกอบที่แสดงบนแผนที่ พารามิเตอร์นี้ควบคุมวิธีแสดงองค์ประกอบที่ทับซ้อนกันโดยให้คุณตั้งกฎลําดับความสําคัญตามพร็อพเพอร์ตี้องค์ประกอบ ประเภทเรขาคณิต และระดับการซูม เช่น คุณสามารถจัดลําดับความสําคัญขององค์ประกอบที่มีค่าสูงของพร็อพเพอร์ตี้หนึ่งๆ เพื่อให้วางซ้อนบนองค์ประกอบที่ตัดกันซึ่งมีค่าต่ำ

ดูรายละเอียดเพิ่มเติมเกี่ยวกับพารามิเตอร์เหล่านี้และอาร์กิวเมนต์ที่ยอมรับได้ที่ FeatureViewหน้าการเพิ่มประสิทธิภาพ

ในตัวอย่างนี้ อาร์กิวเมนต์ที่ระบุสำหรับพารามิเตอร์เหล่านี้จะสร้างFeatureView โดยที่องค์ประกอบสูงสุดต่อไทล์ที่ระดับการซูมหนึ่งๆ คือ 1,500 องค์ประกอบ ความหนาแน่นขององค์ประกอบต่อไทล์จะแยกกันอิสระและอนุญาตให้มีได้สูงสุด 1,500 องค์ประกอบ ระบบจะลดจำนวนรูปหลายเหลี่ยมขนาดเล็กลงก่อน และวางรูปหลายเหลี่ยมขนาดเล็กไว้บนรูปหลายเหลี่ยมขนาดใหญ่

เครื่องมือแก้ไขโค้ด (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'],
});

การดำเนินการกับข้อมูลโค้ดด้านบนในเครื่องมือแก้ไขโค้ดจะสร้างงานส่งออก ให้เรียกใช้งานเพื่อเริ่มการส่งออก

สถานที่ตั้งของชิ้นงาน FeatureView

ชิ้นงาน FeatureView จะอยู่ในแคตตาล็อกข้อมูลสาธารณะและในชิ้นงานส่วนตัวในแท็บชิ้นงานของเครื่องมือแก้ไขโค้ด เนื้อหา FeatureCollection ที่เกี่ยวข้องทั้งหมดในแคตตาล็อกข้อมูลจะมีเนื้อหา FeatureView ประกอบที่มีการตั้งค่าการส่งผ่านข้อมูลที่ใช้ได้โดยทั่วไป ไฟล์เก็บถาวรของชิ้นงานส่วนตัวจะรวมFeatureViewชิ้นงานที่คุณสร้าง

การนําเข้าชิ้นงาน FeatureView ไปยังสคริปต์

คุณนำเข้าชิ้นงาน FeatureView ลงในสคริปต์เครื่องมือแก้ไขโค้ดได้โดยใช้ปุ่มในกล่องโต้ตอบชิ้นงานเครื่องมือแก้ไขโค้ดและรายการชิ้นงานส่วนตัว และระบุรหัสชิ้นงาน FeatureView เป็นอินพุตให้กับคอนสตรัคเตอร์ ui.Map.FeatureViewLayer

กล่องโต้ตอบชิ้นงานใน Data Catalog

กล่องโต้ตอบชิ้นงานตารางในแคตตาล็อกข้อมูลซึ่งเข้าถึงได้จากแถบค้นหาของเครื่องมือแก้ไขโค้ดจะมีปุ่มนําเข้าที่ด้านขวาล่างพร้อมเมนูแบบเลื่อนลง จากเมนูแบบเลื่อนลง ให้เลือก "นําเข้า FeatureView" ชิ้นงานจะรวมอยู่ในส่วนการนําเข้าที่ด้านบนของสคริปต์

กล่องโต้ตอบชิ้นงานส่วนตัว

กล่องโต้ตอบชิ้นงาน FeatureView ส่วนบุคคล ซึ่งเข้าถึงได้โดยเลือกชิ้นงานจากแท็บชิ้นงานของเครื่องมือแก้ไขโค้ด จะมีปุ่มนําเข้าที่ด้านขวาบน การเปิดใช้งานปุ่มจะรวมชิ้นงานในส่วนการนําเข้าที่ด้านบนของสคริปต์ นอกจากนี้ คุณยังใช้ปุ่มทางลัดสำหรับการนำเข้า (ไอคอนลูกศรชี้ขวา) ที่ปรากฏขึ้นเมื่อวางเมาส์เหนือเนื้อหาในแท็บเนื้อหาได้ด้วย

รหัสชิ้นงาน

ชิ้นงาน FeatureView มีรหัสที่ระบุเป็นอินพุตให้กับคอนสตรคเตอร์ ui.Map.FeatureViewLayer ซึ่งจะช่วยให้คุณเข้าถึงชิ้นงานในสคริปต์ได้ ข้อมูลโค้ดการนําเข้าที่สร้างไว้ล่วงหน้าจะอยู่ในหน้าเนื้อหาและกล่องโต้ตอบเนื้อหาของ Data Catalog ในเครื่องมือแก้ไขโค้ด

รูปที่ 1 กล่องโต้ตอบชิ้นงาน Data Catalog ที่ไฮไลต์FeatureViewวิธีการนําเข้า

ข้อมูลเมตาของ FeatureView

ข้อมูลและข้อมูลเมตาของ FeatureView มีอยู่ในกล่องโต้ตอบของชิ้นงานซึ่งกล่าวถึงในส่วนตำแหน่งชิ้นงาน FeatureView ด้านบน นอกเหนือจากคำอธิบายและพร็อพเพอร์ตี้ที่อาจแชร์กับแหล่งที่มา FeatureCollection แล้ว FeatureView ยังมีพร็อพเพอร์ตี้ 5 รายการที่เป็นเอกลักษณ์ ซึ่งรวมถึงการตั้งค่าพารามิเตอร์การส่งผ่านข้อมูลที่อธิบายไว้ในส่วนการสร้าง FeatureView และ sourceVersion ซึ่งเป็นการประทับเวลา "แก้ไขล่าสุด" ของชิ้นงานตารางที่สร้างขึ้นจาก FeatureView รูปที่ 1 ด้านบนแสดงพร็อพเพอร์ตี้เฉพาะของ FeatureView ในกล่องโต้ตอบชิ้นงานแคตตาล็อกข้อมูล เช่นเดียวกับชิ้นงานอื่นๆ คุณสามารถดึงข้อมูลพร็อพเพอร์ตี้แบบเป็นโปรแกรมจากพจนานุกรมที่ ee.data.getAsset แสดงผลได้

การนําเสนอภาพ FeatureView

วัตถุ FeatureView สามารถแสดงเป็นภาพได้ในเครื่องมือแก้ไขโค้ด แอป Earth Engine และ Google Maps

ตัวแก้ไขโค้ด

ตัวแก้ไขโค้ดมีคอมโพเนนต์ ui.Map.FeatureViewLayer เพื่อแสดงFeatureViewชิ้นงานเป็นภาพบนแผนที่ ตัวอย่างต่อไปนี้จะกำหนดรหัสFeatureViewเนื้อหา นําเข้าเนื้อหาเป็น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);

การจัดรูปแบบ

คุณจัดสไตล์ FeatureViewLayer ได้โดยส่งพจนานุกรมสไตล์ไปยังฟังก์ชัน ui.Map.FeatureViewLayer หรือเพิ่มลงในเลเยอร์โดยใช้เมธอด setVisParams ด้านล่างนี้คือตัวอย่างการจัดรูปแบบ

  • สีเส้นขอบตามพร็อพเพอร์ตี้ "MARINE" (พื้นที่คุ้มครองอยู่ในสภาพแวดล้อมทางทะเลทั้งหมดหรือบางส่วน)
  • สีของเส้นขอบตามพร็อพเพอร์ตี้ "IUCN_CAT" (หมวดหมู่ของ International Union for Conservation of Nature (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 Maps API

กระบวนการแสดงภาพชิ้นงาน FeatureView โดยใช้ Google Maps API แบ่งออกเป็น 4 ส่วน ได้แก่ รับคีย์ไทล์โดยใช้ ee.data.getFeatureViewTilesKey ส่งคีย์ไปยังอินสแตนซ์ของ FeatureViewTileSource สร้าง ee.layer.ImageOverlay แล้วเพิ่มการวางซ้อนลงในอินสแตนซ์ google.maps.Map โค้ดตัวอย่างในการสร้าง ImageOverlay ใน JavaScript แสดงอยู่ด้านล่าง

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

เลเยอร์ FeatureViewLayer ที่เพิ่มลงในแผนที่เครื่องมือแก้ไขโค้ดเริ่มต้นจะตรวจสอบได้โดยใช้เครื่องมือตรวจสอบ ฟังก์ชันการทํางานจะเหมือนกับ FeatureCollection โปรดทราบว่าผลลัพธ์ที่แสดงสำหรับสถานที่ที่คลิกจะแสดงเฉพาะองค์ประกอบที่มองเห็นได้ในระดับการซูมปัจจุบันเท่านั้น ระบบจะไม่แสดงเรขาคณิตสำหรับองค์ประกอบที่ตรวจสอบเนื่องจากมีการทำให้เรขาคณิตเรียบง่ายลงเป็นส่วนหนึ่งของกระบวนการส่งออก FeatureView

รูปที่ 3 กำลังตรวจสอบ FeatureViewLayer เครื่องมือตรวจสอบจะแสดงเลเยอร์ ฟีเจอร์ รหัสชิ้นงาน และแปรมิเตอร์การแสดงภาพ