当前位置: 首页 > article >正文

Google Earth Engine中的Map对象

在Google Earth Engine(GEE)中,Map 对象是用于在交互式地图上显示地理空间数据的核心工具。它允许用户加载影像、矢量数据、图表等内容,并提供地图浏览、图层控制和交互式操作功能。以下是关于 Map 对象的详细介绍:


1. 初始化地图

在GEE代码编辑器中,默认已创建 Map 对象,可通过 Map 直接调用其方法。如果需要手动初始化(例如在自定义UI界面中),可使用:

var map = ui.Map(); // 创建新的地图对象

2. 核心功能与方法

2.1 添加图层

使用 Map.addLayer() 方法将影像、矢量或几何对象添加到地图:

// 示例:加载Landsat影像并显示
var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20140318');
Map.addLayer(image, {bands: ['SR_B4', 'SR_B3', 'SR_B2'], min: 0, max: 0.3}, 'Landsat Natural Color');

参数说明
• 第一个参数:ee.Imageee.ImageCollectionee.Geometry
• 第二个参数:visParams(可视化参数,如波段、颜色、透明度等)。
• 第三个参数:图层名称(可选)。

2.2 设置地图视图

定位到指定区域Map.centerObject()Map.setCenter()

Map.centerObject(image, 8); // 以影像为中心,缩放级别8
Map.setCenter(116.4, 39.9, 10); // 设置中心坐标(经度、纬度、缩放级别)

调整缩放级别Map.setZoom()

Map.setZoom(12);
2.3 图层控制

移除图层Map.remove()Map.layers().remove(layer)

var layer = Map.addLayer(image, {}, 'Temp Layer');
Map.remove(layer); // 移除指定图层

调整图层顺序Map.layerPanel().setLayerOrder([layer1, layer2])

2.4 叠加几何对象

直接显示点、线、面等几何图形:

var point = ee.Geometry.Point([116.4, 39.9]);
Map.addLayer(point, {color: 'red'}, 'Beijing Point');

3. 高级功能

3.1 动态图层叠加

使用透明度参数 (opacity) 实现多图层叠加:

var elevation = ee.Image('CGIAR/SRTM90_V4');
Map.addLayer(elevation, {min: 0, max: 4000, palette: ['gray', 'green', 'red']}, 'Elevation', true, 0.5);

• 第五个参数 0.5 表示透明度(0为完全透明,1为不透明)。

3.2 交互式工具

Inspector工具:点击地图右上角的 Inspector 标签,再点击地图可查看像素值、坐标等信息。
绘图工具:通过 Map 的绘图工具栏手动绘制几何图形(需启用 Map.setDrawBarEnabled(true))。

3.3 事件监听

监听地图点击、缩放等事件:

// 监听地图点击事件
Map.onClick(function(coords) {
  var point = ee.Geometry.Point(coords.lon, coords.lat);
  print('Clicked coordinates:', coords);
  // 示例:获取该点的NDVI值
  var ndvi = image.normalizedDifference(['SR_B5', 'SR_B4']);
  var value = ndvi.reduceRegion({
    reducer: ee.Reducer.first(),
    geometry: point,
    scale: 30
  }).get('nd');
  print('NDVI at clicked point:', value);
});

4. 自定义控件与UI

4.1 添加按钮与面板

结合 ui 模块创建交互式控件:

// 创建按钮
var button = ui.Button({
  label: 'Clear Layers',
  onClick: function() {
    Map.layers().reset(); // 清除所有图层
  }
});

// 将按钮添加到地图
Map.add(button);
4.2 自定义图例

通过 ui.Panelui.Label 创建图例:

var legend = ui.Panel({
  style: {
    position: 'bottom-right',
    padding: '8px'
  }
});
legend.add(ui.Label('Elevation (m)', {fontWeight: 'bold'}));
var palette = ['gray', 'green', 'red'];
palette.forEach(function(color) {
  legend.add(ui.Label('', {backgroundColor: color, margin: '2px'}));
});
Map.add(legend);

5. 示例代码

// 加载Landsat影像并设置可视化参数
var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20140318');
var visParams = {
  bands: ['SR_B4', 'SR_B3', 'SR_B2'],
  min: 0,
  max: 0.3,
  gamma: 1.2
};

// 添加影像和几何对象
Map.addLayer(image, visParams, 'Landsat Natural Color');
Map.addLayer(image.normalizedDifference(['SR_B5', 'SR_B4']), {min: -0.2, max: 0.4, palette: ['blue', 'white', 'green']}, 'NDVI');
Map.addLayer(ee.Geometry.Point([116.4, 39.9]).buffer(1000), {color: 'red'}, 'Buffer');

// 设置地图中心和缩放
Map.setCenter(116.4, 39.9, 12);

6. 注意事项

  1. 客户端与服务器端操作:在事件监听回调中,需使用 ee. 对象(如 ee.Geometry.Point)处理地理数据。
  2. 性能优化:避免在事件监听中频繁调用 getInfo(),可能导致延迟。
  3. 图层命名:为图层提供清晰的名称,便于在图层管理器中识别。
  4. 默认地图:GEE代码编辑器默认已初始化 Map 对象,无需手动创建。

通过灵活使用 Map 对象的方法和事件,用户可以实现从基础数据展示到复杂交互分析的各类地理空间应用。


http://www.kler.cn/a/571878.html

相关文章:

  • 数据结构:二叉树的链式结构及相关算法详解
  • 【TCP/IP协议栈】4. 传输层协议(TCP、UDP)
  • 【PHP】fastadmin中对addons进行路由重写
  • WSL下使用git克隆失败解决
  • 14. LangChain项目实战1——基于公司制度RAG回答机器人
  • 【开源免费】基于SpringBoot+Vue.JS信息技术知识赛系统(JAVA毕业设计)
  • 10分钟从零开始搭建机器人管理系统(飞算AI)
  • K8S学习之基础十:初始化容器和主容器
  • 【流行病学】Melodi-Presto因果关联工具
  • [特殊字符]在eclipse中导入JAVA的jar包方法
  • html | 预览一个颜色数组
  • 算法与数据结构(相交链表)
  • com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别
  • 火语言RPA--PDF提取图片
  • 对于TCP协议三次握手,四次挥手的总结
  • 7轴力控机器人在新药研发与生命科学实验室的开发方案
  • 【东枫科技】X波段 相控阵雷达
  • 《挑战你的控制力!开源小游戏“保持平衡”开发解析:用HTML+JS+CSS实现物理平衡挑战》​
  • 网络安全管理平台建设思路
  • 分布式锁—1.原理算法和使用建议一