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

44 篇文章 309 订阅
23 篇文章 5 订阅

    这一篇先讲一下ui.Map.GeometryLayer(...),也就是生成显示的绘制矢量图形图层,具体来讲就是地图上左上角绘制的图形后添加的图层。

 

1、什么是GeometryLayer?

(1)直接在地图上加载定义的图层

//1. add normal layer

var 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 layer

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

运行效果:

    上面初始化方法首先是加载我们自定义的Geometry(一个点),设置这个图层的名称为“p”,颜色为红色,然后图层要显示(前面对勾选择上)同时是图层是锁定不可编辑状态,具体效果如下图。

 

(2)显示各个属性方法也就是各种get方法

例子:

//3. show all property

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

//颜色

print(layer.getColor());

//图层中对象

print(layer.getEeObject());

//是否锁定

print(layer.getLocked());

//图层名称

print(layer.getName());

//图层是否显示

print(layer.getShown());

运行结果:

 

(3)打开配置对话框

例子:

// 4. open config dialog

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

//打开配置对话框

layer.openConfigurationDialog();

 

运行结果:

 

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

 

(4)通过set方法设置各种属性

例子:

// 5. set properties

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

 

运行结果:

 

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

 


大家如果有问题需要交流或者有项目需要合作,可以微信联系我,加微信好友请留言加上“GEE”。

知乎专栏:https://zhuanlan.zhihu.com/c_123993183

CSDN:https://blog.csdn.net/shi_weihappy

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值