【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
});

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

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

相关文章

STM32中微秒延时的实现方式

STM32中微秒延时的实现方式 0.前言一、裸机实现方式二、FreeRTOS实现方式三、定时器实现&#xff08;通用&#xff09;4、总结 0.前言 最近在STM32驱动移植过程中需要用到微秒延时来实现一些外设的时序&#xff0c;由于网上找到的驱动方法良莠不齐&#xff0c;笔者在实现时序过…

【SQL篇】一、Flink动态表与流的关系以及DDL语法

文章目录 1、启动SQL客户端2、SQL客户端常用配置3、动态表和持续查询4、将流转为动态表5、用SQL持续查询6、动态表转为流7、时间属性8、DDL-数据库相关9、DDL-表相关 1、启动SQL客户端 启动Flink&#xff08;基于yarn-session模式为例&#xff09;&#xff1a; /opt/module/f…

Flink SQL 窗口聚合详解

1.滚动窗⼝&#xff08;TUMBLE&#xff09; **滚动窗⼝定义&#xff1a;**滚动窗⼝将每个元素指定给指定窗⼝⼤⼩的窗⼝&#xff0c;滚动窗⼝具有固定⼤⼩&#xff0c;且不重叠。 例如&#xff0c;指定⼀个⼤⼩为 5 分钟的滚动窗⼝&#xff0c;Flink 将每隔 5 分钟开启⼀个新…

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

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

数字人IP为何成家电品牌年轻化营销黑马?

伴随着数字人概念的出现&#xff0c;家电品牌逐渐通过3D虚拟数字人定制&#xff0c;让数字人成为内容、变现一体的IP&#xff0c;形成一定影响力的品牌效应&#xff0c;利用长线内容沉淀粉丝&#xff0c;使品牌实现年轻化营销。 *图片源于网络 如近日在海尔智家旗下品牌发布会上…

uniapp踩坑之项目:uniapp数字键盘组件—APP端

//在components文件夹创建digitKeyboard文件夹&#xff0c;再创建digitKeyboard.vue <!-- 数字键盘 --> <template><view class"digit-keyboard"><view class"digit-keyboard_bg" tap"hide"></view><view clas…

平面扫描(Plane-sweeping)深度体会

先看文章 三维重建之平面扫描算法&#xff08;Plane-sweeping&#xff09;_plane sweeping_小玄玄的博客-CSDN博客 Plane Sweeping | 平面扫描 - 知乎 (zhihu.com) 注意平面Dm,这是其中一个平面&#xff0c;平面上有一个M点&#xff0c;这个点也再物体上。所以会被摄像机看到…

SSD-1B:Segmind的加速稳定扩散模型

Segmind 稳定扩散模型 (SSD-1B) 是稳定扩散 XL (SDXL) 缩小 50% 的精简版本&#xff0c;可提供 60% 的加速&#xff0c;同时保持高质量的文本到图像生成功能。 它已经过各种数据集的训练&#xff0c;包括 Grit 和 Midjourney scrap 数据&#xff0c;以增强其根据文本提示创建各…

docker---dockerfile相关知识

第 3 章 Docker 高级实践 在这一部分我们主要来介绍一些Docker的高级内容&#xff1a; Dockerfile 和 Docker compose 3.1 Dockerfile Dockerfile我们从下面的几个方面来介绍&#xff1a; Dockerfile简介 Dockerfile快速入门 Dockerfile详解 Dockerfile简单 实践 3.1.1 Docke…

python-opencv写入视频文件无法播放

python-opencv写入视频文件无法播放 在采用Python写OpenCV的视频时&#xff0c;生成的视频总是无法播放&#xff0c;大小只有不到两百k&#xff0c;播放器提示视频已经损坏。网上搜了一些方法&#xff0c;记录下解决办法。 代码如下 fourcc cv2.VideoWriter_fourcc(*MJPG) fp…

腾讯云CVM服务器操作系统镜像大全

腾讯云CVM服务器的公共镜像是由腾讯云官方提供的镜像&#xff0c;公共镜像包含基础操作系统和腾讯云提供的初始化组件&#xff0c;公共镜像分为Windows和Linux两大类操作系统&#xff0c;如TencentOS Server、Windows Server、OpenCloudOS、CentOS Stream、CentOS、Ubuntu、Deb…

性能工作站,双十一大促,超值推荐:蝰蛇峡谷 NUC12SNKi7迷你主机,优惠抢购!

近年来&#xff0c;ITX主机和小型化系统变得越来越受欢迎。英特尔的NUC受到许多玩家们的关注。作为mini主机的代表NUC小巧设计和灵活性使它成为很多玩家和科技爱好者的选择。它的高性能和可玩性使得它在迷你型准系统市场上备受推崇。双11来临之际&#xff0c;我们分析下哪款高性…

世微LED 大功率升压恒流驱动芯片 平板显示LED背光板灯串恒流控制器 AP9193

概述 AP9193 是一款高效率、高精度的升 压型大功率 LED 灯恒流驱动控制芯片。 AP9193 内置高精度误差放大器&#xff0c;固 定关断时间控制电路&#xff0c;恒流驱动电路等&#xff0c; 特别适合大功率、多个高亮度 LED 灯的串 恒流驱动。 AP9193 采用固定关断时间的控制方 式…

产业园区中工业厂房的能源综合配置——工业园区综合能源数字化系统建设方案

以下内容转自微信公众号&#xff1a;PPP产业大讲堂&#xff0c;《产业园区中工业厂房的能源综合配置》。 园区工业地产中能源综合配置存在的问题 我国园区工业地产建设已历经近40年的发展, 园区在区域经济发展、产业集聚方面发挥了重要的载体和平台作用, 有力推动了我国社会经…

聊一聊关于手机Charge IC的电流流向

关于手机Charge&#xff0c;小白在以前的文章很少讲&#xff0c;一是这部分东西太多&#xff0c;过于复杂。二是总感觉写起来欠缺点什么。但后来想一想&#xff0c;本是抱着互相学习来写文章的心理态度&#xff0c;还是决定尝试写一些。 关于今天要讲的关于手机Charge的内容&a…

史上最全Windows安全工具汇总

史上最全Windows安全工具锦集来源于网络整理&#xff0c;安全性自测。 下载方式&#xff1a;史上最全Windows安全工具汇总

shiro 框架使用学习

简介 Shiro安全框架是Apache提供的一个强大灵活的安全框架Shiro安全框架提供了认证、授权、企业会话管理、加密、缓存管理相关的功能&#xff0c;使用Shiro可以非常方便的完成项目的权限管理模块开发 Shiro的整体架构 1、Subject ​ Subject即主体&#xff08;可以把当前用户…

Mysql Cluster (NDB - Network Database) - 分布式

Mysql高可用架构 复制&#xff08;Replication&#xff09; 是本文中所有 MySQL 技术的基础。包括&#xff1a;异步复制、半同步复制&#xff0c;增强半同步复制。InnoDB 副本集&#xff08;MySQL InnoDB ReplicaSet&#xff09; 无缝衔接其他 MySQL 官方提供的应用程序&#…

没有MES管理系统,先用数据采集设备能有用吗

在当前的数字化时代&#xff0c;企业纷纷意识到了数字化转型的重要性。数据被誉为新型生产要素&#xff0c;对于企业的运营和决策具有至关重要的作用。在数字化转型的过程中&#xff0c;许多企业面临着一个共同的问题&#xff1a;如何获取所需的数据&#xff1f; 有两家企业在…

偶数矩阵判断【C语言作业】

题目 若一个布尔矩阵所有行和所有列的和都是偶数&#xff0c;则称为偶数矩阵。请编写一个程序&#xff0c;判断一个布尔矩阵是否是偶数矩阵。 要求&#xff1a; &#xff08;1&#xff09;输入:首先输入一个正整数n(n<100),代表该矩阵的大小&#xff0c;接下来是n行n列的矩…