GEE训练教程——如何确定几何形状的中心点坐标和相交的坐标

简介

在GEE中,可以使用.geometry()方法来获取几何形状的中心点坐标和相交的坐标。

首先,使用.geometry()方法获取几何形状的几何信息,然后使用.centroid()方法获取几何形状的中心点坐标。示例代码如下:

// 获取几何形状的中心点坐标
var geometry = ee.Geometry.Point([1, 2]);  // 替换为你的几何形状
var center = geometry.centroid();
print('中心点坐标:', center);

要获取几何形状的相交的坐标,可以使用.intersection()方法。首先,创建一个与其他几何形状相交的几何形状,然后使用.intersection()方法获取相交的几何形状。示例代码如下:

// 获取几何形状的相交的坐标
var geometry1 = ee.Geometry.Polygon([[0, 0], [0, 2], [2, 2], [2, 0], [0, 0]]);
var geometry2 = ee.Geometry.Polygon([[1, 1], [1, 3], [3, 3], [3, 1], [1, 1]]);
var intersection = geometry1.intersection(geometry2);
print('相交的坐标:', intersection);

注意,当几何形状没有相交的部分时,intersection()方法将返回一个空的几何形状。在代码中,你可以使用.isEmpty()方法来检查几何形状是否为空。

函数

centroid(maxErrorproj)

Returns a point at the center of the highest-dimension components of the geometry. Lower-dimensional components are ignored, so the centroid of a geometry containing two polygons, three lines and a point is equivalent to the centroid of a geometry containing just the two polygons.

返回几何体最高维度分量的中心点。低维组件将被忽略,因此包含两个多边形、三条线和一个点的几何体的中心点等同于仅包含两个多边形的几何体的中心点。

Arguments:

this:geometry (Geometry):

Calculates the centroid of this geometry.

maxError (ErrorMargin, default: null):

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

proj (Projection, default: null):

If specified, the result will be in this projection. Otherwise it will be in WGS84.

Returns: Geometry

convexHull(maxErrorproj)

Returns the convex hull of the given geometry. The convex hull of a single point is the point itself, the convex hull of collinear points is a line, and the convex hull of everything else is a polygon. Note that a degenerate polygon with all vertices on the same line will result in a line segment.

返回给定几何体的凸壳。单个点的凸面形是点本身,相邻点的凸面形是一条直线,其他所有点的凸面形是一个多边形。需要注意的是,如果一个退化多边形的所有顶点都在同一条直线上,那么该多边形将生成一条线段。 

Arguments:

this:geometry (Geometry):

Calculates the convex hull of this geometry.

maxError (ErrorMargin, default: null):

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

proj (Projection, default: null):

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

代码

var geometry = /* color: #d63000 */ee.Geometry.MultiLineString(
        [[[-110.32626262349595, 40.55855252455285],
          [-110.32598903817643, 40.55829576296057]],
         [[-110.3258763853978, 40.558328367661794],
          [-110.32555452031602, 40.55858920469993]]]);
var sss = geometry.centroid({
	maxError:10,
	proj:'EPSG:4326',
})
print(sss)

Map.addLayer(sss,{color:'blue'},"中心点")

原始坐标

[-110.32626262349595,40.55855252455285]

[-110.32598903817643,40.55829576296057]

坐标中心点

[-110.3261258308334,40.55842414376022]

结果

代码

由两条直线构建成的多边形

var geometry = /* color: #d63000 */ee.Geometry.MultiLineString(
        [[[-110.32626262349595, 40.55855252455285],
          [-110.32598903817643, 40.55829576296057]],
         [[-110.3258763853978, 40.558328367661794],
          [-110.32555452031602, 40.55858920469993]]]);
Map.addLayer(geometry.convexHull(),{color:'black'},"ssss")

 这样我们就能获取一个多边形,根据多边形来选取出相交点的坐标。

var geometry2 = /* color: #98ff00 */ee.Geometry.MultiLineString(
        [[[-110.32545996052656, 40.558247457554124],
          [-110.32496643406782, 40.55830655360604]],
         [[-110.3249483996024, 40.55826663228495],
          [-110.32513078981542, 40.558533582925165]]]);

Map.addLayer(geometry2.convexHull(),{color:'black'},"ssss")

var geometry3 = /* color: #0b4a8b */ee.Geometry.LineString(
        [[-110.32475273214976, 40.558423588568765],
         [-110.32454486095111, 40.55831456669189],
         [-110.3243276020209, 40.558460268786476]]);

//这里我们可以看到一个折现绘制的三角形结果
Map.addLayer(geometry3.convexHull(),{color:'black'},"ssss")

根据坐标函数来获取具体的坐标

List (1 element)

0:List (4 elements)

0:[-110.3243276020209,40.558460268786476]

1:[-110.32475273214978,40.558423588568765]

2:[-110.32454486095111,40.55831456669189]

3:[-110.3243276020209,40.558460268786476]

线段进行边界转化

var geometry = /* color: #d63000 */ee.Geometry.MultiLineString(
        [[[-110.32626262349595, 40.55855252455285],
          [-110.32598903817643, 40.55829576296057]],
         [[-110.3258763853978, 40.558328367661794],
          [-110.32555452031602, 40.55858920469993]]]);

// 获取其边界多边形
Map.addLayer(geometry.bounds(),{color:'red'},"多边形")
//按照多边形转化为格网
Map.addLayer(geometry.coveringGrid('EPSG:4326'),{color:'red'},"ssss")

其他代码

第一种情况

var geometry3 = /* color: #0b4a8b */ee.Geometry.LineString(
        [[-110.32531024334209, 40.558216243071236],
         [-110.32501922366397, 40.558183638315406]]);
var geometry2 = /* color: #ffc82d */ee.Geometry.LineString(
        [[-110.32532767770068, 40.55821929976629],
         [-110.32513724086063, 40.558369077652515]]);

var ss1 = geometry2.buffer(1)

var ss2 = geometry3.buffer(1)

Map.addLayer(ss1,{color:'pink'},"buffer1")
Map.addLayer(ss2,{color:'pink'},"buffer2")

Map.addLayer(ss1.intersection({
		right:ss2,
	maxError:1,
//	proj:null,
}),{color:'black'},"ssss")


var zhongxindian = ss1.intersection(ss2).centroid({
	maxError:1,
	proj:'EPSG:4326',
})

print('zhongxindian zuobiao',zhongxindian.coordinates())
Map.addLayer(zhongxindian,{color:'red'},"zhongxindian")

第二种情况

var geometry3 = /* color: #0b4a8b */ee.Geometry.LineString(
        [[-110.32544033049255, 40.55823152654645],
         [-110.32514931074797, 40.55819892179061]]);
var geometry2 = /* color: #ffc82d */ee.Geometry.LineString(
        [[-110.32532767770068, 40.55821929976629],
         [-110.32513724086063, 40.558369077652515]]);

var ss1 = geometry2.buffer(1)

var ss2 = geometry3.buffer(1)

Map.addLayer(ss1,{color:'pink'},"buffer1")
Map.addLayer(ss2,{color:'pink'},"buffer2")

Map.addLayer(ss1.intersection({
		right:ss2,
	maxError:1,
//	proj:null,
}),{color:'black'},"ssss")


var zhongxindian = ss1.intersection(ss2).centroid({
	maxError:1,
	proj:'EPSG:4326',
})

print('zhongxindian zuobiao',zhongxindian.coordinates())
Map.addLayer(zhongxindian,{color:'red'},"zhongxindian")

第三种情况 

var geometry3 = /* color: #0b4a8b */ee.Geometry.LineString(
        [[-110.32540210925113, 40.5583120194767],
         [-110.32511108915664, 40.55827941472087]]);
var geometry2 = /* color: #ffc82d */ee.Geometry.LineString(
        [[-110.32532767770068, 40.55821929976629],
         [-110.32513724086063, 40.558369077652515]]);

var ss1 = geometry2.buffer(1)

var ss2 = geometry3.buffer(1)

Map.addLayer(ss1,{color:'pink'},"buffer1")
Map.addLayer(ss2,{color:'pink'},"buffer2")

Map.addLayer(ss1.intersection({
		right:ss2,
	maxError:1,
//	proj:null,
}),{color:'black'},"ssss")


var zhongxindian = ss1.intersection(ss2).centroid({
	maxError:1,
	proj:'EPSG:4326',
})

print('zhongxindian zuobiao',zhongxindian.coordinates())
Map.addLayer(zhongxindian,{color:'red'},"zhongxindian")

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

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

相关文章

Golang | Leetcode Golang题解之第132题分割回文串II

题目&#xff1a; 题解&#xff1a; func minCut(s string) int {n : len(s)g : make([][]bool, n)for i : range g {g[i] make([]bool, n)for j : range g[i] {g[i][j] true}}for i : n - 1; i > 0; i-- {for j : i 1; j < n; j {g[i][j] s[i] s[j] && g[…

【Linux文件篇】系统文件、文件描述符与重定向的实用指南

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 前言&#xff1a;相信大家对文件都不会太陌生、也不会太熟悉。在没有学习Linux操作系统时&#xff0c;我们在学习C或C时都学过如何去创建、打开、读写等待文件的操作&#xff0c;知道一些语言级别的一些接口与函数。但…

【C++题解】1389 - 数据分析

问题&#xff1a;1389 - 数据分析 类型&#xff1a;简单循环 题目描述&#xff1a; 该方法的操作方式为&#xff0c;如果要传递 2 个数字信息给友军&#xff0c;会直接传递给友军一个整数 n&#xff08;n 是一个 10 位以内的整数&#xff09;&#xff0c;该整数的长度代表要传…

Python私教张大鹏 Vue3整合AntDesignVue之Breadcrumb 面包屑

显示当前页面在系统层级结构中的位置&#xff0c;并能向上返回。 何时使用 当系统拥有超过两级以上的层级结构时&#xff1b; 当需要告知用户『你在哪里』时&#xff1b; 当需要向上导航的功能时。 案例&#xff1a;面包屑导航基本使用 核心代码&#xff1a; <template…

[spring] Spring MVC Thymeleaf(上)

[spring] Spring MVC & Thymeleaf&#xff08;上&#xff09; 本章内容主要过一下简单的 Spring MVC 的案例 简单来说&#xff0c;spring mvc 就是比较传统的网页开发流程&#xff0c;目前 boot 是可以比较轻松的配置 thymeleaf——毕竟 spring boot 内置对 thymeleaf 的…

快速开始一个go程序(极简-快速入门)

一、 实验介绍 1.1 实验简介 为了能更高效地使用语言进行编码&#xff0c;Go 语言有自己的哲学和编程习惯。Go 语言的设计者们从编程效率出发设计了这门语言&#xff0c;但又不会丢掉访问底层程序结构的能力。设计者们通过一组最少的关键字、内置的方法和语法&#xff0c;最终…

ChatGPT对话基本原则和玩法

一、使用三个准备 1.1 认知上 超级学霸&#xff0c;几乎所有的工作/生活场景&#xff0c;都可以找它帮忙 ChatGPT作为一个人工智能语言模型&#xff0c;具有强大的知识储备和处理能力。这意味着在许多工作和生活场景中&#xff0c;你都可以向它请教问题或寻求帮助。无论是科…

idea编码问题:需要 <标识符> 非法的类型 、需要为 class、interface 或 enum 问题解决

目录 问题现象 问题解决 问题现象 今天在idea 使用中遇到的一个编码的问题就是&#xff0c;出现了这个&#xff1a; Error:(357, 28) java: /home/luya...........anageService.java:357: 需要 <标识符> Error:(357, 41) java: /home/luya............anageService.ja…

OpenGauss数据库-3.数据库管理

第1关&#xff1a;创建数据库 gsql -d postgres -U gaussdb -w passwd123123 create database accessdb with ownergaussdb templatetemplate0;第2关&#xff1a;修改数据库 gsql -d postgres -U gaussdb -w passwd123123 alter database accessdb rename to human_tpcds; 第…

【清华大学】《自然语言处理》(刘知远)课程笔记 ——NLP Basics

自然语言处理基础&#xff08;Natural Language Processing Basics, NLP Basics&#xff09; 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言…

智慧园区建设方案(Word)

1. 楼栋管理 2. 物业管理 3. 安防管理 4. 门禁管理 5. 停车管理 6. 能源管理 7. 环保管理 8. 园区生活服务 9. 招商管理 10. 收费中心 11. 园区地图 12. 门户网站 软件整套原件获取&#xff1a;本文末个人名片。

量化投资分析平台 迅投 QMT(六)资产定价绕不过去的BSM模型

量化投资分析平台 迅投 QMT [迅投 QMT](https://www.xuntou.net/?user_code7NYs7O)我目前在使用什么是BSM模型CQF课程介绍模型的五个重要的假设模型公式 我们为啥要学&#xff08;知道&#xff09;这玩意儿呢&#xff1f;隐含波动率&#xff08;Implied Volatility&#xff09…

【qt】启动窗口的玩法

启动窗口的玩法 一.应用场景二.界面类设计窗口三.main中创建四.窗口显示标识五.功能实现1.读取注册表2.md5加密3.登录实现4.保存注册表5.功能演示 六.鼠标事件拖动窗口1.找到鼠标事件的函数2.点击事件3.移动事件4.释放事件 七.总结 一.应用场景 一般我们的软件和应用都会一个登…

MATLAB实现粒子群算法优化柔性车间调度(PSO-fjsp)

柔性车间调度是典型的N-P问题&#xff0c;数学模型如下&#xff1a; 数学模型 假设有n个工件需要在m台机器上进行加工。每个工件包含一道或多道工序&#xff0c;每道工序可以在多台机器上进行加工&#xff0c;但每道工序的加工时间随机器的不同而不同。 符号定义 n&#xf…

仓储系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;试剂管理&#xff0c;安全管理&#xff0c;存储管理 用户账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;试剂管理&#xff0c;安全管…

pytest构建和测试FastAPI CURD API

文章目录 概述目标FASTAPI 介绍CRUD API 项目设置freezepipreqs 代码介绍run APIpytest测试conftest测试用例测试报告 F&Q1.执行uvicorn app.main:app --host localhost --port 8000 --reload 报错 zsh: /usr/local/bin/uvicorn: bad interpreter2.生成requirement.txt时&a…

基于SSM+Jsp的家用电器销售网站

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

技术玩家实现在不支持的CPU上运行 Windows 10 22H2

最近&#xff0c;AMD 悄然确认&#xff0c;其新款 Ryzen AI 300 系列 APU 将不再为 Windows 10 制作芯片组驱动程序&#xff0c;因为它将终止对Windows 10操作系统的支持&#xff0c;尽管它完全有能力这样做。这意味着想要获得官方驱动程序支持的用户必须在其上运行 Windows 11…

8.让画面动起来

一、Unity Shader中的内置变量&#xff08;时间篇&#xff09; 动画效果往往都是把时间添加到一些变量的计算中&#xff0c;以便在时间变化的同时也可以随之变化。Unity shader提供了一系列关于时间的内置变量来允许我们方便地在Shader中访问运行时间&#xff0c;实现各种动画…

基于小波的多元信号降噪-基于马氏距离和EDF统计(MATLAB R2018a)

马氏距离是度量学习中一种常用的距离指标&#xff0c;通常被用作评定数据样本间的相似度&#xff0c;可以应对高维线性分布数据中各维度间非独立同分布的问题&#xff0c;计算方法如下。 &#xff08;1&#xff09;计算样本向量的平均值。 &#xff08;2&#xff09;计算样本向…