前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Google Earth Engine(GEE)——点线面运算及其交集并集等

Google Earth Engine(GEE)——点线面运算及其交集并集等

作者头像
此星光明
发布2024-02-02 07:59:33
1180
发布2024-02-02 07:59:33
举报

Earth Engine 支持对Geometry对象的各种操作。这些包括对单个几何图形的操作,例如计算缓冲区、质心、边界框、周长等。例如:

缓冲区100公里的图形,重心就是图中的黑点 

代码语言:javascript
复制
// 建立一个几何图形
var polygon = ee.Geometry.Polygon([
  [[-5, 40], [65, 40], [65, 60], [-5, 60], [-5, 60]]
]);

// 并按此建立一个缓冲区
var buffer = polygon.buffer(1000000);

// 计算这些polygon的重心
var centroid = polygon.centroid();
Map.addLayer(buffer, {}, 'buffer');
Map.addLayer(centroid, {}, 'centroid');

支持的几何运算还包括几何之间的关系计算,例如交集、联合、差异、距离、包含等。为了测试其中一些关系,几何默认使用“奇偶”规则。根据奇偶规则,如果从该点到已知在多边形外部的某个点的线与奇数个其他边相交,则该点在多边形内部。多边形的内部是壳内的所有东西,而不是孔内。作为一个简单的例子,圆形多边形内的一个点必须正好穿过一条边才能脱离多边形。如有必要,几何图形可以选择使用“左内”规则。想象一下按照给定的顺序走环的点;内部将在左侧。

为了演示使用“左向内”规则 ( ) 创建的几何与使用“奇偶”规则创建的几何之间的区别,以下示例将一个点与两个不同的多边形进行比较:evenOdd: false

代码语言:javascript
复制
// 创造一个左侧的几何图形用来验证是不是包含在里面
var holePoly = ee.Geometry.Polygon({
  coords: [
    [[-35, -10], [-35, 10], [35, 10], [35, -10], [-35, -10]]
  ],
  evenOdd: false
});

// 创建多边形的奇偶版本。
var evenOddPoly = ee.Geometry({
  geoJson: holePoly,
  evenOdd: true
});

// 创建一个点来测试多边形的内部。
var pt = ee.Geometry.Point([1.5, 1.5]);

// 使用 contains 运算符检查内部情况。是否包含的检验
print(holePoly.contains(pt));       // false
print(evenOddPoly.contains(pt));    // true

前面的示例演示了在Polygon构造左多边形时,提供给构造函数的坐标顺序如何 影响结果。具体来说,该点位于左内多边形之外,但位于奇数多边形内。

以下示例基于两个多边形之间的关系计算和可视化派生几何:也就是两个几何图形之间的交、并、非集。

显示的结果 

intersection(right, maxErrorproj)

确定两个是否交的一个函数

Returns the intersection of the two geometries.

Arguments:

this:left (Geometry):

The geometry used as the left operand of the operation.

right (Geometry):

The geometry used as the right operand of the operation.

maxError (ErrorMargin, default: null):

代码语言:javascript
复制
执行任何必要的重新投影时允许的最大错误量。

The maximum amount of error tolerated when performing any necessary reprojection.

proj (Projection, default: null):

代码语言:javascript
复制
在其中执行操作的投影。如果未指定,则操作将在球坐标系中执行,并且球体上的线性距离以米为单位。

The projection in which to perform the operation. If not specified, the operation will be performed in a spherical coordinate system, and linear distances will be in meters on the sphere.

Returns: Geometry
代码语言:javascript
复制
// 建两个圆形,创建的方式就是缓冲区
var poly1 = ee.Geometry.Point([-50, 30]).buffer(1e6);
var poly2 = ee.Geometry.Point([-40, 30]).buffer(1e6);

// 加载图像
Map.setCenter(-45, 30);
Map.addLayer(poly1, {color: 'FF0000'}, 'poly1');
Map.addLayer(poly2, {color: '0000FF'}, 'poly2');

// 计算交点,以绿色显示。
var intersection = poly1.intersection(poly2, ee.ErrorMargin(1));
Map.addLayer(intersection, {color: '00FF00'}, 'intersection');

// 计算并集,以洋红色显示。
var union = poly1.union(poly2, ee.ErrorMargin(1));
Map.addLayer(union, {color: 'FF00FF'}, 'union');

// 计算非,显示为黄色。
var diff1 = poly1.difference(poly2, ee.ErrorMargin(1));
Map.addLayer(diff1, {color: 'FFFF00'}, 'diff1');

// 计算对称差,以黑色显示。
var symDiff = poly1.symmetricDifference(poly2, ee.ErrorMargin(1));
Map.addLayer(symDiff, {color: '000000'}, 'symmetric difference');
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Arguments:
  • Returns: Geometry
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档