使用 Google Earth Engine 中图像集合中每个单独图像的波段值填充 FeatureCollection

2024-03-05

在 Google Earth Engine 中,我已将要素集合作为 JSON 加载,其中包含一些多边形。我想向此 FeatureCollection 添加列,它为我提供每个多边形以及图像集合中包含的多个图像中的每个图像的两个波段的平均值。

这是我到目前为止的代码。

//Polygons

var polygons = ee.FeatureCollection('ft:1_z8-9NMZnJie34pXG6l-3StxlcwSKSTJFfVbrdBA');

Map.addLayer(polygons);

//Date of interest

var start = ee.Date('2008-01-01');
var finish = ee.Date('2010-12-31');

//IMPORT Landsat IMAGEs
var Landsat = ee.ImageCollection('LANDSAT/LT05/C01/T1') //Landsat images
.filterBounds(polygons)
.filterDate(start,finish)
.select('B4','B3');

//Add ImageCollection to Map
Map.addLayer(Landsat);

//Map the function over the collection and display the result
print(Landsat);

// Empty Collection to fill
var ft = ee.FeatureCollection(ee.List([]))

var fill = function(img, ini) {
  // type cast
  var inift = ee.FeatureCollection(ini)

  // gets the values for the points in the current img
  var mean = img.reduceRegions({
    collection:polygons,
    reducer: ee.Reducer.mean(),
 });

 // Print the first feature, to illustrate the result.
print(ee.Feature(mean.first()).select(img.bandNames()));

  // writes the mean in each feature
  var ft2 = polygons.map(function(f){return f.set("mean", mean)})

  // merges the FeatureCollections
  return inift.merge(ft2)

  // gets the date of the img
  var date = img.date().format()

  // writes the date in each feature
  var ft3 = polygons.map(function(f){return f.set("date", date)})

  // merges the FeatureCollections
  return inift.merge(ft3)
}

// Iterates over the ImageCollection
var newft = ee.FeatureCollection(Landsat.iterate(fill, ft))

// Export
Export.table.toDrive(newft,
"anyDescription",
"anyFolder",
"test")

在控制台中我收到一条错误消息

元素(错误) 无法解码 JSON。 错误:对象 '{"type":"ArgumentRef","value":null}' 的字段 'value' 缺失或为 null。 对象:{“type”:“ArgumentRef”,“value”:null}。

在生成的 csv 文件中,我得到一个名为“平均值”的新列,但其中填充了实际值,并且没有实际值。


没有理由使用iterate()这里。你能做的是嵌套map()。在多边形上,然后在图像上。您可以将生成的列表列表展平,将其变成单个列表,如下所示:

// compute mean band values by mapping over polygons and then over images
var results = polygons.map(function(f) {
  return images.map(function(i) {
    var mean = i.reduceRegion({
      geometry: f.geometry(),
      reducer: ee.Reducer.mean(),
    });

    return f.setMulti(mean).set({date: i.date()})
  })
})

// flatten
results = results.flatten()

Script: https://code.earthengine.google.com/b65a731c78f78a6f9e08300dcf552dff https://code.earthengine.google.com/b65a731c78f78a6f9e08300dcf552dff

可以使用相同的方法reduceRegions()同样,映射到图像,然后映射到区域。但是,您必须映射生成的要素才能设置日期。

images.filterBounds(f)如果您的功能覆盖更大的区域,也可以添加。

PS:你的桌子没有共享

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Google Earth Engine 中图像集合中每个单独图像的波段值填充 FeatureCollection 的相关文章

  • 使用 JSONDecoder 解码的对象的打印输出出现问题

    我正在尝试快速解码 JSON 字符串 但在解码后访问属性时遇到一些奇怪的问题 这是我从本地存储的 JSON 文件检索的 JSON 文件的内容 word a usage partOfSpeech determiner 这是访问 JSON 文件
  • 为什么 Twitter API 返回错误的推文 ID?

    我使用 Twitter API 来检索用户主页时间线推文 我使用 json 响应格式 最近推文 ID 在 API 中只是 id 被重新调整错误 举个例子 通常它应该像这样返回 id 14057503720 示例来自twitter控制台 但是
  • 如何在 Flutter 中解码 Gzip Http 响应?

    我是颤振新手 我正在发出网络请求 并且得到了正确的响应 但数据已被压缩 我已经在 Swift 中解压了相同的内容 但是对于 Flutter 我无法做到这一点 有人可以帮忙吗 这是我尝试过的 import dart convert impor
  • 如何在开头时解析 json 文件

    我想解析以下 JSON 文件 但以 向我表明这是一个数组 然后继续 对象 我当前的解析器返回一个 JSON 对象 我的问题是 如何修改解析器来解析这个文件 这样解析器将为我提供其他 JSON 文件 从对象或排列开始 JSON 文件 codi
  • Google Cloud Vision API:“错误代码:3”,“消息”:“图像数据错误。”

    我正在尝试 POST HTTP 请求来检测从 mat 图像转换为 base64 的图像中的文本 当我运行代码时 我得到 responses error code 3 message Bad image data 我的curl POST 字段
  • PostgreSQL 中 JSON 数据类型的大小限制

    有谁知道 PostgreSQL 9 2 中 JSON 数据类型的大小限制是多少 查看 PostgreSQL 9 2 1 的源代码 Source postgresql 9 2 1 src backend utils adt json c In
  • PagedList 的 Newtonsoft.Json 序列化不包含某些属性

    我正在尝试序列化 PagedList 对象 https github com martijnboland MvcPaging blob master src MvcPaging PagedList cs https github com m
  • 如何将 JsonNode 转换为 ObjectNode

    我有一个com fasterxml JsonNode带有一些数据的对象 我需要对其数据进行一些操作 我用谷歌搜索答案但没有得到正确的答案 您能建议我如何操作 JsonNode 数据吗 我也尝试过转换JsonNode to ObjectNod
  • 如何解码这个 JSON 字符串?

    这是我从 feed finder url 中得到的字符串 JSON 编码 updated 1265787927 id http www google com reader api 0 feed finder q u003dhttp itca
  • 如何为现代 C++ 迭代 JSON 中的 JSON

    我想迭代 json 对象中的每个条目 但我收到一个又一个难以理解的错误 下面的例子如何改正 include
  • CURL 相当于使用 VBA 的 POST JSON 数据

    我知道这与之前提出的一些问题类似 但有些东西仍然对我不起作用 如何执行以下命令 curl X POST data statements json H Content Type application json user username p
  • 如何对数组的数组进行 JSON_MODIFY?

    我的结构看起来像这样 Declare layout NVARCHAR MAX N Sections SectionName Section1 SectionOrder 1 Renders RenderName Render1 RenderO
  • 数组反序列化的Gson数组

    我有以下 JSON 结构 id 1 subcategories id 2 subcategories id 3 subcategories id 4 subcategories id 5 subcategories 类别的模型类 为简单起见
  • 我如何浏览 json?

    我有一些在对象中的 JSON 但我似乎可以返回 json 示例的值 如下所示 rootLayout main layoutDescriptions id main container type Tabs content type Panel
  • Mongoose查询结果是只读的吗?

    如何修改 Mongoose 查询返回的对象 假设我们有以下模式 var S new mongoose Schema name String field String 我对结果进行了以下查询和修改 var retrieve function
  • Apache Camel 的 JsonMappingException

    我在骆驼路线上遇到以下异常 Caused by com fasterxml jackson databind JsonMappingException No serializer found for class org apache cam
  • 返回视图作为 JSON 对象的一部分

    我有一个应用程序只加载一次完整视图 我这样做的原因并不重要 重要的是 其余内容只会以部分视图的形式返回 除了一些内容之外 我还有一些 JSON 对象 我想通过每个 AJAX 请求在服务器之间来回传递 有没有办法返回一个 JSON 对象 并将
  • 如何在单元测试中使用 JSON 发送请求

    我的 Flask 应用程序中有在请求中使用 JSON 的代码 我可以像这样获取 JSON 对象 Request request get json 这一直工作得很好 但是我正在尝试使用 Python 的 unittest 模块创建单元测试 但
  • 如何在 R 中解析堆叠多个 JSON 的文件?

    我在 R 中有以下 堆叠 JSON 对象 example1 json ID 12345 Timestamp 20140101 Usefulness Yes Code event1 A result 1 ID 1A35B Timestamp
  • 将 JSON 发送到 Spring MVC 控制器

    我正在尝试将 JSON 发送到 Spring MVC 控制器 在 Spring MVC 方面 一切都配置正确 下面是代码 但似乎没有运行

随机推荐