首页 > 其他分享 >GEE训练教程——如何确定几何形状的中心点坐标和相交的坐标

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

时间:2024-06-13 16:00:07浏览次数:19  
标签:Geometry Map GEE color geometry 坐标 中心点 var addLayer

简介

在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")

标签:Geometry,Map,GEE,color,geometry,坐标,中心点,var,addLayer
From: https://blog.csdn.net/qq_31988139/article/details/139001174

相关文章

  • GEE——利用GEE在线计算Landsat 4、5、7、8和9的数据融合后的长时序LST地表温度、蒸散
    之前的代码用的Landsatcollectin1,但是即将在2024年7月1日,全部更新为collection2因此下面的代码也进行了脚本的更新,之前LST的博客可以参考这个: GoogleEarthEngine(GEE)——利用GEE在线计算Landsat4、5、7和8的LST地表温度_gee用一级产品计算地表温度-CSDN博客GEE更新——......
  • [FEM-6-2]杆单元的坐标变换——三维立体空间
    目录1三维空间(3D)杆单元的坐标变换1.1单元位移场的表达1.2三维空间(3D)多连杆示例参考1三维空间(3D)杆单元的坐标变换图1三维空间杆单元的坐标变换三维空间问题中的杆单元如上图所示1.1单元位移场的表达该杆单元在局部坐标系下(......
  • openlayers解决坐标经过本初子午线后横跨整个地图的异常问题
    在使用OpenLayers处理坐标系统和地图投影时,确保地图上的线条平滑过渡过本初子午线是一个常见的问题。本博客提供了一个针对EPSG:3857和EPSG:4326投影的坐标调整方法,以避免线条异常横跨整个地图的情况。针对3857投影当使用EPSG:3857投影时,坐标系统使用的是米为单位,而绘图......
  • 从零手撕一个网页版图形编辑器之坐标变换(3)
    ​本编辑器(土豆猫图形编辑器)社区版代码已开源,开源库地址:https://gitee.com/longhan13/lgxmap_community.git本文暂时中断前面章节的代码框架讲解,先讲解一下本编辑器所使用的坐标变换方法及涉及的相关代码,是本编辑器基础的基础。本编辑器所使用的坐标系为右手坐标系,既X正向水......
  • Python-GEE遥感云大数据分析、管理与可视化
    随着航空、航天、近地空间遥感平台的持续发展,遥感技术近年来取得显著进步。遥感数据的空间、时间、光谱分辨率及数据量均大幅提升,呈现出大数据特征。这为相关研究带来了新机遇,但同时也带来巨大挑战。传统的工作站和服务器已无法满足大区域、多尺度海量遥感数据处理需求。为解......
  • Python-GEE遥感云大数据分析、管理与可视化及多领域案例教程
    原文链接:Python-GEE遥感云大数据分析、管理与可视化及多领域案例教程https://mp.weixin.qq.com/s?__biz=MzUzNTczMDMxMg==&mid=2247606139&idx=3&sn=2b98c8d5c99878ce78c8fade559bdae5&chksm=fa821e9ccdf5978a7e63a1d514f2a643158a595fa75ac751c5ca477692bbc84e993245b342df&to......
  • 提取PAD LOCATION 坐标
    hiSetBindKey("Layout""F9""smpGUIPadExtract()")procedure(smpGUIPadExtract()let(() padlayerName=hiCreateStringField( ?name`padlayerName ?prompt"LayerName" ) padlayerPpos=hiCreateStringF......
  • C++ Builder 2010 绘制坐标
     一、步骤:1.先确定Image的位置,大小(可以不写)          2.设置初始面板,绘制初始的x,y坐标轴          3.画x,y向的刻度线,标刻x,y轴刻度          4.获取数据(可以不写)          5.将数......
  • 基于BungeeCord搭建 多服务端 Minecraft 我的世界 Bedwars服务器 教程
    本文基于BungeeCord搭建多服务我的世界起床战争服务器本文章后续会持续更新由于多世界插件EssentialsX-Core与Bedwars1058在部分指令上有冲突,于是建议使用BungeeCord(之后我简称BC)搭建多服务端minecraft服务器,将起床Bedwars服务分离出来,顺便将其他的服务比如登陆大厅等分离出......
  • 高德坐标打点(点为正常的WGS84地球坐标系,常见于 GPS 设备,Google 地图等国际标准的坐标
    创建一个js文件工具//WGS84toGCJ-02converter//高德转地球坐标//coordinateUtils.jsconstPI=3.1415926535897932384626;consta=6378245.0;//a:WGS84大地坐标系的长半轴constee=0.00669342162296594323;//ee:WGS84椭球的偏心率平方//WGS84toGC......