GEE(ccdc-1)——利用Landsat系列影像获取研究区范围的多波段影像(包含ccdc中已经定义的多波段)

2023-12-18 16:28

本文主要是介绍GEE(ccdc-1)——利用Landsat系列影像获取研究区范围的多波段影像(包含ccdc中已经定义的多波段),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

在进行CCDC监测时,我们首先要做的就是获取研究区的长时间序列影像,让其保存在你的资产中,方便后面调用,这里我们要做的额就是根据代码,将我们时间范围进行选取和指定的研究区边界,剩下的采用默认参数即可。最后出现的结果是将ccdc代码中所需要的波段和影像中一些光谱波段加载到一起作为最终的影像参与分类和监测。

ccdc监测中所需的波段

Parameter NameDescriptionRecommended ValueEffect of Increasing
breakPointBandsBands to use to calculate test statistic and test for spectral changeGreen, Red, NIR, SWIR1, SWIR2N/A
tmaskBandsBands to use for multi-temporal cloud and cloud-shadow maskingGreen, SWIR2N/A
minObservationsNumber of consecutive observations exceeding threshold to flag a change4Less breaks detected
chiSquare ProbabilityThreshold on test statistic, which is calculated from the model residuals and follows a chiSquare distribution0.995Less breaks detected
minNumOfYears ScalerNumber of years after which a new model fit is calculated during training period1.33Decrease regression model refitting
dateFormatFormat to store date information. 0: julian years, 1: fractional years, 2: unix time.1N/A
lambdaLambda value for LASSO regression fitting.002More parameters shrinking to 0
maxIterationsMaximum iterations to perform LASSO regression fitting20,000Attempt more LASSO fits to reach convergence

app操作过程

时间和数据集选择

当我们打开代码的时候,我们就需要根据我们的需要监测的时间进行设定,这里按照标准的年月日进行设定,而 startDOY和endDOY分别指的是你在整个1987-2023年之间每一年要调用的影像的具体时间,设定范围为1-365,后台会自动按照你设定的时间进行指定范围内的影像筛选,在mask Image则是我们选择去云后有效的影像还是都要选,而Landsat系列影像一般都要囊括进去,这样才能保证长时序的监测,另外,我们还可以选择哨兵1好数据来加载到我们要下载的影像集合中。

 

CCDC参数的设定

这些参数的设定主要是特定的参数设置,所以这里一般情况下我选择默认参数,一般没有特殊需求既保持默认即可。

 圈定研究区范围

这里我们可以通过在地图上画,或者按照单个瓦片,或者多个瓦片,以及中线点等方式在地图上选择我们要导出的研究区。特别注意,慢慢点击地图上的五个点,应用程序就会生成一个矩形,作为输出范围的几何图形。最后一个点闭合的时候一定要靠近绘制的起始点。

 导出结果选项

这里可以选择导出到谷歌硬盘或者GEE资产中,一般建议后者,因为可以进行后续的CCDC操作。 

我的研究区最终结果如下:共有1635景影像,每年影像涵盖25个波段。

代码链接:

https://code.earthengine.google.com/?scriptPath=users%2Fparevalo_bu%2Fgee-ccdc-tools%3AAPPS%2Fsubmit_ccdc

代码:


//加载一个点用于定位
var geometry = /* color: #d63000 */ee.Geometry.Point([-69.68833790720782, -11.422826263974468]);//加载两个定义好的函数库
var utils = require('users/parevalo_bu/gee-ccdc-tools:ccdcUtilities/inputs.js')
var ccdc_utils = require('users/parevalo_bu/gee-ccdc-tools:ccdcUtilities/ccdc.js')var composite = require("users/google/toolkits:landcover/impl/composites.js").Composites/*** UI app等定义可视化参数和样式。* * 第一个字典包含标题参数,第二个字典包含 "运行 CCDC "按钮的样式。* 第二个字典包含 "运行 CCDC "按钮的样式。*/ 
var visLabels = {fontWeight: 'bold', fontSize: '14px', width: '590px',padding: '4px 4px 4px 4px',border: '1px solid black',color: 'white',backgroundColor: 'black',textAlign: 'left'}var runStyle = {fontWeight: 'bold', fontSize: '14px', width: '590px',padding: '4px 4px 4px 4px',border: '1px solid black',color: 'black',backgroundColor: 'white',textAlign: 'center'}  var sensor = 'landsat'/*** 全球 GLANCE 陆地网格。* * 该特征集包含所有大陆与陆地重叠区域的* 与陆地重叠区域的所有大陆的网格系统。* 有关 GLANCE 和网格的更多信息,请点击此处: *  http://sites.bu.edu/measures/*/ 
var grids = ee.FeatureCollection('projects/GLANCE/GRIDS/GEOG_LAND/GLANCE_v01_GLOBAL_TILE_LAND')/*** 用于放置 ui.Widgets 的面板。* * 有一个放置所有内容的主面板,以及一个名为geoPanel 的面板,用于放置选择输出范围的选项。*/ 
var mainPanel = ui.Panel({style: {width: '600px'}})
.add(ui.Label('Continuous Change Detection and Classification (CCDC)',visLabels))
.add(ui.Label('User interface for submitting CCDC'))
.add(ui.Label('Please see instructions'))
.add(ui.Label('Input Parameters',visLabels))ui.root.add(mainPanel)var geoPanel = ui.Panel()/*** 定义全局变量 * * 这样方便控件之间的交互变得更容易。*/ 
//定义变量名称和常量变量
var outGeo, outGeos, outGeosSize, tool, drive, asset
var h = 0
var v = 0
var r = 0
var geoType = 0
var regionList = ['Select Method','Draw on Map','Single Tile','Tile Intersecting Point','Multiple Tiles','Draw Multiple Tiles on Map']/*** 在地图上画出研究区的引用* * Written by Justin Braaten (I think): https://emapr.github.io/LT-GEE/* https://code.earthengine.google.com/82b08b69bd596ada4747cb4bb7ea9526* * 此功能可让您在地图上点击,点击 5 次后,这些位置就会连接起来,形成一个多边形。该多边形可用作 分析的地理范围。*/ 
var DrawAreaTool = function() {var map = Mapvar drawingToolLayer = ui.Map.Layer({name: 'Area Selection Tool', visParams: {palette:'#4A8BF4', color:'#4A8BF4' }});this.map = map;this.selection = null;this.active = false;this.points = [];this.area = null;this.listeners = [];var tool = this;this.initialize = function() {this.map.onClick(this.onMouseClick);map.layers().reset()map.layers().set(0, drawingToolLayer);};this.startDrawing = function() {this.active = true;this.points = [];this.map.style().set('cursor', 'crosshair');drawingToolLayer.setShown(true);};this.stopDrawing = function() {tool.active = false;tool.map.style().set('cursor', 'hand');if(tool.points.length < 2) {return;}var closedPoints = tool.points.slice(0,-1);tool.area = ee.Geometry.Polygon(closedPoints)///.bounds();var empty = ee.Image().byte();var test = empty.paint({featureCollection: ee.FeatureCollection(tool.area),color: 1,width: 4});drawingToolLayer.setEeObject(test);tool.listeners.map(function(listener) {listener(tool.area);});runButton.widgets().get(0).setDisabled(false)runButton.widgets().get(0).style().set('backgroundColor','#5ab4ac')};this.onMouseClick = function(coords) {if(!tool.active) {return;}tool.points.push([coords.lon, coords.lat]);var geom = tool.points.length > 1 ? ee.Geometry.LineString(tool.points) : ee.Geometry.Point(tool.points[0]);drawingToolLayer.setEeObject(geom);if(tool.points.length > 4) {tool.stopDrawing();}};this.onFinished = function(listener) {tool.listeners.push(listener);};this.initialize();
};/*** 绘制输出范围的辅助函数。* * 使用DrawAreaTool() 函数绘制输出范围。*/ 
function doAreaTool() {geoPanel.add(ui.Label('Slowly click five points on the map and the application will generate a rectangle for the output extent geometry.'))tool = new DrawAreaTool();tool.startDrawing();tool.onFinished(function(geometry) {outGeo = ee.Feature(geometry);});}/*** 绘制输出范围和查找重叠瓦片的辅助函数* * 使用DrawAreaTool() 函数绘制输出范围。*/ 
function drawMultipleTiles() {geoPanel.add(ui.Label('Slowly click five points on the map and the application will generate a rectangle for the output extent geometry.'))tool = new DrawAreaTool();tool.startDrawing();tool.onFinished(function(geometry) {var tempGeo = grids.filterBounds(geometry);tempGeo.size().evaluate(function(val) {if (val > 0) {outGeos = ee.FeatureCollection(tempGeo)Map.addLayer(outGeos, {},'Output Geometry')Map.centerObject(outGeos)runButton.widgets().get(0).setDisabled(false)runButton.widgets().get(0).style().set('backgroundColor','#5ab4ac')outGeosSize

这篇关于GEE(ccdc-1)——利用Landsat系列影像获取研究区范围的多波段影像(包含ccdc中已经定义的多波段)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

生信圆桌x生信分析平台:助力生物信息学研究的综合工具

介绍 少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 生物信息学的迅速发展催生了众多生信分析平台,这些平台通过集成各种生物信息学工具和算法,极大地简化了数据处理和分析流程,使研究人员能够更高效地从海量生物数据中提取有价值的信息。这些平台通常具备友好的用户界面和强大的计算能力,支持不同类型的生物数据分析,如基因组、转录组、蛋白质组等。

开题报告中的研究方法设计:AI能帮你做什么?

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 大家都准备开题报告了吗?研究方法部分是不是已经让你头疼到抓狂? 别急,这可是大多数人都会遇到的难题!尤其是研究方法设计这一块,选定性还是定量,怎么搞才能符合老师的要求? 每次到这儿,头脑一片空白。 好消息是,现在AI工具火得一塌糊涂,比如ChatGPT,居然能帮你在研究方法这块儿上出点主意。是不