这一篇先讲一下ui.Map.GeometryLayer(...),也就是生成显示的绘制矢量图形图层,具体来讲就是地图上左上角绘制的图形后添加的图层。
1、什么是GeometryLayer?
(1)直接在地图上加载定义的图层
//1. add normal layervar geometry = ee.Geometry.Point([50, 50]);
Map.centerObject(geometry, 11);
Map.addLayer(geometry, {color: "red"}, "geometry");
运行结果:

文章图片
代码分析:
上面这种是我们常用的加载图层的方法,最终效果就是添加了一个Layer图层,通过Layers选项可以控制。这一节中讲的GeometryLayer则不同,可以参考如下的示例。
(2)直接绘制显示GeometryLayer图层
这里我先不使用API定义的方法来添加图层,而是直接使用GEE自带的工具来添加这个图层。实现的操作步骤就是选择“点”那个图标,然后在地图上点击一点,最终效果如下图。

文章图片
代码编辑器上会出现如下内容

文章图片
这个geometry就是一个GeometryLayer,在之前我们只能通过GEE这个自带的工具来实现。在2020年年初GEE官方增加了这个图层的API,这样我们在自己的程序中就可以方便的控制调用这些绘制的API。
2、GeometryLayer的API

文章图片
主要的方法包括:初始化方法、设置是否显示、获取各种属性等,下面我会依次讲解每一个方法。
3、方法具体详解
(1)初始化方法

文章图片
初始化方法中主要参数包括:
- geometries:矢量图形geometry的列表,可选项;
- name:图层的名称,可选项;
- color:图层填充颜色,可选项;
- shown:图层是否显示,可选项;
- locked:图层是否锁定,也就是是否可以进行编辑,可选项;
//2. add geometry layervar 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);
运行效果:
上面初始化方法首先是加载我们自定义的Geometry(一个点),设置这个图层的名称为“p”,颜色为红色,然后图层要显示(前面对勾选择上)同时是图层是锁定不可编辑状态,具体效果如下图。

文章图片
(2)显示各个属性方法也就是各种get方法
例子:
//3. show all propertyvar 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);
//颜色print(layer.getColor());
//图层中对象print(layer.getEeObject());
//是否锁定print(layer.getLocked());
//图层名称print(layer.getName());
//图层是否显示print(layer.getShown());
运行结果:

文章图片
(3)打开配置对话框
例子:
// 4. open config dialogvar 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);
//打开配置对话框layer.openConfigurationDialog();
运行结果:

文章图片
修改名字和颜色后点击确定可以看到修改后的结果如下:

文章图片
(4)通过set方法设置各种属性
例子:
// 5. set propertiesvar geometry = ee.Geometry.Point([50, 50]);
Map.centerObject(geometry, 11);
var layer = ui.Map.GeometryLayer();
layer = layer.fromGeometry(geometry).setColor("00ff00").setLocked(true).setName("p2").setShown(true);
var drawingTools = Map.drawingTools();
drawingTools.setLinked(false);
drawingTools.layers().add(layer);
【GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))】运行结果:

文章图片
这一期中关于drawingTools没有做介绍,下一期会介绍一下这个相关的内容。
大家如果有问题需要交流或者有项目需要合作,可以微信联系我,加微信好友请留言加上“GEE”。
知乎专栏:https://zhuanlan.zhihu.com/c_123993183
CSDN:https://blog.csdn.net/shi_weihappy

文章图片
推荐阅读
- 网络前沿知识|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导出的影像波段名称哪去了())