【GEE】4、 Google 地球引擎中的数据导入和导出

1简介

在本模块中,我们将讨论以下概念:

  1. 如何将您自己的数据集引入 GEE。
  2. 如何将来自遥感数据的值与您自己的数据相关联。
  3. 如何从 GEE 导出特征。

2背景

了解动物对环境的反应对于了解如何管理这些物种至关重要。虽然动物被迫做出选择以满足其基本需求,但它们的选择很可能也受到当地天气条件等动态因素的影响。除了直接观察之外,很难将动物行为与天气条件联系起来。在这个单元中,我们将从美洲狮收集的 GPS 项圈数据与通过 GEE 访问的 Daymet 气候数据集的每日温度估计值集成。

这将要求我们将自己的数据引入 GEE,将天气值连接到点位置,并将这些增值数据从 GEE 中带回以进行进一步分析。

在加利福尼亚州洛杉矶的顶级旅游目的地之一附近拍摄的山狮的相机陷阱照片。照片:地球岛杂志
 

2.1 GPS定位数据

Mahoney 等人 2016 年的一项研究使用 GPS 项圈来跟踪犹他州中部的两只美洲狮和 16 只土狼的运动。这些数据用于了解这两个物种个体的一些行为模式。任何人都可以在Movebank网站上访问这些研究人员在研究期间收集的数据。该网站托管来自世界各地的动物运动数据集。虽然某些 Movebank 数据集仅列出作者的联系信息,但其他数据集允许您在其 web 地图上显示信息,还有一些允许您下载数据。
 

Movebank.com 上的交互图示例,可让您搜索有关动物运动的数据。
 

2.2 Daymet 天气数据

Daymet 数据集提供了每日天气参数的网格估计。每天有 7 个地表天气参数可用,空间分辨率为 1 公里 x 1 公里,空间范围为北美。ORNL DAAC 可以通过各种工具和格式访问 Daymet 数据集,从而提供丰富的每日地表气象资源。资料来源: Daymet/NASA

Daymet 数据以 1 公里 x 1 公里的空间分辨率提供每天的数据,是美洲狮与景观相互作用的时间和空间尺度的重要资源。总共有七个测量值。这使我们能够检查天气的多个方面,以评估它如何影响行为。

与 GEE 中的 Daymet 图像关联的元数据。
 

如果您有兴趣了解有关全球可用气候数据的更多信息,请查看 单元6。

3将您自己的数据带入 Earth Engine

在本练习中,我们将讨论如何将您自己的数据移动到 GEE、从数据集中提取值以及从 GEE 中导出这些值。将数据带入 GEE 的过程一直在迅速变化,与大多数事情一样,最好直接转到文档以查看最新更新。该信息可以在这里找到。

3.1清理数据

动物运动数据作为 csv 文件下载。要将它们带入 GEE,我们需要将它们转换为 shapefile。虽然有很多方法可以将 csv 文件转换为 shapefile,但我们将使用 R。下面的代码包含进行此转换所需的所有内容。可以在此处找到有关如何在 R 中将 csv 文件转换为 shapefile 的详细信息。

代码的一些复杂性来自重命名列以删除“.”。为了符合 GEE 对命名约定的要求,这是必要的。虽然此特定细节不在文档中,但它在帮助论坛上的帖子中有所描述。

您不需要运行此代码,它供您将来参考

# Load necessary libraries
library(sp)
library(rgdal)
library(dplyr)
 
# read in CSV of data
baseDir <- "The folder your csv is held in"
data <- read.csv(paste0( baseDir, "/Site fidelity in cougars and coyotes, Utah_Idaho USA (data from Mahoney et al. 2016).csv"))
 
# convert to spatial points data frame
# remove all NA values from lat and long columns
names(data)
noNAs <-  data[complete.cases(data[ , 4:5]),]
# filter to select animal of interest
glimpse(noNAs)
cougarF53 <- noNAs %>%
  filter(individual.local.identifier == "F53") %>%
  dplyr::select("event.id", "timestamp", "location.long","location.lat")
 
# Unique GEE issue
# GEE does not accept column names with dots So we will rename our columsn
colnames(cougarF53) <- c("id", "timestamp", "lon", "lat")
# check the time line of data collection so we can match those dates in GEE
timeframe <- sort(cougarF53$timestamp)
 
print(paste0("The first time stamp is ", timeframe[1], " the last collection is ", timeframe[length(timeframe)] ))
 
 
# Create a spatial feature with the sp package
# only keep unique id as data
cougarF53Spatial <- sp::SpatialPointsDataFrame(coords = cougarF53[,3:4], data = cougarF53[,1])
# set coordinate reference system to WGS84, using the proj4str
crs(cougarF53Spatial) <- "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs "
 
# Export as shapefile
# write a shapefile
writeOGR(cougarF53Spatial, baseDir, "/cougarF53Locations", driver="ESRI Shapefile")

我们写出了 shapefile,每行只有一个列,一个唯一的 id。我们这样做是因为我们计划在 GEE 之外进行大部分分析,因此无需加载所有额外数据。唯一 ID 将允许我们将来自 GEE 的增值数据与原始数据集连接起来。

3.2引入资产

  • 坐标参考系统:首先,重要的是要注意 GEE 使用的投影是WGS 1984 EPSG: 4326。因此,您想要带入 GEE 的所有数据都需要相同的坐标参考系统。请记住 WGS1984 是一个地理坐标系。您不希望数据上有投影坐标系。

  • 上传 shapefile:在上面的 R 代码中,我们将数据的 csv 文件转换为 shapefile,并定义坐标参考系统 (CRS) 以匹配 GEE 的预期 (WGS 1984)。当您将功能加载到 Google 地球引擎中时,您将添加与您的 GEE 帐户相关联的个人资产。


 

您将能够在任务窗格中监控上传进度。


 

上传后,您可以通过代码编辑器左侧的资产窗格编辑资产。这允许您设置共享参数。对于此示例,任何人都可以读取资产。这意味着运行代码的任何人都将能够使用数据集,即使他们不拥有它或没有下载它。

共享个人资产的示例。
 

上传 shapefile 的过程可能需要一段时间,因此我们提供了一个脚本链接,而不是让您完成该过程,该脚本已经加载了本课程所需的数据。带有预加载数据集的代码。请将此脚本用作本课剩余部分的起点。

运行完此内容后,我们建议您加载自己的 shapefile。这可以是您的数据,或者如果您想要快速简便的数据,请尝试使用Natural Earth Data中的 shapefile 。这是一个用于各种地图比例的地理数据的绝佳站点。上面的链接将带您进入的 1:110m 物理向量非常通用,因此加载速度比数据更丰富的层快得多。

每项资产都具有与您在 Google 云端硬盘上可能拥有的其他功能类似的共享偏好。

import允许您将新获取的资产添加到脚本中。这与将 imageCollection 导入脚本非常相似。

share允许您定义谁可以查看和编辑资产。

delete使用它来清理空间,但请记住,一去不复返了。

加载资产后,通过双击资产面板中的资产名称或将鼠标悬停在名称上时按下出现在功能右侧的小箭头图标,将其导入脚本。将功能重命名为具有描述性的名称。然后在地图上将其可视化,以确保该功能看起来符合您的预期。

在预加载的脚本中,您可以看到我们已经完成了这些步骤。我们还添加了一个打印语句来访问数据结构。


  
  
  1. // Imported the data and not add it to the map and print.
  2. Map. addLayer(cougarF53, {}, "cougar presence data");
  3. print(cougarF53, "cougar data");
 

您可以使用检查器工具查看与新资产关联的属性数据。

将这些点可视化后,制作一个包含我们感兴趣区域的几何特征。我们将使用几何特征来过滤我们的气候数据。

您可以通过选择方形几何特征并绘制一个包含这些点的框来完成此操作。

在这些点周围绘制几何特征以过滤气候数据。
 

3.2.1上传栅格

引入栅格的过程与我们刚刚使用 shapefile 进行的过程相同。图像集合(栅格集)是更复杂的数据类型,还有一些其他要求,您可以在此处阅读。

3.3定义天气变量

在本课中,我们使用 Google Earth Engine 作为将遥感数据(即我们的栅格)与我们的点位置相关联的方法。虽然这个过程在概念上是直截了当的,但它确实需要一些工作才能完成。加载我们的点后,下一步是导入 Daymet 天气变量。

3.3.1调用气候资料日

我们使用的是 NASA 派生的数据集 Daymet V3,因为它具有 1 公里的空间分辨率,并且它可以测量美洲狮所经历的环境条件。我们将通过调用数据集的唯一 ID 并将其过滤到我们的边界框几何图形来导入它。

// Call in image and filter.
var Daymet = ee.ImageCollection("NASA/ORNL/DAYMET_V3")
.filterDate("2014-01-01", "2017-08-01")
.filterBounds(geometry)
.select('tmin')
.map(function(image){return image.clip(geometry)});
 
print(Daymet,"Daymet");
Map.addLayer(Daymet, {}, "Daymet");

打印语句中 Daymet 数据结构的视图。
 

从打印语句中,我们可以看到这是一个包含 267 张图像的图像集合(尽管您的图像总数可能会随着数据集的变化而变化)。每幅图像都有七个与特定天气测量相关的波段。现在两个数据集都已加载,我们将把美洲狮的发生数据与天气数据相关联。

3.4提取值

加载我们的点和图像后,我们可以调用一个函数,根据美洲狮的已知位置从底层栅格中提取值。我们将使用该ee.Image.sampleRegions函数来执行此操作。在 Docs 选项卡下搜索ee.Image.sampleRegions()函数以熟悉它所需的参数。

ee.Image.sampleRegions()是一个图像的函数,所以如果我们试图在 Daymet 上调用它,ImageCollection我们会得到一个错误。为了解决这个问题,我们将把 Daymet 图像集合转换为多波段图像。每天的七次测量中的每一次都将成为我们多波段图像中的一个特定波段。这个过程最终将对我们有所帮助,因为每个波段都是由收集日期和显示的变量定义的。我们可以使用这些信息来确定哪些数据与美洲狮在特定日期的位置有关。

重要提示:在图像集合中有许多图像,我们将创建具有大量波段的单个图像。因为 GEE 非常擅长数据操作,所以它可以处理这种类型的请求。

// Convert to a multiband image and clip.
var DaymetImage = Daymet
  .toBands()
  .filterBounds(geometry);
 
print(DaymetImage, "DaymetImage");

显示从图像集合转换为多波段图像的结果的打印语句。

现在我们有了一个多波段图像,我们可以使用该sampleRegions函数。您需要考虑此函数的三个参数。

Collection采样数据将与之关联的矢量数据集。

Properties定义将保留矢量数据集的哪些列。在这种情况下,我们希望保留“id”列,因为我们将使用它来将此数据集连接回 GEE 之外的原始数据。

Scale:这是指数据集的空间尺度(像元大小)。比例应始终与栅格数据的分辨率相匹配。如果您不确定栅格的分辨率是多少,请使用搜索栏搜索数据集,该信息将出现在文档中。

// Call the sample regions function.
var samples = DaymetImage.sampleRegions({
  collection: cougarF53,
  properties: ['id'],
  scale: 1000 });
print(samples,'samples');

从打印语句中,我们可以看到我们的点位置现在具有与之关联的天气测量值。同样,您的结果可能看起来略有不同。
 

3.5 导出

3.5.1将点导出为 Shapefile

我们有一系列与美洲狮 57 已知位置相关的每日天气数据。虽然我们可以在 GEE 中更多地使用这些数据,但很容易将它们导入 R 或 Excel。有几个选项可以定义导出数据的最终位置。一般来说,将数据保存到 Google Drive 帐户是一个安全的选择。我们将使用字典(用大括号表示)来定义export.table.toDrive()函数的参数。

shapefile 字段限制:一个 shapefile 只能包含 255 个字段;这些数据有 1869 个。因此,我们将数据导出为 csv 文件。

// Export value added data to your Google Drive.
Export.table.toDrive({
  collection: samples,
  description:'cougarDaymetToDriveExample',
  fileFormat: 'csv'
});

当您导出某些内容时,您的任务窗格将亮起。您需要通过选择运行按钮单独运行任务。


export运行具有函数的脚本后的任务栏示例。
 

当您选择运行按钮时,将出现以下弹出窗口。这允许您编辑导出的详细信息。

从 GEE 导出特征时出现的用户定义参数示例。
 

3.5.2导出栅格

在处理所有这些空间数据时,您可能已经意识到,在美洲狮上收集数据的时间段内显示中值的栅格可能是非常有用的信息。有关使用栅格的更多信息,请参阅5

为此,我们将对median()Daymet 图像集合应用一个 reducer 函数,为每个单元格中的每个参数生成一个中值。就像表格数据一样,我们将把这个多波段图像导出到 Google Drive。一旦我们使用该函数将图像集合转换为图像median(),我们就可以将其剪辑到geometry特征对象中。此要素将导出为多波段栅格。

// Apply a median reducer to the dataset.
var Daymet1 = Daymet
  .median()
  .clip(geometry);
  
print(Daymet1);
 
// Export the image to drive.
Export.image.toDrive({
  image: Daymet1,
  description: 'MedianValueForStudyArea',
  scale: 1000,
  region: geometry,
  maxPixels: 1e9
});



有很多选项。最重要的选项之一是max.pixels设置。一般来说,GEE 不允许您导出超过 10^9 像素的栅格。使用该max.pixels参数,您可以将其提高到每张图像大约 10^12 像素。如果您为大于 10^12 像素的区域导出数据,您将需要创造性地了解如何从 GEE 中获取信息。有时这涉及将图像分割成更小的部分,或者在 GEE 之外重新评估如此大的图像的有用性。

4结论

虽然 Google 地球引擎可用于行星尺度分析,但它也是一种有效的资源,可用于使用您自己的数据快速访问和分析大量信息。本模块中介绍的方法是为您自己的数据集增加价值的好方法。在此示例中,我们使用了天气数据,但这绝不是唯一的选择!您可以将您的数据连接到 Google 地球引擎中的许多其他数据集。由您决定什么是重要的以及为什么重要。

4.1 完整代码

// Imported the data and not add it to the map and print.
Map.addLayer(cougarF53, {}, "cougar presence data");
print(cougarF53, "cougar data");
 
// Call in image and filter.
var Daymet = ee.ImageCollection("NASA/ORNL/DAYMET_V3")
.filterDate("2014-01-01", "2017-08-01")
.filterBounds(geometry)
.select('tmin')
.map(function(image){return image.clip(geometry)});
 
print(Daymet,"Daymet");
Map.addLayer(Daymet, {}, "Daymet");
 
// Convert to a multiband image and clip.
var DaymetImage = Daymet
  .toBands()
  .clip(geometry);
 
print(DaymetImage, "DaymetImage");
 
// Call the sample regions function.
var samples = DaymetImage.sampleRegions({
  collection: cougarF53,
  properties: ['id'],
  scale: 1000 });
print(samples,'samples');
 
// Export value added data to your Google Drive.
Export.table.toDrive({
  collection: samples,
  description:'cougarDaymetToDriveExample',
  fileFormat: 'csv'
});
 
// Apply a median reducer to the dataset.
var Daymet1 = Daymet
  .median()
  .clip(geometry);
print(Daymet1);
 
// Export the image to drive.
Export.image.toDrive({
  image: Daymet1,
  description: 'MedianValueForStudyArea',
  scale: 1000,
  region: geometry,
  maxPixels: 1e9
});

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker Stack部署应用详解+Tomcat项目部署详细实战

Docker Stack 部署应用 概述 单机模式下&#xff0c;可以使用 Docker Compose 来编排多个服务。Docker Swarm 只能实现对单个服务的简单部署。而Docker Stack 只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排。 stack是一组共享…

Scala和Play WS库编写的爬虫程序

使用Scala和Play WS库编写的爬虫程序&#xff0c;该程序将爬取网页内容&#xff1a; import play.api.libs.ws._ import scala.concurrent.ExecutionContext.Implicits.global ​ object BaiduCrawler {def main(args: Array[String]): Unit {val url ""val proxy…

Gorm 中的迁移指南

探索使用 GORM 在 Go 中进行数据库迁移和模式更改的世界 在应用程序开发的不断变化的景观中&#xff0c;数据库模式更改是不可避免的。GORM&#xff0c;强大的 Go 对象关系映射库&#xff0c;通过迁移提供了一种无缝的解决方案来管理这些变化。本文将作为您全面的指南&#xf…

【产品资料】产品经理面试问题(三)

今天和大家免费分享产品经理常见的面试题目&#xff0c;含回答思路分析和回答事例。 【资源下载】 这个资源可以在Axure高保真原型哦小程序里免费下载 打开下方小程序后&#xff0c;搜索产品经理面试题目&#xff0c;获取下载地址 更多原型模板、视频教程、产品文档、定制服…

Redis常见风险分析

击穿 概念&#xff1a;在Redis获取某一key时, 由于key不存在, 而必须向DB发起一次请求的行为, 称为“Redis击穿”。 引发击穿的原因&#xff1a; 第一次访问恶意访问不存在的keyKey过期 合理的规避方案&#xff1a; 服务器启动时, 提前写入规范key的命名, 通过中间件拦截对…

Docker容器中执行throttle.sh显示权限报错:RTNETLINK answers: Operation not permitted

在模拟通信环境时&#xff0c;我执行了一下命令&#xff1a; bash ./throttle.sh wan但是&#xff0c;出现了权限的报错&#xff1a;RTNETLINK answers: Operation not permitted 解决方案说简单也挺简单&#xff0c;只需要两步完成。但是其实又蛮繁琐&#xff0c;因为需要将…

Splunk 创建特色 dashboard 报表

1: 背景: 对原有的dashboard 进行增加点东西,特别是文字部分: 比如: 增加:“this is a guidline for how to use performance". 这段话,就不能写在title, 那样,这段文字,会出现在dashboard 的PDF 文件的分割线的上面,不符合要求。 2: 解决问题: 正确的做法是…

算法模板之单调栈解密 | 图文详解

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;算法模板、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️单调栈讲解1.1 &#x1f514;单调栈的定义1.2 &#x1f514;如何维护一个单…

VB.NET—窗体引起的乌龙事件

目录 前言: 过程: 总结: 升华: 前言: 分享一个VB.NET遇到的一个问题&#xff0c;开始一直没有解决&#xff0c;这个问题阻碍了很长时间&#xff0c;成功的变成我路上的绊脚石&#xff0c;千方百计的想要绕过去&#xff0c;但事与愿违怎么也绕不过去&#xff0c;因为运行不了…

蓝桥杯官网填空题(方格计数)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 如下图所示&#xff0c;在二维平面上有无数个 11 的小方格。 我们以某个小方格的一个顶点为圆心画一个半径为 50000 的圆。 你能计算出这个圆里有多少个完整的小方…

使用vscode开发uniapp项目常用的辅助插件,提升开发效率

为什么不使用hbuilder开发呢&#xff1f;因为hbuilder对ts和vue3语法支持并不友好&#xff0c;而且代码提示不智能&#xff0c;也不能使用最近很流行的coplit和CodeGeex智能提示&#xff0c;所以就换掉hbulider&#xff0c;使用我们熟悉的vscode开发吧。 第一个&#xff1a;un…

城市内涝怎么预警?万宾科技内涝积水监测仪

在城市运行过程中&#xff0c;城市内涝问题频繁出现&#xff0c;影响城市管理水平的提升&#xff0c;也会进一步减缓城市基础设施建设。尤其近几年来&#xff0c;城市内涝灾害频繁出现&#xff0c;在沿海地区内涝所带来的安全隐患成为城市应急管理部门的心头大患。城市内涝的背…

List 接口常用实现类底层分析

一、集合 1.1 简介 集合主要分为两组&#xff08;单列集合、双列集合&#xff09;&#xff0c;Collection 接口有两个重要的子接口 List 和Set&#xff0c;它们的实现子类都是单列集合。Map 接口的实现子类是双列集合&#xff0c;存放的是 K-V 1.2 关系图 二、Collection 接口…

从零开始制作一个割草机器人

项目背景 为啥要做一个割草机器人呢&#xff1f;&#xff08;个人因素&#xff1a;我梦想就是做一款人形机器人保护人类&#xff0c;解放人类&#xff09; 基础准备&#xff1a;我们公司本身做过高精度&#xff0c;基于高精度的技术扩展到农机自动化驾驶。目前可以实现AB线拖…

Pyhotn: Mac安装selenium没有chromedriver-114以上及chromedriver无法挪到/usr/bin目录下的问题

1.0 安装selenium 终端输入&#xff1a; pip install selenium 查看版本&#xff1a; pip show selenium2.0 安装chromedriver 查看chrome版本 网上大多数是&#xff0c;基本到114就停了。 https://registry.npmmirror.com/binary.html?pathchromedriver/ 各种搜索&#…

代码冲突解决

远程仓库修改 本地代码修改 接下来我们push一下 如果使用IDE 冲突内容如下&#xff1a; 我们可以使用自带的工具进行修改 我们选择接受自己改动的即可 如果使用git工具怎么去处理呢 远程分支是这样 本地是这样的 add和commit之后&#xff0c;再pull&#xff0c;最后pus…

DL Homework 6

目录 一、概念 &#xff08;1&#xff09;卷积 &#xff08;2&#xff09;卷积核 &#xff08;3&#xff09;特征图 &#xff08;4&#xff09;特征选择 &#xff08;5&#xff09;步长 &#xff08;6&#xff09;填充 &#xff08;7&#xff09;感受野 二、探究不同卷…

【Spring Boot 源码学习】JedisConnectionConfiguration 详解

Spring Boot 源码学习系列 JedisConnectionConfiguration 详解 引言往期内容主要内容1. RedisConnectionFactory1.1 单机连接1.2 集群连接1.3 哨兵连接 2. JedisConnectionConfiguration2.1 RedisConnectionConfiguration2.2 导入自动配置2.3 相关注解介绍2.4 redisConnectionF…

Zephyr-7B-β :类GPT的高速推理LLM

Zephyr 是一系列语言模型&#xff0c;经过训练可以充当有用的助手。 Zephyr-7B-β 是该系列中的第二个模型&#xff0c;是 Mistralai/Mistral-7B-v0.1 的微调版本&#xff0c;使用直接偏好优化 (DPO) 在公开可用的合成数据集上进行训练 。 我们发现&#xff0c;删除这些数据集的…

SMART PLC开放式以太网通信(UDP通信)

西门子S7-200 SMART PLC不仅支持开放式以太网通信,还支持MODBU-RTU,以及ModbusTcp通信,详细内容请参考下面文章: MODBUS-RTU主站通信 【精选】PLC MODBUS通信优化、提高通信效率避免权限冲突(程序+算法描述)-CSDN博客文章浏览阅读2.5k次,点赞5次,收藏10次。MODBUS通讯…