You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GEE中LandTrendr算法多边形AOI报错:LinearRing需至少3个点

解决Google Earth Engine中LandTrendr多边形AOI报错问题

尝试在Google Earth Engine中运行LandTrendr算法提取变化图,使用点作为AOI时运行正常,但改用多边形AOI时抛出错误:Line 75: GeometryConstructors.Polygon: LinearRing requires at least 3 points

原始报错代码

//##########################################################################################
// START INPUTS
//##########################################################################################

// define collection parameters

var startYear = 1985;
var endYear = 2017;
var startDay = '06-20';
var endDay = '09-20';

//var aoi = ee.Geometry.Point(-122.8848, 43.7929);

var coords = ([70.9361058400289,28.387332974875402],
              [83.5044652150289,28.387332974875402],
              [83.5044652150289,37.305336609850876],
              [70.9361058400289,37.305336609850876],
              [70.9361058400289,28.387332974875402]);

var aoi = ee.Geometry.Polygon(coords);

var index = 'NBR';
var maskThese = ['cloud', 'shadow', 'snow', 'water'];

// define landtrendr parameters

var runParams = { 
  maxSegments:            6,
  spikeThreshold:         0.9,
  vertexCountOvershoot:   3,
  preventOneYearRecovery: true,
  recoveryThreshold:      0.25,
  pvalThreshold:          0.05,
  bestModelProportion:    0.75,
  minObservationsNeeded:  6
};

// define change parameters

var changeParams = {
  delta:  'loss',
  sort:   'greatest',
  year:   {checked:false, start:2000, end:2010},
  mag:    {checked:true,  value:200,  operator: '\>', dsnr:false},
  dur:    {checked:true,  value:4,    operator: '\<'},
  preval: {checked:true,  value:300,  operator: '\>'},
  mmu:    {checked:true,  value:11},
};

//##########################################################################################
// END INPUTS
//##########################################################################################

// load the LandTrendr.js module

var ltgee = require('users/emaprlab/public:Modules/LandTrendr.js'); 

// add index to changeParams object

changeParams.index = index;

// run landtrendr

var lt = ltgee.runLT(startYear, endYear, startDay, endDay, aoi, index, [], runParams,     maskThese);

// get the change map layers

var changeImg = ltgee.getChangeMap(lt, changeParams);

// set visualization dictionaries
var palette = ['#9400D3', '#4B0082', '#0000FF', '#00FF00', '#FFFF00', '#FF7F00', '#FF0000'];
var yodVizParms = {
min: startYear,
max: endYear,
palette: palette
};

var magVizParms = {
min: 200,
max: 800,
palette: palette
};

// display the change attribute map - note that there are other layers - print changeImg to console to see

Map.centerObject(aoi, 11);
Map.addLayer(changeImg.select(['mag']), magVizParms, 'Magnitude of Change');
Map.addLayer(changeImg.select(['yod']), yodVizParms, 'Year of Detection');

// export change data to google drive

var region = aoi.buffer(1000).bounds();
var exportImg = changeImg.clip(region).unmask(0).short();
Export.image.toDrive(
{image: exportImg,description: 'lt-gee_disturbance_map', 
folder: 'lt-gee_disturbance_map', 
fileNamePrefix: 'lt-gee_disturbance_map',
region: region, 
scale: 30,
crs: 'EPSG:5070',
maxPixels: 1e13});

问题原因

错误根源在于多边形坐标数组的语法错误:定义coords时,直接用逗号分隔多个坐标数组,未将这些坐标数组包裹在一个外层数组中。GEE的ee.Geometry.Polygon要求输入是二维数组(外层数组包含所有坐标点数组),当前写法导致GEE无法识别有效的线性环(LinearRing)结构。

修复方案

修改coords的定义,将所有坐标点数组包裹在一个外层方括号内:

var coords = [
  [70.9361058400289,28.387332974875402],
  [83.5044652150289,28.387332974875402],
  [83.5044652150289,37.305336609850876],
  [70.9361058400289,37.305336609850876],
  [70.9361058400289,28.387332974875402]
];

var aoi = ee.Geometry.Polygon(coords);

补充说明

  • GEE中ee.Geometry.Polygon的标准输入格式为[[lon1, lat1], [lon2, lat2], ..., [lonN, latN]],外层数组确保所有点构成一个闭合的线性环;
  • 原始代码中coords的写法相当于传递多个独立的坐标数组参数,而非一个包含所有点的二维数组,导致GEE无法解析为有效的多边形。

内容的提问来源于stack exchange,提问作者Shalu Shalu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:10:17