แถบของรูปภาพอินพุตหลักจะพร้อมใช้งานโดยใช้ฟังก์ชัน b() ในตัว เช่น b(0) หรือ b('band_name')
ระบบจะตีความตัวแปรในนิพจน์เป็นพารามิเตอร์รูปภาพเพิ่มเติมซึ่งต้องระบุใน opt_map เข้าถึงแถบของรูปภาพแต่ละรูปได้ เช่น image.band_name หรือ image[0]
ทั้ง b() และ image[] อนุญาตให้อาร์กิวเมนต์หลายรายการระบุหลายแบนด์ เช่น b(1, 'name', 3) การเรียกใช้ b() โดยไม่มีอาร์กิวเมนต์หรือการใช้ตัวแปรด้วยตัวเองจะแสดงผลทุกแบนด์ของรูปภาพ
หากผลลัพธ์ของนิพจน์เป็นแถบเดียว คุณจะกำหนดชื่อได้โดยใช้ตัวดำเนินการ "=" (เช่น x = a + b)
แสดงผลรูปภาพที่คำนวณโดยนิพจน์ที่ระบุ
การใช้งาน | การคืนสินค้า |
---|---|
Image.expression(expression, map) | รูปภาพ |
อาร์กิวเมนต์ | ประเภท | รายละเอียด |
---|---|---|
ดังนี้ image | รูปภาพ | อินสแตนซ์รูปภาพ |
expression | สตริง | นิพจน์ที่จะประเมิน |
map | Dictionary<Image> (ไม่บังคับ) | แผนที่ของรูปภาพอินพุตที่พร้อมใช้งานตามชื่อ |
ตัวอย่าง
โปรแกรมแก้ไขโค้ด (JavaScript)
// The following expressions calculate the normalized difference vegetation // index (NDVI): (NIR - Red) / (NIR + Red). // NIR is Landsat 8 L2 band 'SR_B5', the 4th band index. // Red is Landsat 8 L2 band 'SR_B4', the 3rd band index. // A Landsat 8 L2 surface reflectance image. var img = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508'); // Visualization parameters for NDVI. var ndviVis = {min: 0, max: 0.5}; // Expression using image band indices. var bandIndexExp = '(b(4) - b(3)) / (b(4) + b(3))'; var bandIndexImg = img.expression(bandIndexExp).rename('NDVI'); Map.setCenter(-122.14, 37.38, 11); Map.addLayer(bandIndexImg, ndviVis, 'NDVI 1'); // Expression using image band names. var bandNameExp = '(b("SR_B5") - b("SR_B4")) / (b("SR_B5") + b("SR_B4"))'; var bandNameImg = img.expression(bandNameExp).rename('NDVI'); Map.addLayer(bandNameImg, ndviVis, 'NDVI 2'); // Expression using named variables. var namedVarsExp = '(NIR - Red) / (NIR + Red)'; var namedVarsImg = ee.Image().expression({ expression: namedVarsExp, map: { NIR: img.select('SR_B5'), Red: img.select('SR_B4') } }).rename('NDVI'); Map.addLayer(namedVarsImg, ndviVis, 'NDVI 3'); // Expression using named variables with image band access by dot notation. var namedVarsDotExp = '(ls8.SR_B5 - ls8.SR_B4) / (ls8.SR_B5 + ls8.SR_B4)'; var namedVarsDotImg = ee.Image().expression({ expression: namedVarsDotExp, map: {ls8: img} }).rename('NDVI'); Map.addLayer(namedVarsDotImg, ndviVis, 'NDVI 4'); // Expressions can use arithmetic operators (+ - * / % **), relational // operators (== != < > <= >=), logical operators (&& || ! ^), the ternary // operator (condition ? ifTrue : ifFalse), and a subset of JavaScript Math // functions. Math functions are called by name directly, they are not accessed // from the Math object (e.g., sqrt() instead of Math.sqrt()). var jsMathExp = 'c = sqrt(pow(a, 2) + pow(b, 2))'; var jsMathImg = ee.Image().expression({ expression: jsMathExp, map: { a: ee.Image(5), b: img.select('SR_B2') } }); Map.addLayer(jsMathImg, {min: 5000, max: 20000}, 'Hypotenuse', false);
import ee import geemap.core as geemap
Colab (Python)
# The following expressions calculate the normalized difference vegetation # index (NDVI): (NIR - Red) / (NIR + Red). # NIR is Landsat 8 L2 band 'SR_B5', the 4th band index. # Red is Landsat 8 L2 band 'SR_B4', the 3rd band index. # A Landsat 8 L2 surface reflectance image. img = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508') # Visualization parameters for NDVI. ndvi_vis = {'min': 0, 'max': 0.5} # Expression using image band indices. band_index_exp = '(b(4) - b(3)) / (b(4) + b(3))' band_index_img = img.expression(band_index_exp).rename('NDVI') m = geemap.Map() m.set_center(-122.14, 37.38, 11) m.add_layer(band_index_img, ndvi_vis, 'NDVI 1') # Expression using image band names. band_name_exp = '(b("SR_B5") - b("SR_B4")) / (b("SR_B5") + b("SR_B4"))' band_name_img = img.expression(band_name_exp).rename('NDVI') m.add_layer(band_name_img, ndvi_vis, 'NDVI 2') # Expression using named variables. named_vars_exp = '(NIR - Red) / (NIR + Red)' named_vars_img = ( ee.Image() .expression( expression=named_vars_exp, opt_map={'NIR': img.select('SR_B5'), 'Red': img.select('SR_B4')}, ) .rename('NDVI') ) m.add_layer(named_vars_img, ndvi_vis, 'NDVI 3') # Expression using named variables with image band access by dot notation. named_vars_dot_exp = '(ls8.SR_B5 - ls8.SR_B4) / (ls8.SR_B5 + ls8.SR_B4)' named_vars_dot_img = ( ee.Image() .expression(expression=named_vars_dot_exp, opt_map={'ls8': img}) .rename('NDVI') ) m.add_layer(named_vars_dot_img, ndvi_vis, 'NDVI 4') # Expressions can use arithmetic operators (+ - * / % **), relational # operators (== != < > <= >=), logical operators (&& || ! ^), the ternary # operator (condition ? ifTrue : ifFalse), and a subset of JavaScript Math # functions. Math functions are called by name directly, they are not accessed # from the Math object (e.g., sqrt() instead of Math.sqrt()). js_math_exp = 'c = sqrt(pow(a, 2) + pow(b, 2))' js_math_img = ee.Image().expression( expression=js_math_exp, opt_map={'a': ee.Image(5), 'b': img.select('SR_B2')} ) m.add_layer(js_math_img, {'min': 5000, 'max': 20000}, 'Hypotenuse', False) m