พื้นผิว

Earth Engine มีวิธีการพิเศษหลายวิธีในการประมาณพื้นผิวเชิงพื้นที่ เมื่อรูปภาพมีค่าแบบไม่ต่อเนื่อง (ไม่ใช่ทศนิยม) คุณสามารถใช้ image.entropy() เพื่อคํานวณเอนโทรปีในบริเวณใกล้เคียง ดังนี้

เครื่องมือแก้ไขโค้ด (JavaScript)

// Load a high-resolution NAIP image.
var image = ee.Image('USDA/NAIP/DOQQ/m_3712213_sw_10_1_20140613');

// Zoom to San Francisco, display.
Map.setCenter(-122.466123, 37.769833, 17);
Map.addLayer(image, {max: 255}, 'image');

// Get the NIR band.
var nir = image.select('N');

// Define a neighborhood with a kernel.
var square = ee.Kernel.square({radius: 4});

// Compute entropy and display.
var entropy = nir.entropy(square);
Map.addLayer(entropy,
             {min: 1, max: 5, palette: ['0000CC', 'CC0000']},
             'entropy');

โปรดทราบว่าย่านความถี่ NIR จะปรับขนาดเป็น 8 บิตก่อนเรียกใช้ entropy() เนื่องจากการคำนวณเอนโทรปีใช้อินพุตที่มีค่าแบบไม่ต่อเนื่อง องค์ประกอบที่ไม่ใช่ 0 ในเคอร์เนลจะระบุพื้นที่ใกล้เคียง

อีกวิธีในการวัดพื้นผิวคือการใช้เมทริกซ์ความถี่ที่พบร่วมกันระดับสีเทา (GLCM) เมื่อใช้รูปภาพและ Kernel จากตัวอย่างก่อนหน้านี้ ให้คํานวณคอนทราสต์ตาม GLCM ดังนี้

เครื่องมือแก้ไขโค้ด (JavaScript)

// Compute the gray-level co-occurrence matrix (GLCM), get contrast.
var glcm = nir.glcmTexture({size: 4});
var contrast = glcm.select('N_contrast');
Map.addLayer(contrast,
             {min: 0, max: 1500, palette: ['0000CC', 'CC0000']},
             'contrast');

image.glcm() จะแสดงผลค่าพื้นผิวหลายค่า ดูข้อมูลอ้างอิงทั้งหมดเกี่ยวกับเอาต์พุตได้ที่ Haralick et al. (1973) และ Conners et al. (1984)

คุณสามารถคํานวณการวัดการเชื่อมโยงเชิงพื้นที่ระดับท้องถิ่น เช่น C ของ Geary (Anselin 1995) ใน Earth Engine โดยใช้ image.neighborhoodToBands() การใช้รูปภาพจากตัวอย่างก่อนหน้า

เครื่องมือแก้ไขโค้ด (JavaScript)

// Create a list of weights for a 9x9 kernel.
var row = [1, 1, 1, 1, 1, 1, 1, 1, 1];
// The center of the kernel is zero.
var centerRow = [1, 1, 1, 1, 0, 1, 1, 1, 1];
// Assemble a list of lists: the 9x9 kernel weights as a 2-D matrix.
var rows = [row, row, row, row, centerRow, row, row, row, row];
// Create the kernel from the weights.
// Non-zero weights represent the spatial neighborhood.
var kernel = ee.Kernel.fixed(9, 9, rows, -4, -4, false);

// Convert the neighborhood into multiple bands.
var neighs = nir.neighborhoodToBands(kernel);

// Compute local Geary's C, a measure of spatial association.
var gearys = nir.subtract(neighs).pow(2).reduce(ee.Reducer.sum())
             .divide(Math.pow(9, 2));
Map.addLayer(gearys,
             {min: 20, max: 2500, palette: ['0000CC', 'CC0000']},
             "Geary's C");

ดูตัวอย่างการใช้ส่วนเบี่ยงเบนมาตรฐานของพื้นที่ใกล้เคียงเพื่อคํานวณพื้นผิวของรูปภาพได้ที่หน้าสถิติของพื้นที่ใกล้เคียงของรูปภาพ