Google Earth Engine图层颜色修改及AOI无填充多边形实现求助
解决Google Earth Engine绘制无填充多边形及图层颜色修改问题
一、实现无填充的AOI多边形
要让绘制的多边形仅显示边界、无填充,只需在创建ui.Map.GeometryLayer时,添加fillColor参数并设置为全透明的RGBA值('rgba(0, 0, 0, 0)'),还可通过strokeWidth调整边界线宽,提升辨识度。
修改原代码中的dummyGeometry定义部分:
var dummyGeometry = ui.Map.GeometryLayer({ geometries: null, name: 'grid', color: 'green', // 边界颜色 fillColor: 'rgba(0, 0, 0, 0)', // 全透明填充 strokeWidth: 2 // 可选调整边界线宽 });
二、修改Google Earth Engine中的图层颜色
1. 修改绘制几何图层的颜色
直接在ui.Map.GeometryLayer的参数中修改color值即可,支持十六进制颜色码(如'#FF0000')、RGB/RGBA值或颜色名称(如'red')。
2. 修改影像图层的可视化颜色
对于添加到地图的遥感影像图层,通过设置可视化参数(visParams)调整颜色,常用参数包括:
palette:自定义颜色列表,适用于分类或单波段影像min/max:设置颜色拉伸的数值范围opacity:调整图层透明度
示例:添加NDVI影像并设置渐变颜色
// 加载Landsat影像并计算NDVI var landsat = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') .filterDate('2023-01-01', '2023-12-31') .first() .select(['SR_B5', 'SR_B4']) .normalizedDifference(['SR_B5', 'SR_B4']).rename('NDVI'); // 定义可视化参数 var visParams = { min: -0.2, max: 0.8, palette: ['blue', 'white', 'green'] // 从低NDVI到高NDVI的颜色渐变 }; // 添加到地图 Map.addLayer(landsat, visParams, 'NDVI');
三、完整修改后的代码
var drawingTools = Map.drawingTools(); drawingTools.setShown(false); while (drawingTools.layers().length() > 0) { var layer = drawingTools.layers().get(0); drawingTools.layers().remove(layer); } // 无填充的几何图层设置 var dummyGeometry = ui.Map.GeometryLayer({ geometries: null, name: 'grid', color: 'green', fillColor: 'rgba(0, 0, 0, 0)', strokeWidth: 2 }); drawingTools.layers().add(dummyGeometry); function clearGeometry() { var layers = drawingTools.layers(); layers.get(0).geometries().remove(layers.get(0).geometries().get(0)); } function drawRectangle() { clearGeometry(); drawingTools.setShape('rectangle'); drawingTools.draw(); } function drawPolygon() { clearGeometry(); drawingTools.setShape('polygon'); drawingTools.draw(); } var symbol = { rectangle: '⬛', polygon: '🔺', point: '📍', }; /* * Panel setup */ var controlPanel = ui.Panel({ widgets: [ ui.Label('1. Select a drawing mode.'), ui.Button({ label: symbol.rectangle + ' Rectangle', onClick: drawRectangle, style: {stretch: 'horizontal'} }), ui.Button({ label: symbol.polygon + ' Polygon', onClick: drawPolygon, style: {stretch: 'horizontal'} }), ], layout: null, }); var main_panel = ui.Panel({style:{position: 'top-left'}}); main_panel.add(controlPanel); Map.add(main_panel); // 示例:添加带自定义颜色的影像图层(可选) var landsat = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') .filterDate('2023-01-01', '2023-12-31') .first() .select(['SR_B5', 'SR_B4']) .normalizedDifference(['SR_B5', 'SR_B4']).rename('NDVI'); var visParams = { min: -0.2, max: 0.8, palette: ['#d7191c', '#fdae61', '#ffffbf', '#abdda4', '#2b83ba'] }; Map.addLayer(landsat, visParams, 'NDVI');
内容的提问来源于stack exchange,提问作者user30985
相关产品推荐
相关产品推荐

