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

2024-02-25 16:36

本文主要是介绍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学习之路不易,祝大家新学期更上一层楼!

这篇关于GEE必须会教程—曾“几何”时(Geometry类型)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/746053

相关文章

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker