0%

GEE入门[2] | 上传、导出

GEE数据库

  GEE自带了非常多的各种影像矢量文件等资源。包括卫星影像,气候、地形数据,以及各种处理后的数据,比如土地覆盖分类,NDVI,水体检测等。详见数据库列表

   顺带列下整理的GEE提供的LULC相关的数据库:

Upload资源

   一方面我们可以使用GEE自带的各种影像矢量文件等资源,另外一方面我们可以上传我们自己的资源。GEE的Assets提供了250G的空间。

  1. 在GEE在线平台左侧任务栏,选择Assets,点击”New”按钮。
  1. 选择要上传的文件类型。本教程以tfrecord和json为例上传图片数据。

  1. 选择本地资源,填写相关信息。上传TFRecord数据时,需要上传mixer.json文件。
  1. 通过“Task”标签可以看到资源上传进度。资源上传成功后显示蓝色,失败显示红色。左侧任务栏”Assets”可以看到成功导入的数据。其中上传TFRecord图像比较迷,经常会出现mixer unreadable问题,多上传几次就好了。

    注:Google Cloud Storage可以通过python代码直接上传,Google Drive尚未实现。

  2. 接着在“Assets”点击想要import的数据,选择“import”即可。

接着可以在JavaScript在线平台看见import的数据。

python同理:
image = ee.Image("users/daviddoyle1/test_c3")

Export资源

   GEE主要可以导出如下类型资源,分别是image影像类型、map地图地图类、table矢量文件类和video视频类。导出函数主要可以直接将数据存放于3个地方,Google Drive、Assets和Google Cloud Storage。由于Google Cloud Storage激活需要信用卡,略过不讲。
   Google Drive(drive.google.com/drive)前文已介绍过,通过谷歌账号可以直接获取15G免费存储空间,而且可以通过Colab使用免费GPU,适合硬件条件不好的情况。
   Assests是GEE资源存放位置,里面的资源是可以直接在GEE工作空间中使用,每个用户空间限制是250G。
   GEE下载文件主要有两个方式,一个是getDownloadURL,一个是Export方式。本教程主要介绍Export方法。Export相关方法如下,其中红色的是废弃的方法。[参考无形的风]

   以image为例,介绍各个参数,具体见文档。

  1. 导出到Asset方法简介:
    Export.image.toAsset(image, description, assetId, pyramidingPolicy, dimensions, region, scale, crs, crsTransform, maxPixels)
    常用参数说明:

   image 需要导出的影像;

   description 导出任务描述;

   assetId 资源名称,也就是在Asset文件夹中看到的资源名称;

   pyramidingPolicy 波段值计算方式,是一个对象值。计算方式包括:mean、sample、min、max、mode,默认是mean。这个值通常不会设置,都是采用默认值。示例:{‘B4’: ‘mean’} 意思是波段名称为B4的波段采用mean的方式计算;

   dimensions 导出Image的宽和高;

   region 导出的区域,是一个Geomtry;

   scale 分辨率,单位米,比如:30;

   crs 投影信息,一般是采用默认方式,通常可以设置为EPSG:4326;

   maxPixels 导出影像的最大像素个数可以设置为 1e13 防止导出时候报错。

  1. 导出到Drive方法简介
    Export.image.toDrive(image, description, folder, fileNamePrefix, dimensions, region, scale, crs, crsTransform, maxPixels, shardSize, fileDimensions, skipEmptyTiles, fileFormat, formatOptions)
    常用参数说明:

   image 需要导出的影像;

   description 导出任务描述;

   folder 在Assets中的文件夹名称,也就是用户自己创建的文件夹。如果不传此参数,那么导出的文件会直接放在Assets根目录下,通常都不会传此参数;fileNamePrefix 导出的资源名称,如果默认的不传,那么会直接采用description来作为导出的文件名称;

   dimensions 导出Image的宽和高;

   region 导出的区域,是一个Geomtry;

   scale 分辨率,单位米,比如:30;

   crs 投影信息,一般是采用默认方式,通常可以设置为EPSG:4326;

   maxPixels 导出影像的最大像素个数可以设置为 1e13 防止导出时候报错。

   导出矢量文件类似,可以直接看文档介绍。

导出实例

  1. 导出矢量数据到”Assets”
       这里的矢量数据为在线平台选取的区域,红色为trainingPolys,紫色的为evalPolys。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var desc='trainingPolys'; 
var assetId=desc
Export.table.toAsset({
collection: trainingPolys,
description: desc,
assetId:assetId
});
var desc='evalPolys'
var assetId=desc
Export.table.toAsset({
collection: evalPolys,
description: desc,
assetId:assetId
});
  • 导出成功

  • import
1
2
var evalPolys = ee.FeatureCollection("users/daviddoyle1/Predict_muliti_6/evalPolys");
var trainingPolys = ee.FeatureCollection("users/daviddoyle1/Predict_muliti_6/trainingPolys");
1
2
evalPolys = ee.FeatureCollection("users/daviddoyle1/Predict_muliti_6/evalPolys")
trainingPolys = ee.FeatureCollection("users/daviddoyle1/Predict_muliti_6/trainingPolys")
  1. 导出影像数据到“Assets”(重采样)
  • 将高分辨率影像导出时重采样成30m分辨率的。
    1
    2
    3
    4
    5
    6
    Export.image.toAsset({
    image: test_c3,
    description: 'test_c3_30',
    scale: 30,//定义导出图像的分辨率
    maxPixels: 1e13
    });
  • 结果对比
  1. 导出矢量数据到Drive(格式为TFRecord)
    一同导出的还有mixer.json文件。
    偷懒中,只放Python代码:
1
2
3
4
5
6
7
8
task = ee.batch.Export.table.toDrive(
collection = geomSample,
description = desc,
folder = FOLDER,
fileNamePrefix = desc,
fileFormat = 'TFRecord',
selectors = BANDS + LABELS
)

Anyway,JavaScript和python相差不大。

------------------   The End    Thanks for reading   ------------------