GEE问题:筛选指定区域的Sentinel-1影像缺乏VH等波段

news2024/11/25 4:37:27

目录

问题简介

原始代码

原始代码

问题解析

修改后的代码


问题简介

亲爱的同事们,我正在尝试使用 SAR 图像 - Sentinel-1 来改进使用机器学习的地上生物量建模。我想处理 Sentinel 图像并将它们作为波段插入以增强模型。通过阅读文档,可用的极化(已在 GRD 中处理)是 HH、HV、VV 和 VH。但是,出现一条消息,指出只有 VV 波段可用。有人知道其他极化是否不可用吗?

原始代码

https://code.earthengine.google.com/00d394a0be6a840eb4a260a78cabca7e

原始代码

var table = ee.FeatureCollection("projects/ee-selper/assets/aoi_sample");
// Define period of analysis
var start = '2021-01-01';
var end = '2021-12-31';
var season = ee.Filter.date(start,end);
print(season);


// Import Sentinel-1 collection
var sentinel1 =  ee.ImageCollection('COPERNICUS/S1_GRD');
// Filter Sentinel-1 collection for study area, date ranges and polarization components
var sCollection =  sentinel1
                    //filter by aoi and time
                    .filterBounds(table)
                    .filter(season)
                    // Filter to get images with VV and VH dual polarization
                    .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV'))
                    .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH'))
                    // Filter to get images collected in interferometric wide swath mode.
                    .filter(ee.Filter.eq('instrumentMode', 'IW'));

var desc = sCollection.filter(ee.Filter.eq('orbitProperties_pass', 'DESCENDING'));
var asc = sCollection.filter(ee.Filter.eq('orbitProperties_pass', 'ASCENDING'));

// Contar o número de imagens em cada coleção
print('Número de Imagens Ascendente (VH)', asc.filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH')).size());
print('Número de Imagens Ascendente (VV)', asc.filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV')).size());
print('Número de Imagens Descendente (VH)', desc.filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH')).size());
print('Número de Imagens Descendente (VH)', desc.filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV')).size());
// Criar um compósito a partir da média das polarizações e modos de órbita
var vh_asc = asc.select('VH').mean().rename('VH_asc');
var vv_asc = asc.select('VV').mean().rename('VV_asc');
var vh_desc = desc.select('VH').mean().rename('VH_desc');
var vv_desc = desc.select('VV').mean().rename('VV_desc');


// Combinar as bandas em uma única imagem
var composite = ee.Image.cat([vh_desc]).focal_median();

// Definir parâmetros de visualização para compósito (usar valores individuais para min e max)
var visParams = {
  bands: ['VH_desc'],  // bandas para os canais R, G, B
  min: -25,  // valor mínimo para todas as bandas
  max: 0     // valor máximo para todas as bandas
};

// Exibir no mapa
Map.centerObject(table, 10);  // Centralizar o mapa na área de interesse
Map.addLayer(composite.clip(table), visParams, 'composite');

// Exportar a imagem para o asset
Export.image.toAsset({
  image: composite.clip(table), // Recortar para a área de interesse
  description: 'Sentinel1', // Nome da tarefa de exportação
  assetId: 'projects/ee-selper/assets/Sentinel1', // Substitua pelo caminho correto do seu asset
  scale: 30, // Resolução da imagem em metros
  region: table, // Área de interesse para recorte
  maxPixels: 1e13 // Número máximo de pixels permitidos (ajuste conforme necessário)
});

问题解析

Sentinel-1卫星是由欧洲空间局(ESA)运行的合成孔径雷达(SAR)卫星系统。它们以天基的方式提供大量的雷达图像数据,用于监测地球表面的变化和活动。

在Sentinel-1数据中,区域只有Descending(下行)或只有Ascending(上行)数据是由于卫星系统的运行模式和地球自转的原因。

在多数情况下,Sentinel-1卫星会同时收集Descending和Ascending数据覆盖一个区域。这样做可以提供更全面的地面覆盖,减少数据缺失和提高数据质量。同时,Descending和Ascending数据还可以用于获取更准确的地表变化信息,例如地表沉降等。

然而,由于技术和资源限制,有些区域可能只有一种数据可用。这可能是因为在某些时间区域内,只有Descending或只有Ascending数据收集,这取决于卫星任务安排和优先级。此外,在一些地区,由于地形、地貌等因素,只有一种数据方向可以有效地传输信号,而另一种方向可能遇到干扰或信号损失。

总结起来,Sentinel-1数据只有Descending或只有Ascending覆盖某个区域是由于卫星运行模式、地球自转和地理因素等多种原因造成的。这些数据的不同方向可以提供更全面和准确的地表观测,并支持各种应用,如环境监测、农业、城市规划等。

修改后的代码

var table = ee.FeatureCollection("projects/ee-selper/assets/aoi_sample");
// Define period of analysis
var start = '2021-01-01';
var end = '2021-12-31';
var season = ee.Filter.date(start,end);
print(season);


// Import Sentinel-1 collection
var sentinel1 =  ee.ImageCollection('COPERNICUS/S1_GRD');
// Filter Sentinel-1 collection for study area, date ranges and polarization components
var sCollection =  sentinel1
                    //filter by aoi and time
                    .filterBounds(table)
                    .filter(season)
                    // Filter to get images with VV and VH dual polarization
                    .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH'))
                    // Filter to get images collected in interferometric wide swath mode.
                    .filter(ee.Filter.eq('instrumentMode', 'IW'));

var desc = sCollection.filter(ee.Filter.eq('orbitProperties_pass', 'DESCENDING'));
var asc = sCollection.filter(ee.Filter.eq('orbitProperties_pass', 'ASCENDING'));

// Contar o número de imagens em cada coleção
print('Número de Imagens Ascendente (VH)', asc.filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH')).size());
print('Número de Imagens Ascendente (VV)', asc.filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV')).size());
print('Número de Imagens Descendente (VH)', desc.filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH')).size());
print('Número de Imagens Descendente (VH)', desc.filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV')).size());
// Criar um compósito a partir da média das polarizações e modos de órbita
var vh_asc = asc.select('VH').mean().rename('VH_asc');
var vv_asc = asc.select('VV').mean().rename('VV_asc');
var vh_desc = desc.select('VH').mean().rename('VH_desc');
var vv_desc = desc.select('VV').mean().rename('VV_desc');


// Combinar as bandas em uma única imagem
var composite = ee.Image.cat([vh_desc]).focal_median();

// Definir parâmetros de visualização para compósito (usar valores individuais para min e max)
var visParams = {
  bands: ['VH_desc'],  // bandas para os canais R, G, B
  min: -25,  // valor mínimo para todas as bandas
  max: 0     // valor máximo para todas as bandas
};

// Exibir no mapa
Map.centerObject(table, 10);  // Centralizar o mapa na área de interesse
Map.addLayer(composite.clip(table), visParams, 'composite');

// Exportar a imagem para o asset
Export.image.toAsset({
  image: composite.clip(table), // Recortar para a área de interesse
  description: 'Sentinel1', // Nome da tarefa de exportação
  assetId: 'projects/ee-selper/assets/Sentinel1', // Substitua pelo caminho correto do seu asset
  scale: 30, // Resolução da imagem em metros
  region: table, // Área de interesse para recorte
  maxPixels: 1e13 // Número máximo de pixels permitidos (ajuste conforme necessário)
});

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端编程艺术(3)---JavaScript

目录 1.JavaScript 1.输出 2.变量和数据类型 3.运算符 4.数组 5.函数 6.面向对象 7.ES6面向对象 2.BOM 1.document对象 3.DOM 4.JSON 1.JavaScript JavaScript是一种脚本编程语言,通常用于为网页增加交互性和动态效果。它是一种高级语言&#xff…

用js和css实现一行一行文字交替显示

用js和css实现&#xff0c;效果是&#xff1a;有多行文字&#xff0c;一行一行的交替显示&#xff0c;每隔几秒显示一行&#xff0c;循环显示。 代码如下&#xff0c;保存为html即可看到效果&#xff1a; <!DOCTYPE html> <html lang"en"> <hea…

心觉:梦想成真的三个核心步骤

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作190/1000天 梦想成真是每个人的愿望 但是希望你不要把“梦想成真”这四个字当成愿望或许愿&#xff0c;因为它实际上是一个成事的…

为什么芯片有多个不同的供电电压?

一、为什么芯片有多个不同的供电电压&#xff1f; 优化性能与功耗&#xff1a;芯片的核心部分&#xff08;Core&#xff09;和输入输出部分&#xff08;IO&#xff09;可能采用不同的电压。核心电压通常较低&#xff0c;以减少功耗和发热&#xff0c;提高能效&#xff1b;而IO电…

如何解决msvcp140.dll丢失,这6个方法可以解决msvcp140.dll丢失

在日常电脑使用中&#xff0c;可能会遇到一些常见问题&#xff0c;比如msvcp140.dll丢失或损坏。这个问题会导致程序无法正常运行&#xff0c;对我们的生活、工作造成困扰。本文将介绍6种解决msvcp140.dll丢失的方法&#xff0c;让大家能快速解决这个问题。 一&#xff0c;msvc…

25游卡(服务器)面试经验 游卡最常见面试问题总结

目录 【面试经历】 问题+详细答案 面试流程 面试攻略 【面试经历】 秋招目前面了十多家,第一家不开摄像头且表示麦不好要求找个耳机的。贴面经(纯八股) 1.HTTP与HTTPS 2.MTU如何设置,过大过小的后果 3.DNS过程 4.如何创建进程/线程,孤儿进程 5.java从文件到运行的过程…

大厂笔试现已经禁用本地IDE怎么看

如果我说本来面试做题这种事情就是反人类你相信吗&#xff1f; 这个罪恶的源头就是 Google&#xff0c;说是为了选择高素质的计算机编程水平的人才&#xff0c;然后把面试就变成了考试&#xff0c;最大的受益者当然是印度人了。 当把一个考察过程变成标准化的考试过程&#x…

每日一道算法题——二分查找

文章目录 开口闭口区分:1、问题2、示例3、解决方法&#xff08;1&#xff09;注意点&#xff08;2&#xff09;代码 开口闭口区分: 开口闭口区分: [1,2,3] 左闭右闭[1,2,3) 左闭右开(1,2,3] 左开右闭 开口如数组(1,2,3)不包含当前数据&#xff0c;也就是指只有2&#xff0c;闭口…

各省-科技创新、研发强度数据(2007-2022年)

研发强度通常指研究与试验发展&#xff08;R&D&#xff09;经费与国内生产总值&#xff08;GDP&#xff09;之比&#xff0c;是衡量一个国家或地区科技活动强度的重要指标。高研发强度往往意味着更强的科技创新能力和更快的技术进步速度。 从地区分布来看&#xff0c;研发…

什么是 HTTP 请求中的 preflight 类型请求

在浏览器的 HTTP 请求中&#xff0c;当我们使用 fetch API 或者 XMLHttpRequest 来进行跨域请求时&#xff0c;浏览器有时会发送一种称为 Preflight 的请求。这种请求是浏览器在实际发送跨域请求前&#xff0c;先与目标服务器进行的一次 “探测” 请求&#xff0c;以确认服务器…

java基础_异常总结详解

1 列举一些列举常见的运行时异常 运行时异常都是 RuntimeException 子类异常 NullPointerException - 空指针异常 ClassCastException - 类转换异常 IndexOutOfBoundsException - 下标越界异常 ArithmeticException - 计算异常 IllegalArgumentException - 非法参数异常 Numb…

C - Separated Lunch

题目链接: C - Separated Lunch (atcoder.jp) 题目描述: 大致意思是&#xff1a;有n个人&#xff0c;让你把他们分为两个组&#xff0c;然后分完后的这两个组的最大值最小为多少&#xff1f; 数据范围&#xff1a; 样例输入&#xff1a; 5 2 3 5 10 12 样例输出&#xff1a;…

二分查找算法——在排序数组中查找元素的第一个和最后一个位置

1.题目解析 题目来源&#xff1a;在排序数组中查找元素的第一个和最后一个位置——力扣 测试用例 2.算法原理 查找左端点 此时根据二段性&#xff0c;需要将数组分为大于target与小于target两部分&#xff0c;然后取出中点位置判断此时中点位置的值与target的大小关系&#xf…

SpringBoot校园资料分享平台:设计与实现

3系统分析 3.1可行性分析 通过对本校园资料分享平台实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本校园资料分享平台采用JAVA作为开发语言&#xff0c;Sprin…

基于Springboot+Vue的计算中心共享平台(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…

vSAN02:容错、存储策略、文件服务、快照与备份、iSCSI

目录 vSAN容错条带化存储策略1. 创建新策略2. 应用存储策略 vSAN文件服务文件服务快照与备份 vSAN iSCSI目标服务 vSAN容错 FTT&#xff1a;Fault to Tolerance 允许故障数 故障域&#xff1a;每一台vSAN主机是一个故障域 - 假设3台超融合&#xff08;3计算1存储&#xff09;&…

2024年最新版本神马TV8.5影视APP源码 293TV影视点播系统源码搭建教程 神马TV8.2加强版反编译教程 保姆级小白可搭建 完整版本视频教程

2024年最新版的神马TV影视APP源码&#xff0c;版本号8.5&#xff0c;提供了前所未有的定制化选项和高级功能。用户可以轻松更换应用的包名和名称&#xff0c;确保品牌个性化。此外&#xff0c;该应用采用了动态域名加密技术&#xff0c;增强了数据传输的安全性。它支持自动切换…

【可视化大屏】将柱状图引入到html页面中

到这里还是用的死数据&#xff0c;先将柱状图引入html页面测试一下 根据上一步echarts的使用步骤&#xff0c;引入echarts.js后需要初始化一个实例对象&#xff0c;所以新建一个index.js文件来进行创建实例化对象和配置数据信息等。 //在index.html引入<script src"j…

Redis:zset类型

Redis&#xff1a;zset类型 zset命令ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZREVRANGEBYSCOREZPOPMAXBZPOPMAXZPOPMINBZPOPMINZRANKZREVRANKZSCOREZREMZREMRANGEBYRANKZREMRANGEBYSCOREZINCRBY 集合间操作ZINRERSTOREZUNIONSTORE 内部编码ziplistskiplist 在Redis中&…

文心一言 VS 讯飞星火 VS chatgpt (362)-- 算法导论24.3 4题

四、Gaedel 教授写了一个程序&#xff0c;他声称该程序实现了 Dijkstra 算法。对于每个结点 v ∈ V v∈V v∈V,该程序生成值 u . d u.d u.d 和 v . π v.π v.π 。请给出一个时间复杂度为 O ( V E ) O(VE) O(VE) 的算法来检查教授所编写程序的输出。该算法应该判断每个结…