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学习之路不易,祝大家新学期更上一层楼!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/408563.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

git最全总结

文章目录 Git 分布式版本控制工具内容1. 前言1.1 什么是Git1.2 使用Git能做什么 2. Git概述2.1 Git简介2.2 Git下载与安装 3. Git代码托管服务3.1 常用的Git代码托管服务3.2 码云代码托管服务3.2.1 注册码云账号3.2.2 登录码云3.2.3 创建远程仓库3.2.4 邀请其他用户成为仓库成员…

pikachu靶场-RCE

介绍: RCE(remote command/code execute)概述 RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。 远程系统命令执行 一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命…

Spring篇----第六篇

系列文章目录 文章目录 系列文章目录前言一、spring 支持集中 bean scope?二、spring bean 容器的生命周期是什么样的?三、什么是 spring 的内部 bean?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男…

基于springboot+vue的服装生产管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

2024022502-数据库绪论

数据库绪论 数据管理的三个阶段 人工管理阶段 文件系统阶段 数据库系统阶段 基本术语 数据(Data) 计算机用来描述事物的记录(文字.图形.图像.声音)数据的形式本身并不能完全表达其内容&am…

新付费进群源码-带分销分站源码程序(附搭建源码+安装建设教程)

付费进群源码是由程序员创建的计算机程序的基本组成部分,通常以函数、描述、定义、调用、方法和其他操作语句的形式编写。它被设计为人类可读的,并以开发人员和其他用户可以理解的方式格式化。 付费进群源码系统要求 硬件要求: 需要一台运行稳…

CSRF靶场实战

DVWA靶场链接&#xff1a;https://pan.baidu.com/s/1eUlPyB-gjiZwI0wsNW_Vkw?pwd0b52 提取码&#xff1a;0b52 DVWA Low 级别打开靶场&#xff0c;修改密码 复制上面的 url&#xff0c;写个简单的 html 文件 <html <body> <a hrefhttp://127.0.0.1/DVWA/vulne…

OSCP靶场--Slort

OSCP靶场–Slort 考点(1.php 远程文件包含 2.定时任务提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.178.53 -sV -sC -p- --min-rate 5000 Starting Nmap 7.92 ( https://nmap.org ) at 2024-02-24 04:37 EST Nmap scan report for 192.168.178.53 …

Open CASCADE学习|几何数据结构

在几何引擎内一般把数据分成两类&#xff1a;几何信息与拓扑信息。二者可以完整地表达出实体模型&#xff0c;彼此相互独立、又互相关联。几何信息是指构成几何实体的各几何元素在欧式空间中的位置、大小、尺寸和形状信息。例如一条空间的直线&#xff0c;可以用两端点的位置矢…

【Java程序设计】【C00262】基于Springboot的会员制医疗预约服务管理系统(有论文)

基于Springboot的会员制医疗预约服务管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的会员制医疗预约服务管理信息系统&#xff0c;本系统分为三种角色&#xff1a;管理员、医生和会员&#xff1b; 在系统…

在Linux操作系统的ECS实例上安装Hive

目录 1. 完成hadoop安装配置2. 安装配置MySql安装配置 3. 安装Hive4. 配置元数据到MySQL5. hiveserver2服务配置文件测试 1. 完成hadoop安装配置 在Linux操作系统的ECS实例上安装hadoop 以上已安装并配置完jdk、hadoop也搭建了伪分布集群 2. 安装配置MySql 安装 下下一步…

c++之ini配置文件的详细解析

文章目录 ini文件概要代码实例分析小结 ini文件概要 ini文件是一种系统配置文件&#xff0c;它有特定的格式组成。通常做法&#xff0c;我们读取ini文件并按照ini格式进行解析即可。在c语言中&#xff0c;提供了模板类的功能&#xff0c;所以我们可以提供一个更通用的模板类来解…

【机器学习基础】一元线性回归(适合初学者的保姆级文章)

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;后面的内容会越来越有意思~ &#x1f4a1;往期推荐&#xff1a; 【机器学习基础】机器学习入门&#xff08;1&#xff09; 【机器学习基…

CSS 面试题汇总

CSS 面试题汇总 1. 介绍下 BFC 及其应 参考答案&#xff1a; 参考答案&#xff1a; 所谓 BFC&#xff0c;指的是一个独立的布局环境&#xff0c;BFC 内部的元素布局与外部互不影响。 触发 BFC 的方式有很多&#xff0c;常见的有&#xff1a; 设置浮动overflow 设置为 auto、scr…

【LNMP】云导航项目部署及环境搭建(复杂)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、项目介绍1.1项目环境架构LNMP1.2项目代码说明 二、项目环境搭建2.1 Nginx安装2.2 php安装2.3 nginx配置和php配置2.3.1 修改nginx文件2.3.2 修改vim /etc/p…

精品基于SpringBoot的体育馆场地预约赛事管理系统的设计与实现-选座

《[含文档PPT源码等]精品基于SpringBoot的体育馆管理系统的设计与实现[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; Java——涉及技术&#xff1a; 前端使用技术&#…

【尚硅谷】MybatisPlus 学习笔记(下)

目录 六、插件 6.1、分页插件 6.1.1、添加配置类 6.1.2、测试 6.2、xml自定义分页 6.2.1、UserMapper中定义接口方法 6.2.2、UserMapper.xml中编写SQL 6.2.3、测试 6.3、乐观锁 6.3.1、场景 6.3.2、乐观锁与悲观锁 6.3.3、模拟修改冲突 数据库中增加商品表 添加数…

LeetCode 第一题: 两数之和

文章目录 第一题: 两数之和题目描述示例 解题思路Go语言实现 - 一遍哈希表法C实现算法分析 排序和双指针法Go语言实现 - 排序和双指针法C算法分析 暴力法Go语言实现 - 暴力法C算法分析 二分搜索法Go语言实现 - 二分搜索法C算法分析 第一题: 两数之和 ‍ 题目描述 给定一个整…

规则持久化(Sentinel)

规则持久化 基于Nacos配置中心实现推送 引入依赖 <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId> </dependency> 流控配置文件 [{"resource":"/order/flow",…