การแสดงภาพ

ee.Image มีเมธอดหลายรายการที่แสดงข้อมูลภาพเป็นภาพ RGB เช่น visualize(), getThumbURL(), getMap(), getMapId() (ใช้ในการแสดงแผนที่ Folium ของ Colab) และ Map.addLayer() (ใช้ในการแสดงแผนที่ของเครื่องมือแก้ไขโค้ด ไม่พร้อมใช้งานสำหรับ Python) โดยค่าเริ่มต้น วิธีการเหล่านี้จะกําหนดแถบ 3 แถบแรกเป็นสีแดง เขียว และน้ำเงินตามลําดับ การขยายเริ่มต้นจะอิงตามประเภทข้อมูลในย่านความถี่ (เช่น ระบบจะขยายค่าลอยเป็น [0, 1] และขยายข้อมูล 16 บิตเป็นค่าที่เป็นไปได้ทั้งหมด) ซึ่งอาจเหมาะสมหรือไม่ก็ได้ หากต้องการสร้างเอฟเฟกต์การแสดงภาพที่ต้องการ ให้ระบุพารามิเตอร์การแสดงภาพ ดังนี้

พารามิเตอร์การแสดงภาพรูปภาพ
พารามิเตอร์ คำอธิบาย ประเภท
bands รายการชื่อย่านความถี่ 3 รายการที่คั่นด้วยคอมมาเพื่อแมปกับ RGB list
นาที ค่าที่จะแมปเป็น 0 ตัวเลขหรือรายการตัวเลข 3 รายการ โดยแต่ละรายการมี 1 วง
max ค่าที่จะแมปเป็น 255 ตัวเลขหรือรายการตัวเลข 3 รายการ โดยแต่ละรายการมี 1 วง
gain ค่าที่จะคูณกับค่าพิกเซลแต่ละค่า ตัวเลขหรือรายการตัวเลข 3 รายการ โดยแต่ละรายการมี 1 วง
bias ค่าที่จะเพิ่มลงใน DN แต่ละรายการ ตัวเลขหรือรายการตัวเลข 3 รายการ โดยแต่ละรายการมี 1 วง
gamma ปัจจัยการแก้ไขค่าแกมม่า หมายเลขหรือรายการตัวเลข 3 รายการ โดยแต่ละรายการมี 1 หมายเลข
palette รายการสตริงสีสไตล์ CSS (รูปภาพย่านความถี่เดียวเท่านั้น) รายการสตริงฐาน 16 ที่คั่นด้วยคอมมา
ความทึบ ความทึบแสงของเลเยอร์ (0.0 คือโปร่งแสงทั้งหมดและ 1.0 คือทึบแสงทั้งหมด) ตัวเลข
format "jpg" หรือ "png" สตริง

ภาพ RGB แบบคอมโพสิต

ตัวอย่างต่อไปนี้แสดงการใช้พารามิเตอร์เพื่อจัดสไตล์รูปภาพ Landsat 8 เป็นภาพคอมโพสิตแบบสีเสมือนจริง

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

// Load an image.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');

// Define the visualization parameters.
var vizParams = {
  bands: ['B5', 'B4', 'B3'],
  min: 0,
  max: 0.5,
  gamma: [0.95, 1.1, 1]
};

// Center the map and display the image.
Map.setCenter(-122.1899, 37.5010, 10); // San Francisco Bay
Map.addLayer(image, vizParams, 'false color composite');

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

# Load an image.
image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')

# Define the visualization parameters.
image_viz_params = {
    'bands': ['B5', 'B4', 'B3'],
    'min': 0,
    'max': 0.5,
    'gamma': [0.95, 1.1, 1],
}

# Define a map centered on San Francisco Bay.
map_l8 = geemap.Map(center=[37.5010, -122.1899], zoom=10)

# Add the image layer to the map and display it.
map_l8.add_layer(image, image_viz_params, 'false color composite')
display(map_l8)

ในตัวอย่างนี้ แถบ 'B5' กำหนดเป็นสีแดง 'B4' กำหนดเป็นสีเขียว และ 'B3' กำหนดเป็นสีน้ำเงิน

false_color_sf
ภาพคอมโพสิตสีเสมือนจริงจาก Landsat 8 ของบริเวณอ่าวซานฟรานซิสโก รัฐแคลิฟอร์เนีย สหรัฐอเมริกา

ชุดสี

หากต้องการแสดงแถบเดียวของรูปภาพเป็นสี ให้ตั้งค่าพารามิเตอร์ palette ด้วยแถบสีที่แสดงด้วยรายการสตริงสีสไตล์ CSS (ดูข้อมูลเพิ่มเติมได้ในข้อมูลอ้างอิงนี้) ตัวอย่างต่อไปนี้แสดงวิธีใช้สีตั้งแต่สีฟ้าอมเขียว ('00FFFF') ไปจนถึงน้ำเงิน ('0000FF') เพื่อแสดงผลรูปภาพ ดัชนีน้ำที่ได้จากความแตกต่างที่ปรับมาตรฐาน (NDWI)

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

// Load an image.
var image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318');

// Create an NDWI image, define visualization parameters and display.
var ndwi = image.normalizedDifference(['B3', 'B5']);
var ndwiViz = {min: 0.5, max: 1, palette: ['00FFFF', '0000FF']};
Map.addLayer(ndwi, ndwiViz, 'NDWI', false);

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

# Load an image.
image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318')

# Create an NDWI image, define visualization parameters and display.
ndwi = image.normalizedDifference(['B3', 'B5'])
ndwi_viz = {'min': 0.5, 'max': 1, 'palette': ['00FFFF', '0000FF']}

# Define a map centered on San Francisco Bay.
map_ndwi = geemap.Map(center=[37.5010, -122.1899], zoom=10)

# Add the image layer to the map and display it.
map_ndwi.add_layer(ndwi, ndwi_viz, 'NDWI')
display(map_ndwi)

ในตัวอย่างนี้ โปรดทราบว่าพารามิเตอร์ min และ max จะระบุช่วงของค่าพิกเซลที่ควรใช้กับจานสี ค่ากลางจะยืดแบบเชิงเส้น

และโปรดทราบว่ามีการตั้งค่าพารามิเตอร์ show เป็น false ในตัวอย่างเครื่องมือแก้ไขโค้ด ซึ่งจะทำให้เลเยอร์นั้นปิดอยู่เมื่อเพิ่มลงในแผนที่ คุณเปิดใช้อีกครั้งได้ทุกเมื่อโดยใช้ตัวจัดการเลเยอร์ที่มุมขวาบนของแผนที่เครื่องมือแก้ไขโค้ด

ndwi_sf
Landsat 8 NDWI, บริเวณอ่าวซานฟรานซิสโก สหรัฐอเมริกา สีฟ้าอ่อนคือค่าต่ำ สีฟ้าคือค่าสูง

บันทึกชุดสีเริ่มต้น

หากต้องการบันทึกชุดสีในรูปภาพการจัดประเภทเพื่อไม่ต้องจดจำว่าต้องนำไปใช้เมื่อใด คุณสามารถตั้งค่าพร็อพเพอร์ตี้รูปภาพสตริงที่มีชื่อพิเศษ 2 รายการสำหรับแต่ละย่านความถี่การจัดประเภท

เช่น หากรูปภาพมีแถบชื่อ 'landcover' ซึ่งมีค่า 0, 1 และ 2 สอดคล้องกับคลาส "น้ำ" "ป่า" และ "อื่นๆ" คุณสามารถตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้เพื่อให้การแสดงภาพเริ่มต้นแสดงสีที่ระบุสำหรับแต่ละคลาส (ค่าที่ใช้ในการวิเคราะห์จะไม่ได้รับผลกระทบ)

  • landcover_class_values="0,1,2"
  • landcover_class_palette="0000FF,00FF00,AABBCD"

ดูวิธีตั้งค่าข้อมูลเมตาของเนื้อหาได้ที่หน้าการจัดการเนื้อหา

การมาสก์

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

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

// Mask the non-watery parts of the image, where NDWI < 0.4.
var ndwiMasked = ndwi.updateMask(ndwi.gte(0.4));
Map.addLayer(ndwiMasked, ndwiViz, 'NDWI masked');

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

# Mask the non-watery parts of the image, where NDWI < 0.4.
ndwi_masked = ndwi.updateMask(ndwi.gte(0.4))

# Define a map centered on San Francisco Bay.
map_ndwi_masked = geemap.Map(center=[37.5010, -122.1899], zoom=10)

# Add the image layer to the map and display it.
map_ndwi_masked.add_layer(ndwi_masked, ndwi_viz, 'NDWI masked')
display(map_ndwi_masked)

รูปภาพการแสดงภาพ

ใช้วิธีการ image.visualize() เพื่อแปลงรูปภาพเป็นรูปภาพ RGB 8 บิตสำหรับแสดงผลหรือส่งออก เช่น หากต้องการแปลงภาพคอมโพสิตสีเสมือนจริงและ NDWI เป็นภาพแสดงผล 3 ย่านความถี่ ให้ใช้คำสั่งต่อไปนี้

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

// Create visualization layers.
var imageRGB = image.visualize({bands: ['B5', 'B4', 'B3'], max: 0.5});
var ndwiRGB = ndwiMasked.visualize({
  min: 0.5,
  max: 1,
  palette: ['00FFFF', '0000FF']
});

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

image_rgb = image.visualize(bands=['B5', 'B4', 'B3'], max=0.5)
ndwi_rgb = ndwi_masked.visualize(min=0.5, max=1, palette=['00FFFF', '0000FF'])

การปกปิดใบหน้า

คุณสามารถใช้การมาสก์และ imageCollection.mosaic() (ดูข้อมูลเกี่ยวกับการต่อภาพโมเสกได้ที่ส่วนการต่อภาพโมเสก) เพื่อให้ได้เอฟเฟกต์การเขียนแผนที่ที่หลากหลาย เมธอด mosaic() จะแสดงผลเลเยอร์ในรูปภาพเอาต์พุตตามลําดับในคอลเล็กชันอินพุต ตัวอย่างต่อไปนี้ใช้ mosaic() เพื่อรวม NDWI ที่ปกปิดและภาพคอมโพสิตสีเสมือนจริงเข้าด้วยกัน และรับภาพใหม่

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

// Mosaic the visualization layers and display (or export).
var mosaic = ee.ImageCollection([imageRGB, ndwiRGB]).mosaic();
Map.addLayer(mosaic, {}, 'mosaic');

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

# Mosaic the visualization layers and display (or export).
mosaic = ee.ImageCollection([image_rgb, ndwi_rgb]).mosaic()

# Define a map centered on San Francisco Bay.
map_mosaic = geemap.Map(center=[37.5010, -122.1899], zoom=10)

# Add the image layer to the map and display it.
map_mosaic.add_layer(mosaic, None, 'mosaic')
display(map_mosaic)

ในตัวอย่างนี้ โปรดสังเกตว่ามีการให้รายการรูปภาพการแสดงภาพ 2 รูปแก่คอนสตรคเตอร์ ImageCollection ลําดับของรายการจะกําหนดลําดับการแสดงผลรูปภาพบนแผนที่

mosaic_sf
ภาพโมเสกของภาพคอมโพสิตสีเท็จและ NDWI ของ Landsat 8 บริเวณอ่าวซานฟรานซิสโก สหรัฐอเมริกา

การตัด

วิธี image.clip() มีประโยชน์ในการสร้างเอฟเฟกต์แผนที่ ตัวอย่างต่อไปนี้แสดงการคลิปภาพโมเสกที่สร้างขึ้นก่อนหน้านี้ไปยังโซนบัฟเฟอร์ที่กำหนดเองรอบๆ เมืองซานฟรานซิสโก

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

// Create a circle by drawing a 20000 meter buffer around a point.
var roi = ee.Geometry.Point([-122.4481, 37.7599]).buffer(20000);

// Display a clipped version of the mosaic.
Map.addLayer(mosaic.clip(roi), null, 'mosaic clipped');

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

# Create a circle by drawing a 20000 meter buffer around a point.
roi = ee.Geometry.Point([-122.4481, 37.7599]).buffer(20000)
mosaic_clipped = mosaic.clip(roi)

# Define a map centered on San Francisco.
map_mosaic_clipped = geemap.Map(center=[37.7599, -122.4481], zoom=10)

# Add the image layer to the map and display it.
map_mosaic_clipped.add_layer(mosaic_clipped, None, 'mosaic clipped')
display(map_mosaic_clipped)

ในตัวอย่างก่อนหน้านี้ โปรดทราบว่ามีการระบุพิกัดให้กับคอนสตรคเตอร์ Geometry และระบุความยาวบัฟเฟอร์เป็น 20,000 เมตร ดูข้อมูลเพิ่มเติมเกี่ยวกับเรขาคณิตได้ในหน้าเรขาคณิต

clipped_sf
ภาพโมเสกที่แสดงด้านบนถูกตัดไปยังพื้นที่รอบๆ ซานฟรานซิสโก รัฐแคลิฟอร์เนีย สหรัฐอเมริกา

การแสดงผลแผนที่เชิงหมวดหมู่

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

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

// Load 2012 MODIS land cover and select the IGBP classification.
var cover = ee.Image('MODIS/051/MCD12Q1/2012_01_01')
  .select('Land_Cover_Type_1');

// Define a palette for the 18 distinct land cover classes.
var igbpPalette = [
  'aec3d4', // water
  '152106', '225129', '369b47', '30eb5b', '387242', // forest
  '6a2325', 'c3aa69', 'b76031', 'd9903d', '91af40',  // shrub, grass
  '111149', // wetlands
  'cdb33b', // croplands
  'cc0013', // urban
  '33280d', // crop mosaic
  'd7cdcc', // snow and ice
  'f7e084', // barren
  '6f6f6f'  // tundra
];

// Specify the min and max labels and the color palette matching the labels.
Map.setCenter(-99.229, 40.413, 5);
Map.addLayer(cover,
             {min: 0, max: 17, palette: igbpPalette},
             'IGBP classification');

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

# Load 2012 MODIS land cover and select the IGBP classification.
cover = ee.Image('MODIS/051/MCD12Q1/2012_01_01').select('Land_Cover_Type_1')

# Define a palette for the 18 distinct land cover classes.
igbp_palette = [
    'aec3d4',  # water
    '152106',
    '225129',
    '369b47',
    '30eb5b',
    '387242',  # forest
    '6a2325',
    'c3aa69',
    'b76031',
    'd9903d',
    '91af40',  # shrub, grass
    '111149',  # wetlands
    'cdb33b',  # croplands
    'cc0013',  # urban
    '33280d',  # crop mosaic
    'd7cdcc',  # snow and ice
    'f7e084',  # barren
    '6f6f6f',  # tundra
]

# Define a map centered on the United States.
map_palette = geemap.Map(center=[40.413, -99.229], zoom=5)

# Add the image layer to the map and display it. Specify the min and max labels
# and the color palette matching the labels.
map_palette.add_layer(
    cover, {'min': 0, 'max': 17, 'palette': igbp_palette}, 'IGBP classes'
)
display(map_palette)
landcover_palettized
การปกคลุมดินของ MODIS ปี 2012 โดยใช้การจำแนกประเภท IGBP

ตัวระบุเลเยอร์ที่ปรับแต่งสไตล์

คุณสามารถใช้ตัวบ่งชี้เลเยอร์ที่มีสไตล์ (SLD) เพื่อแสดงภาพ ระบุคำอธิบาย XML เกี่ยวกับการใช้สัญลักษณ์และการระบายสีของรูปภาพให้กับ image.sldStyle() โดยเฉพาะองค์ประกอบ RasterSymbolizer ดูข้อมูลเพิ่มเติมเกี่ยวกับองค์ประกอบ RasterSymbolizer ได้ที่นี่ เช่น หากต้องการแสดงผลแผนที่การปกคลุมดินที่อธิบายไว้ในส่วนการแสดงผลแผนที่เชิงหมวดหมู่ด้วย SLD ให้ใช้

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

var cover = ee.Image('MODIS/051/MCD12Q1/2012_01_01').select('Land_Cover_Type_1');

// Define an SLD style of discrete intervals to apply to the image.
var sld_intervals =
'<RasterSymbolizer>' +
  '<ColorMap type="intervals" extended="false">' +
    '<ColorMapEntry color="#aec3d4" quantity="0" label="Water"/>' +
    '<ColorMapEntry color="#152106" quantity="1" label="Evergreen Needleleaf Forest"/>' +
    '<ColorMapEntry color="#225129" quantity="2" label="Evergreen Broadleaf Forest"/>' +
    '<ColorMapEntry color="#369b47" quantity="3" label="Deciduous Needleleaf Forest"/>' +
    '<ColorMapEntry color="#30eb5b" quantity="4" label="Deciduous Broadleaf Forest"/>' +
    '<ColorMapEntry color="#387242" quantity="5" label="Mixed Deciduous Forest"/>' +
    '<ColorMapEntry color="#6a2325" quantity="6" label="Closed Shrubland"/>' +
    '<ColorMapEntry color="#c3aa69" quantity="7" label="Open Shrubland"/>' +
    '<ColorMapEntry color="#b76031" quantity="8" label="Woody Savanna"/>' +
    '<ColorMapEntry color="#d9903d" quantity="9" label="Savanna"/>' +
    '<ColorMapEntry color="#91af40" quantity="10" label="Grassland"/>' +
    '<ColorMapEntry color="#111149" quantity="11" label="Permanent Wetland"/>' +
    '<ColorMapEntry color="#cdb33b" quantity="12" label="Cropland"/>' +
    '<ColorMapEntry color="#cc0013" quantity="13" label="Urban"/>' +
    '<ColorMapEntry color="#33280d" quantity="14" label="Crop, Natural Veg. Mosaic"/>' +
    '<ColorMapEntry color="#d7cdcc" quantity="15" label="Permanent Snow, Ice"/>' +
    '<ColorMapEntry color="#f7e084" quantity="16" label="Barren, Desert"/>' +
    '<ColorMapEntry color="#6f6f6f" quantity="17" label="Tundra"/>' +
  '</ColorMap>' +
'</RasterSymbolizer>';
Map.addLayer(cover.sldStyle(sld_intervals), {}, 'IGBP classification styled');

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

cover = ee.Image('MODIS/051/MCD12Q1/2012_01_01').select('Land_Cover_Type_1')

# Define an SLD style of discrete intervals to apply to the image.
sld_intervals = """
<RasterSymbolizer>
  <ColorMap  type="intervals" extended="false" >
    <ColorMapEntry color="#aec3d4" quantity="0" label="Water"/>
    <ColorMapEntry color="#152106" quantity="1" label="Evergreen Needleleaf Forest"/>
    <ColorMapEntry color="#225129" quantity="2" label="Evergreen Broadleaf Forest"/>
    <ColorMapEntry color="#369b47" quantity="3" label="Deciduous Needleleaf Forest"/>
    <ColorMapEntry color="#30eb5b" quantity="4" label="Deciduous Broadleaf Forest"/>
    <ColorMapEntry color="#387242" quantity="5" label="Mixed Deciduous Forest"/>
    <ColorMapEntry color="#6a2325" quantity="6" label="Closed Shrubland"/>
    <ColorMapEntry color="#c3aa69" quantity="7" label="Open Shrubland"/>
    <ColorMapEntry color="#b76031" quantity="8" label="Woody Savanna"/>
    <ColorMapEntry color="#d9903d" quantity="9" label="Savanna"/>
    <ColorMapEntry color="#91af40" quantity="10" label="Grassland"/>
    <ColorMapEntry color="#111149" quantity="11" label="Permanent Wetland"/>
    <ColorMapEntry color="#cdb33b" quantity="12" label="Cropland"/>
    <ColorMapEntry color="#cc0013" quantity="13" label="Urban"/>
    <ColorMapEntry color="#33280d" quantity="14" label="Crop, Natural Veg. Mosaic"/>
    <ColorMapEntry color="#d7cdcc" quantity="15" label="Permanent Snow, Ice"/>
    <ColorMapEntry color="#f7e084" quantity="16" label="Barren, Desert"/>
    <ColorMapEntry color="#6f6f6f" quantity="17" label="Tundra"/>
  </ColorMap>
</RasterSymbolizer>"""

# Apply the SLD style to the image.
cover_sld = cover.sldStyle(sld_intervals)

# Define a map centered on the United States.
map_sld_categorical = geemap.Map(center=[40.413, -99.229], zoom=5)

# Add the image layer to the map and display it.
map_sld_categorical.add_layer(cover_sld, None, 'IGBP classes styled')
display(map_sld_categorical)

หากต้องการสร้างรูปภาพการแสดงภาพที่มีแถบสี ให้ตั้งค่าประเภทของ ColorMap เป็น "แถบสี" ตัวอย่างต่อไปนี้เปรียบเทียบประเภท "ช่วงเวลา" และ "การเปลี่ยนระดับ" สำหรับการเรนเดอร์ DEM

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

// Load SRTM Digital Elevation Model data.
var image = ee.Image('CGIAR/SRTM90_V4');

// Define an SLD style of discrete intervals to apply to the image. Use the
// opacity keyword to set pixels less than 0 as completely transparent. Pixels
// with values greater than or equal to the final entry quantity are set to
// fully transparent by default.
var sld_intervals =
  '<RasterSymbolizer>' +
    '<ColorMap type="intervals" extended="false" >' +
      '<ColorMapEntry color="#0000ff" quantity="0" label="0 ﹤ x" opacity="0" />' +
      '<ColorMapEntry color="#00ff00" quantity="100" label="0 ≤ x ﹤ 100" />' +
      '<ColorMapEntry color="#007f30" quantity="200" label="100 ≤ x ﹤ 200" />' +
      '<ColorMapEntry color="#30b855" quantity="300" label="200 ≤ x ﹤ 300" />' +
      '<ColorMapEntry color="#ff0000" quantity="400" label="300 ≤ x ﹤ 400" />' +
      '<ColorMapEntry color="#ffff00" quantity="900" label="400 ≤ x ﹤ 900" />' +
    '</ColorMap>' +
  '</RasterSymbolizer>';

// Define an sld style color ramp to apply to the image.
var sld_ramp =
  '<RasterSymbolizer>' +
    '<ColorMap type="ramp" extended="false" >' +
      '<ColorMapEntry color="#0000ff" quantity="0" label="0"/>' +
      '<ColorMapEntry color="#00ff00" quantity="100" label="100" />' +
      '<ColorMapEntry color="#007f30" quantity="200" label="200" />' +
      '<ColorMapEntry color="#30b855" quantity="300" label="300" />' +
      '<ColorMapEntry color="#ff0000" quantity="400" label="400" />' +
      '<ColorMapEntry color="#ffff00" quantity="500" label="500" />' +
    '</ColorMap>' +
  '</RasterSymbolizer>';

// Add the image to the map using both the color ramp and interval schemes.
Map.setCenter(-76.8054, 42.0289, 8);
Map.addLayer(image.sldStyle(sld_intervals), {}, 'SLD intervals');
Map.addLayer(image.sldStyle(sld_ramp), {}, 'SLD ramp');

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

# Load SRTM Digital Elevation Model data.
image = ee.Image('CGIAR/SRTM90_V4')

# Define an SLD style of discrete intervals to apply to the image.
sld_intervals = """
    <RasterSymbolizer>
      <ColorMap type="intervals" extended="false" >
        <ColorMapEntry color="#0000ff" quantity="0" label="0"/>
        <ColorMapEntry color="#00ff00" quantity="100" label="1-100" />
        <ColorMapEntry color="#007f30" quantity="200" label="110-200" />
        <ColorMapEntry color="#30b855" quantity="300" label="210-300" />
        <ColorMapEntry color="#ff0000" quantity="400" label="310-400" />
        <ColorMapEntry color="#ffff00" quantity="1000" label="410-1000" />
      </ColorMap>
    </RasterSymbolizer>"""

# Define an sld style color ramp to apply to the image.
sld_ramp = """
    <RasterSymbolizer>
      <ColorMap type="ramp" extended="false" >
        <ColorMapEntry color="#0000ff" quantity="0" label="0"/>
        <ColorMapEntry color="#00ff00" quantity="100" label="100" />
        <ColorMapEntry color="#007f30" quantity="200" label="200" />
        <ColorMapEntry color="#30b855" quantity="300" label="300" />
        <ColorMapEntry color="#ff0000" quantity="400" label="400" />
        <ColorMapEntry color="#ffff00" quantity="500" label="500" />
      </ColorMap>
    </RasterSymbolizer>"""

# Define a map centered on the United States.
map_sld_interval = geemap.Map(center=[40.413, -99.229], zoom=5)

# Add the image layers to the map and display it.
map_sld_interval.add_layer(
    image.sldStyle(sld_intervals), None, 'SLD intervals'
)
map_sld_interval.add_layer(image.sldStyle(sld_ramp), None, 'SLD ramp')
display(map_sld_interval)

SLD ยังมีประโยชน์ในการขยายค่าพิกเซลเพื่อปรับปรุงการแสดงภาพข้อมูลแบบต่อเนื่อง ตัวอย่างเช่น โค้ดต่อไปนี้จะเปรียบเทียบผลลัพธ์ของการยืดเชิงเส้นแบบกำหนดเองกับ "การปรับให้เป็นมาตรฐาน" แบบต่ำสุด-สูงสุดและการทำให้เท่ากันแบบ "ฮิสโตแกรม"

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

// Load a Landsat 8 raw image.
var image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318');

// Define a RasterSymbolizer element with '_enhance_' for a placeholder.
var template_sld =
  '<RasterSymbolizer>' +
    '<ContrastEnhancement><_enhance_/></ContrastEnhancement>' +
    '<ChannelSelection>' +
      '<RedChannel>' +
        '<SourceChannelName>B5</SourceChannelName>' +
      '</RedChannel>' +
      '<GreenChannel>' +
        '<SourceChannelName>B4</SourceChannelName>' +
      '</GreenChannel>' +
      '<BlueChannel>' +
        '<SourceChannelName>B3</SourceChannelName>' +
      '</BlueChannel>' +
    '</ChannelSelection>' +
  '</RasterSymbolizer>';

// Get SLDs with different enhancements.
var equalize_sld = template_sld.replace('_enhance_', 'Histogram');
var normalize_sld = template_sld.replace('_enhance_', 'Normalize');

// Display the results.
Map.centerObject(image, 10);
Map.addLayer(image, {bands: ['B5', 'B4', 'B3'], min: 0, max: 15000}, 'Linear');
Map.addLayer(image.sldStyle(equalize_sld), {}, 'Equalized');
Map.addLayer(image.sldStyle(normalize_sld), {}, 'Normalized');

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

# Load a Landsat 8 raw image.
image = ee.Image('LANDSAT/LC08/C02/T1/LC08_044034_20140318')

# Define a RasterSymbolizer element with '_enhance_' for a placeholder.
template_sld = """
<RasterSymbolizer>
  <ContrastEnhancement><_enhance_/></ContrastEnhancement>
  <ChannelSelection>
    <RedChannel>
      <SourceChannelName>B5</SourceChannelName>
    </RedChannel>
    <GreenChannel>
      <SourceChannelName>B4</SourceChannelName>
    </GreenChannel>
    <BlueChannel>
      <SourceChannelName>B3</SourceChannelName>
    </BlueChannel>
  </ChannelSelection>
</RasterSymbolizer>"""

# Get SLDs with different enhancements.
equalize_sld = template_sld.replace('_enhance_', 'Histogram')
normalize_sld = template_sld.replace('_enhance_', 'Normalize')

# Define a map centered on San Francisco Bay.
map_sld_continuous = geemap.Map(center=[37.5010, -122.1899], zoom=10)

# Add the image layers to the map and display it.
map_sld_continuous.add_layer(
    image, {'bands': ['B5', 'B4', 'B3'], 'min': 0, 'max': 15000}, 'Linear'
)
map_sld_continuous.add_layer(image.sldStyle(equalize_sld), None, 'Equalized')
map_sld_continuous.add_layer(
    image.sldStyle(normalize_sld), None, 'Normalized'
)
display(map_sld_continuous)

สิ่งที่ควรทราบเกี่ยวกับการใช้ SLD ใน Earth Engine

  • รองรับ OGC SLD 1.0 และ OGC SE 1.1
  • เอกสาร XML ที่ส่งมาอาจเป็นเอกสารที่สมบูรณ์ หรือจะเป็นเพียงองค์ประกอบ RasterSymbolizer ลงมา
  • คุณเลือกย่านความถี่ได้ด้วยชื่อหรือดัชนีของ Earth Engine ('1', '2', ...)
  • รูปภาพจุดลอยไม่รองรับกลไกการปรับความคมชัดแบบฮิสโตแกรมและการปรับความคมชัดให้ปกติ
  • ระบบจะพิจารณาความทึบแสงเฉพาะเมื่อมีค่าเป็น 0.0 (โปร่งใส) ระบบจะถือว่าค่าความทึบแสงที่ไม่ใช่ 0 เป็นค่าทึบแสงทั้งหมด
  • ระบบจะไม่สนใจคําจํากัดความ OverlapBehavior ในขณะนี้
  • ขณะนี้ระบบยังไม่รองรับกลไก ShadedRelief
  • ขณะนี้ระบบยังไม่รองรับกลไก ImageOutline
  • ระบบจะไม่สนใจองค์ประกอบ Geometry
  • รูปภาพเอาต์พุตจะมีข้อมูลเมตา histogram_bandname หากมีการขอการปรับสมดุลฮิสโตแกรมหรือการทำให้เป็นมาตรฐาน

รูปภาพขนาดย่อ

ใช้เมธอด ee.Image.getThumbURL() เพื่อสร้างรูปภาพขนาดย่อ PNG หรือ JPEG สำหรับออบเจ็กต์ ee.Image การพิมพ์ผลลัพธ์ของนิพจน์ที่ลงท้ายด้วยการเรียกใช้ getThumbURL() จะส่งผลให้ระบบพิมพ์ URL การไปที่ URL จะตั้งค่าเซิร์ฟเวอร์ Earth Engine ให้สร้างภาพขนาดย่อที่ขอไปขณะนั้น รูปภาพจะแสดงในเบราว์เซอร์เมื่อประมวลผลเสร็จสิ้น โดยดาวน์โหลดได้โดยเลือกตัวเลือกที่เหมาะสมจากเมนูตามบริบทของรูปภาพซึ่งคลิกขวา

thumbnail_in_browser
โมเดลความสูงเชิงดิจิทัล SRTM ที่แสดงเป็นภาพขนาดย่อ PNG ในเบราว์เซอร์

เมธอด getThumbURL() มีพารามิเตอร์ตามที่อธิบายไว้ในตารางพารามิเตอร์การแสดงภาพด้านบน นอกจากนี้ ยังใช้อาร์กิวเมนต์ dimensions, region และ crs (ไม่บังคับ) ซึ่งควบคุมขอบเขตเชิงพื้นที่ ขนาด และการฉายภาพการแสดงผลของภาพขนาดย่อ

พารามิเตอร์เพิ่มเติมสําหรับ ee.Image.getThumbURL() พร้อมหมายเหตุเกี่ยวกับรูปแบบ
พารามิเตอร์ คำอธิบาย ประเภท
dimensions ขนาดภาพขนาดย่อในหน่วยพิกเซล หากระบุจำนวนเต็มเพียงค่าเดียว ระบบจะกำหนดขนาดของมิติข้อมูลสัดส่วนภาพที่ใหญ่กว่าและปรับขนาดมิติข้อมูลขนาดเล็กตามสัดส่วน มีค่าเริ่มต้นเป็น 512 พิกเซลสำหรับขนาดของรูปภาพที่ใหญ่กว่า จํานวนเต็มหรือสตริงเดียวในรูปแบบ 'WIDTHxHEIGHT'
region ภูมิภาคทางภูมิศาสตร์ของรูปภาพที่จะแสดงผล รูปภาพทั้งรูปโดยค่าเริ่มต้น หรือขอบเขตของเรขาคณิตที่ระบุ GeoJSON หรือรายการ 2 มิติของพิกัดจุดอย่างน้อย 3 รายการที่กําหนดวงแหวนเชิงเส้น
crs การฉายภาพเป้าหมาย เช่น "EPSG:3857" ค่าเริ่มต้นคือ WGS84 ("EPSG:4326") สตริง
format กำหนดรูปแบบของภาพปกเป็น PNG หรือ JPEG รูปแบบ PNG เริ่มต้นจะใช้เป็น RGBA โดยที่ช่องทางอัลฟ่าแสดงพิกเซลที่ถูกต้องและไม่ถูกต้อง ซึ่งกำหนดโดย mask() ของรูปภาพ พิกเซลที่ไม่ถูกต้องจะเป็นแบบโปร่งใส รูปแบบ JPEG (ไม่บังคับ) จะใช้เป็น RGB โดยระบบจะเติมค่า 0 ลงในพิกเซลรูปภาพที่ไม่ถูกต้องในช่อง RGB สตริง เช่น "png" หรือ "jpg"

รูปภาพย่านความถี่เดียวจะแสดงเป็นโมโนโครมโดยค่าเริ่มต้น เว้นแต่จะมีการใช้อาร์กิวเมนต์ palette รูปภาพหลายย่านความถี่จะใช้การแสดงภาพ RGB ของย่านความถี่ 3 ย่านแรกโดยค่าเริ่มต้น เว้นแต่จะมีการใช้อาร์กิวเมนต์ bands หากระบุเพียง 2 ย่านความถี่ ย่านความถี่แรกจะแมปกับสีแดง ย่านความถี่ที่ 2 จะแมปกับสีน้ำเงิน และช่องสีเขียวจะเติมด้วย 0

ต่อไปนี้คือชุดตัวอย่างที่แสดงการผสมผสานต่างๆ ของอาร์กิวเมนต์พารามิเตอร์ getThumbURL() คลิก URL ที่แสดงเมื่อคุณเรียกใช้สคริปต์นี้เพื่อดูภาพขนาดย่อ

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

// Fetch a digital elevation model.
var image = ee.Image('CGIAR/SRTM90_V4');

// Request a default thumbnail of the DEM with defined linear stretch.
// Set masked pixels (ocean) to 1000 so they map as gray.
var thumbnail1 = image.unmask(1000).getThumbURL({
  'min': 0,
  'max': 3000,
  'dimensions': 500,
});
print('Default extent:', thumbnail1);

// Specify region by rectangle, define palette, set larger aspect dimension size.
var thumbnail2 = image.getThumbURL({
  'min': 0,
  'max': 3000,
  'palette': ['00A600','63C600','E6E600','E9BD3A','ECB176','EFC2B3','F2F2F2'],
  'dimensions': 500,
  'region': ee.Geometry.Rectangle([-84.6, -55.9, -32.9, 15.7]),
});
print('Rectangle region and palette:', thumbnail2);

// Specify region by a linear ring and set display CRS as Web Mercator.
var thumbnail3 = image.getThumbURL({
  'min': 0,
  'max': 3000,
  'palette': ['00A600','63C600','E6E600','E9BD3A','ECB176','EFC2B3','F2F2F2'],
  'region': ee.Geometry.LinearRing([[-84.6, 15.7], [-84.6, -55.9], [-32.9, -55.9]]),
  'dimensions': 500,
  'crs': 'EPSG:3857'
});
print('Linear ring region and specified crs', thumbnail3);

การตั้งค่า Python

ดูข้อมูลเกี่ยวกับ Python API และการใช้ geemap สําหรับการพัฒนาแบบอินเทอร์แอกทีฟได้ที่หน้า สภาพแวดล้อม Python

import ee
import geemap.core as geemap

Colab (Python)

# Fetch a digital elevation model.
image = ee.Image('CGIAR/SRTM90_V4')

# Request a default thumbnail of the DEM with defined linear stretch.
# Set masked pixels (ocean) to 1000 so they map as gray.
thumbnail_1 = image.unmask(1000).getThumbURL({
    'min': 0,
    'max': 3000,
    'dimensions': 500,
})
print('Default extent:', thumbnail_1)

# Specify region by rectangle, define palette, set larger aspect dimension size.
thumbnail_2 = image.getThumbURL({
    'min': 0,
    'max': 3000,
    'palette': [
        '00A600',
        '63C600',
        'E6E600',
        'E9BD3A',
        'ECB176',
        'EFC2B3',
        'F2F2F2',
    ],
    'dimensions': 500,
    'region': ee.Geometry.Rectangle([-84.6, -55.9, -32.9, 15.7]),
})
print('Rectangle region and palette:', thumbnail_2)

# Specify region by a linear ring and set display CRS as Web Mercator.
thumbnail_3 = image.getThumbURL({
    'min': 0,
    'max': 3000,
    'palette': [
        '00A600',
        '63C600',
        'E6E600',
        'E9BD3A',
        'ECB176',
        'EFC2B3',
        'F2F2F2',
    ],
    'region': ee.Geometry.LinearRing(
        [[-84.6, 15.7], [-84.6, -55.9], [-32.9, -55.9]]
    ),
    'dimensions': 500,
    'crs': 'EPSG:3857',
})
print('Linear ring region and specified crs:', thumbnail_3)