GEE必须会教程—曾“几何”时(Geometry类型)

几何图形组成了世界万物,在数学史具有重要地位,将几何图形迁移到地理空间信息的处理上,我们我们得到就是研究区域的边界范围,因此,在学习矢量数据和栅格数据之前,我们有必要了解几何图形在GEE上的编辑。

1.直接绘制图形

在GEE内置的地图上,提供了地图绘制的工具,界面如下:

在地图编辑窗口中有点、线、任意形状、矩形形状的绘制工具,用户可以根据自己想绘制的图形类型,选中相应的工具进行图形的绘制即可。此处小编随意绘制点、线、面等图形,大家可以动动小手自己尝试一下。

2.代码定义几何图形

如果你拥有点位坐标,想要精确绘制某个地方的几何图形,可以采用代码编辑栏,进行如下的代码编辑:

(1)定义点

//定义一个点
var point1 = ee.Geometry.Point([114.9054831122441,25.85194534606585]);
var point2 = ee.Geometry.Point([115.07989107122847,26.00509220886221]);
var point3 = ee.Geometry.Point([114.79836641302535,25.95571174574036]);
//定义多个点
var point = ee.Geometry.MultiPoint([point1,point2,point3]);

如果用户获取点的坐标,定义点采用:

ee.Geometry.Point([lontitude,latitude])/ee.Geometry.MultiPoint([point1,point2,pont3])

通过符号可视化后,将得到点在地图上的显示。

(2)定义线

线状地物如公路、铁路、河流等是地理数据的一大类型,GEE上可以采用如下代码进行线的定义:

//定义一条直线
var line1 = ee.Geometry.LineString([[113.15432442325019,24.673815145943788],
                                     [110.84719551700019,26.339541619386722]]);
var line2 = ee.Geometry.LineString([[114.31887520450019,27.04624966596319],
                                     [114.42873848575019,24.57394257050962]]);
print("line1",line1,"line2",line2);
//定义多条直线
var line = ee.Geometry.MultiLineString([line1,line2]);
print("line",line);

使用:

ee.Geometry.LineString([point1,point2,point3])/ee.Geometry.MultiLineString([line1,line2])

实现对一条线或多条线的定义。

(3)定义面

面状地物的定义与点和线的定义类似,具体如下:

//定义一个几何面
var polygon1 = ee.Geometry.Polygon([[[109.41897286075019,27.534421917013297],
                                     [107.46340645450019,26.319848479663218],
                                     [110.42971504825019,26.673810932870065],
                                     [109.41897286075019,27.534421917013297]]]);
var polygon2 = ee.Geometry.Polygon([[[107.26565254825019,24.77360781003692],
                                     [106.29885567325019,24.97295245118669],
                                     [106.89211739200019,23.61114760624955],
                                     [108.58401192325019,24.81350244702575],
                                     [108.18850411075019,25.74729788986625],
                                     [106.69436348575019,25.72750505868025],
                                     [107.26565254825019,24.77360781003692]]]);
print("polygon1",polygon1,"polygon2",polygon2);
//定义多个几何面
var polygon = ee.Geometry.MultiPolygon([polygon1,polygon2]);
print("polygon",polygon);

使用:

ee.Geometry.Polygon([[[.........]]])/ee.Geometry.MultiPolygon([polygon1,polygon2])

完成对面或者是多个面的定义。

(4)定义矩形

如果想要规则定义研究区域范围,GEE也提供了定义矩形的代码方法:

// 定义矩形的左上角和右下角坐标
var topLeft = ee.Geometry.Point(-74.05, 40.7);
var bottomRight = ee.Geometry.Point(-73.95, 40.6);

// 使用左上角和右下角坐标创建矩形
var rectangle = ee.Geometry.Rectangle(topLeft, bottomRight);

使用如下格式定义一个矩形范围:

ee.Geometry.Rectangle(左上角坐标,右上角坐标)

3.形状的操作方法

(1)定义案例研究区域

//定义不同的几何图形
var polygon1 = ee.Geometry.Polygon([[[116.0466463153445,28.8833257353102],
                                     [116.8156892840945,29.859865982108825],
                                     [115.2336580340945,30.069258158106802],
                                     [116.0466463153445,28.8833257353102]]]);
var polygon2 = ee.Geometry.Polygon([[[114.8930818622195,28.439880647311266],
                                     [117.2551424090945,28.439880647311266],
                                     [117.2551424090945,29.61183506255461],
                                     [114.8930818622195,29.61183506255461],
                                     [114.8930818622195,28.439880647311266]]]);
Map.centerObject(polygon1,6);
Map.addLayer(polygon1,{"color":"red"},"polygon1");
Map.addLayer(polygon2,{"color":"blue"},"polygon2");

(2)求面积,外接矩形,形状中心点,打印坐标

//求几何图形的面积
print("Area:",polygon1.area());
//求几何图形的边界矩形
print("Bounds:",polygon1.bounds());
//求几何图形的中心点
print("centroid:",polygon1.centroid());
//求几何中心的坐标
print("Coordinate:",polygon1.coordinates());

得到的结果如下:

(3)判断形状相交与求交集形状

//求几何图形的交集
print("Is intersect?",polygon1.intersects(polygon2));
var intersection = polygon1.intersection(polygon2);
Map.addLayer(intersection,{},"intersection");

注意intersects和intersection的区别,前者返回逻辑运算符,后者返回形状结果。

(4)缓冲区的生成

//生成2000m外缓冲区
var bufferpolygon1 = polygon1.buffer(2000);
Map.addLayer(bufferpolygon1,{"color":"ff00ff"},"buffePolygon1");
//生成2000m内缓冲区
var bufferpolygon2 = polygon2.buffer(-2000);
Map.addLayer(bufferpolygon2,{"color":"00ffff"},"bufferPolygon2");
//缓冲区裁剪
var differ = bufferpolygon1.difference(bufferpolygon2);
Map.addLayer(differ,{"color":"green"},"differ");

缓冲区包括外缓冲区(正号)和内缓冲区(负号),以及缓冲区的相交部分,运行结果如下:

关于GEE的几何图形的相关操作分享到这里,希望对大家学习GEE有帮助。如果对你的学习有帮助,别忘记了给小编点赞哦!

案例代码链接:

https://code.earthengine.google.com/2a23cd62643bd8ad86d31f100313d240icon-default.png?t=N7T8https://code.earthengine.google.com/2a23cd62643bd8ad86d31f100313d240GEE学习之路不易,祝大家新学期更上一层楼!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值