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

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

    这一篇文章讲一下如何使用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:图层是否锁定

    添加图层方式,一种方式利用上面展示的额layers().add(layer)这种方式,另外一种方式可以直接将geometries添加到drawingTools中。

例子:

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

例子:

//demo03

var 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的属性

//demo04

var 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:删除矢量图形后回调方法

//demo05

var 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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值