GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))

这一篇先讲一下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");


运行结果:
GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))
文章图片

代码分析:
上面这种是我们常用的加载图层的方法,最终效果就是添加了一个Layer图层,通过Layers选项可以控制。这一节中讲的GeometryLayer则不同,可以参考如下的示例。

(2)直接绘制显示GeometryLayer图层
这里我先不使用API定义的方法来添加图层,而是直接使用GEE自带的工具来添加这个图层。实现的操作步骤就是选择“点”那个图标,然后在地图上点击一点,最终效果如下图。
GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))
文章图片

代码编辑器上会出现如下内容
GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))
文章图片

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

2、GeometryLayer的API
GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))
文章图片

主要的方法包括:初始化方法、设置是否显示、获取各种属性等,下面我会依次讲解每一个方法。

3、方法具体详解
(1)初始化方法
GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))
文章图片


初始化方法中主要参数包括:
  • 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”,颜色为红色,然后图层要显示(前面对勾选择上)同时是图层是锁定不可编辑状态,具体效果如下图。
GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))
文章图片


(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());

运行结果:
GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))
文章图片


(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();


运行结果:
GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))
文章图片


修改名字和颜色后点击确定可以看到修改后的结果如下:
GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))
文章图片


(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中使用绘制矢量(中))】运行结果:
GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))
文章图片


这一期中关于drawingTools没有做介绍,下一期会介绍一下这个相关的内容。

大家如果有问题需要交流或者有项目需要合作,可以微信联系我,加微信好友请留言加上“GEE”。
知乎专栏:https://zhuanlan.zhihu.com/c_123993183
CSDN:https://blog.csdn.net/shi_weihappy
GEE开发|GEE学习笔记 八十九(在自己的APP中使用绘制矢量(中))
文章图片

    推荐阅读