这一篇文章讲一下如何使用ui.Map.DrawingTools(...),其实在上一节中可以看到DrawingTools这个API简单使用例子,具体如下:
var geometry = ee.Geometry.Point([50, 50]);
Map.centerObject(geometry, 11);
var layer = ui.Map.GeometryLayer({geometries: [geometry],name: "p",color: "red",shown: true,locked: true});
var drawingTools = Map.drawingTools();
drawingTools.setLinked(false);
drawingTools.layers().add(layer);
这里通过Map.drawingTools()获取GEE自带的绘制工具,然后setLinked(false)设置加载的layer这个GeometryLayer不显示在import中,然后调用layers()中add()方法加载新的layer到绘制图层中。
1、drawingTools的API
文章图片
这些方法主要包括:
(1)初始化方法
(2)设置各种属性set方法
(3)获取各种属性get方法
(4)回调监听方法
2、主要方法说明
(1)添加图层
方法:addLayer(geometries, name, color, shown, locked)
- geometries:矢量图形列表
- name:图层名称
- color:矢量图形颜色
- shown:图层是否显示
- locked:图层是否锁定
例子:
var geometry = ee.Geometry.Point([50, 50]);
Map.centerObject(geometry, 11);
var layer = ui.Map.GeometryLayer({geometries: [geometry],name: "p",color: "red",shown: true,locked: true});
var drawingTools = Map.drawingTools();
drawingTools.setLinked(false);
drawingTools.addLayer({geometries: [geometry],name: "p",color: "red",shown: true,locked: true});
(2)启动编辑、绘制、删除等功能
- edit
- draw
- clear
//demo03var geometry = ee.Geometry.Point([50, 50]);
Map.centerObject(geometry, 11);
var drawingTools = Map.drawingTools();
drawingTools.setLinked(false);
drawingTools.edit();
// drawingTools.draw();
// drawingTools.clear();
运行结果:
文章图片
(3)获取DrawingTools的属性
//demo04var geometry = ee.Geometry.Point([50, 50]);
Map.centerObject(geometry, 11);
var drawingTools = Map.drawingTools();
drawingTools.setLinked(false);
print(drawingTools.get());
print(drawingTools.get("drawModes"));
print(drawingTools.getDrawModes());
print(drawingTools.getLinked());
(4)回调方法
- onDraw:绘制矢量图形后回调方法
- onEdit:编辑矢量图形后回调方法
- onErase:删除矢量图形后回调方法
//demo05var srtm = ee.Image('USGS/SRTMGL1_003');
Map.addLayer(srtm, {min: 0, max: 5000}, 'SRTM');
var geometry = ee.Geometry.Point([110, 35]);
Map.centerObject(geometry, 4);
var drawingTools = Map.drawingTools();
drawingTools.setLinked(false);
drawingTools.setDrawModes(["point"]);
drawingTools.setShape("point");
var callFunc = ui.util.debounce(function(geom, geomLayer, drawingTools) {var points = geomLayer.toGeometry();
var elevation = srtm.reduceRegion({reducer: ee.Reducer.mean(),geometry: points,scale: 30});
print("----------begin--------------");
print("points is: ", points);
print("elevation is: ", elevation);
print("----------end----------------");
}, 100);
drawingTools.onDraw(callFunc);
drawingTools.onEdit(callFunc);
drawingTools.onErase(callFunc);
代码分析:
这段代码含义就是当用户使用矢量工具绘制、编辑或者删除点时候会调用callFunc这个方法,这个方法总共三个参数:绘制图形、对应的图层以及绘制的矢量工具。方法内容是统计这个图层中所有点的高程均值。
大家如果有问题需要交流或者有项目需要合作,可以微信联系我,加微信好友请留言加上“GEE”。
知乎专栏:https://zhuanlan.zhihu.com/c_123993183
CSDN:https://blog.csdn.net/shi_weihappy
微信号:shi_weihappy
文章图片
【GEE开发|GEE学习笔记 九十(在自己的APP中使用绘制矢量(下))】
推荐阅读
- 网络前沿知识|GEE学习笔记 七十六(【GEE之Python版教程十】字典)
- 网络前沿知识|GEE学习笔记 七十八(干涸的洪泽湖)
- GEE|GEE学习笔记 五十九(GEE中mosiac、qualityMosiac、max区别)
- python|GEE学习笔记 七十五(【GEE之Python版教程九】数值)
- python|GEE学习笔记 七十(【GEE之Python版教程四】Python基础编程二)
- GEE|GEE学习笔记 六十二(保密是头等大事)
- GEE|GEE学习笔记 五十八(设置数值数据保留N位)
- GEE|GEE学习笔记 五十一(Fusion Table将在2019年12月3日关闭)
- GEE|GEE学习笔记 五十六(GEE中如何把文件导出到Google Drive的子目录)
- GEE|GEE学习笔记 五十三(GEE导出的影像波段名称哪去了())