今天在群里看到有人在问一个问题,如何使用GEE把文件导出到Google Drive的子目录中?这里我就简单的说一下这个问题。
首先,在GEE中我们都知道了如何将数据导出导出Google Drive的文件夹中,如下面的一个例子:
var geometry = /* color: #d63000 */ee.FeatureCollection(
[ee.Feature(
ee.Geometry.Point([-102.05546874999999, 40.40069505477473]),
{
"system:index": "0"
})]);
Export.table.toDrive({
collection: geometry,
description: "tFcol",
folder: "tF",
fileFormat: "GeoJSON"
});
例子很简单,运行结果如下:
Google Drive中的数据
这里需要说明一下,在GEE中是无法直接创建我们看到的Google Drive中的子目录的,GEE导出数据到Google Drive其实就是一个查找路径的过程。
以上面例子为例,
第一种情况文件夹不存在
(1)程序会遍历整个Google Drive的根目录查找是否有文件夹名称叫做“tF”;
(2)程序就会在Google Drive根目录也就是my-drive下面创建一个文件夹叫做“tF”;
(3)将文件导出到新创建的文件夹中;
第二种情况文件夹存在
(1)程序会遍历整个Google Drive的根目录查找是否有文件夹名称叫做“tF”;
(2)程序会将找到的所有名叫“tF”的文件夹排序,规则是先是父级别文件夹,依次是子级别文件夹;
(3)将文件导出到排序后的第一个文件夹内;
说了上面两种情况,其实有的小伙伴应该已经明白了该如何导出文件到子目录中了。答案就是先建立一个子文件夹目录,然后直接导出文件到指定的子目录名称就可以。下面具体说明一下:
第一步、我先在文件夹“tF”中建立了一个文件夹“tF1”
第二步、编写代码
var geometry = /* color: #d63000 */ee.FeatureCollection(
[ee.Feature(
ee.Geometry.Point([-102.05546874999999, 40.40069505477473]),
{
"system:index": "0"
})]);
// Export.table.toDrive({
// collection: geometry,
// description: "tFcol",
// folder: "tF",
// fileFormat: "GeoJSON"
// });
Export.table.toDrive({
collection: geometry,
description: "tFcol",
folder: "tF1",
fileFormat: "GeoJSON"
});
第三步、执行导出
这是只有一个文件夹叫做“tF1”的情况,如果是多个文件夹会是什么样子呢?这里我在根目录中新建了一个文件夹叫做“tF1”,如下图
第二步、重新执行代码
var geometry = /* color: #d63000 */ee.FeatureCollection(
[ee.Feature(
ee.Geometry.Point([-102.05546874999999, 40.40069505477473]),
{
"system:index": "0"
})]);
// Export.table.toDrive({
// collection: geometry,
// description: "tFcol",
// folder: "tF",
// fileFormat: "GeoJSON"
// });
// Export.table.toDrive({
// collection: geometry,
// description: "tFcol",
// folder: "tF1",
// fileFormat: "GeoJSON"
// });
Export.table.toDrive({
collection: geometry,
description: "tFcol1",
folder: "tF1",
fileFormat: "GeoJSON"
});
第三步、查看结果
根目录下的文件夹“tF1”中有文件“tFcol1.geojson”
“tF”下的文件夹中不存在
可以看到数据确实是只导出到了根目录中的文件夹中。好了,这就是今天要讲的内容。
大家如果有问题需要交流或者有项目需要合作,可以微信联系我,加微信好友请留言加上“GEE”。
微信号:shi_weihappy