• PIE Engine系列2 数据的上传、调用及下载(附源码超详细)


    目录

    一、数据上传

    1.矢量数据上传

    2.栅格数据上传

    二、数据的调用

    1.矢量数据的调用

    2.影像数据的调用

    三、数据导出下载

    1.矢量数据导出下载   

    2.栅格数据导出下载

    3.导出至云盘与资源的区别

    四、总结


            在上一篇文章中,我们学到了PIE Engine数据下载器的使用。

            在本文中,你将学习到:

    1 将矢量/栅格的数据上传至云计算平台

    2 调用平台或个人上传的矢量或栅格数据

    2 将平台的矢量/栅格数据导入到个人资源或云盘

    一、数据上传

    1.矢量数据上传

            我将以黄河上游的矢量边界数据为例,将其上传至PIE Engine Studio平台的个人资源中。在资源栏中点击上传,选择上传矢量数据并选择上传的数据格式,我在这里选择shapefile格式。

            在这里,我们可以看到数据要求有:

    1 数据若为geojson可直接上传,若为shapefile需要以zip压缩包的方式上传

    2 压缩包内部必须包括(shp、prj、shx、dbf)四个文件

    3 推荐编码为UTF-8,一般默认

    4 解压后的数据不能大于50MB,一般这种情况出现在上传大量样本点的时候

    5 压缩包的名称不能有汉字与其他奇怪的字符

            将压缩好的矢量边界数据拖拽至上传框或者直接点击选择压缩包,点击上传;看到以下界面表示上传成功,我们也可以在资源栏中看到它。     

    2.栅格数据上传

            同理,我们在资源栏中选择上传遥感影像数据,这里以东京的遥感影像为例。

             从数据要求中我们可以看到PIE Engine平台支持TIF格式的影像和TXT格式的影像,由于作者没有使用过TXT格式的,在这里以东京塔_1m的TIF影像为例上传,对影像数据的要求有:

    1 影像格式后缀为tif、tiff等

    2 单个文件最大不超过10GB

    3 资源名称不能有汉字或其他奇怪的字符

            将影像数据拖拽至上传框或者直接点击上传即可。从下图中我们可以看到已上传成功。 

             我们可以在资源中看到已上传的影像。若是没有可以点击刷新按钮后再查看。

    二、数据的调用

            数据调用可分为两类:

    1 平台数据的调用

    2 上传数据的调用

    1.矢量数据的调用

       ①平台数据

            以北京市的行政边界为例:

    1. fCol = pie.FeatureCollection("NGCC/CHINA_CITY_BOUNDARY");//市级矢量数据集
    2. var roi = fCol.filter(pie.Filter.eq("name", "北京市")).first().geometry();//筛选出name属性为“北京市”的首个FeatureCollection对象并将其转换为geometry类型
    3. Map.addLayer(roi, {color:"#ff0000", fillColor:"#00000000"}, "roi");//在底图图层中可视化此矢量,其中color属性为矢量边界的轮廓颜色,fillColor为填充色,“roi”为图层名称
    4. Map.centerObject(roi, 7);//将底图的中心选择在矢量图层的中心,并以7级展示

            调用效果如下图:

             可以看出矢量数据已经可视化在底图上,且图层名为“roi”。

       ②上传数据

            以之前上传的黄河上游边界为例,在资源中点击需要调用的矢量资源: 

            在此可以看到矢量数据的存储路径,我们调用时需要此参数,输入以下代码。

    1. var roi = pie.FeatureCollection("user/qianyouliang/hh").first().geometry();//将黄河上游区域矢量的首个FeatureCollection对象转换为geometry类型
    2. Map.addLayer(roi, {color:"#ff0000", fillColor:"#00000000",width:2}, "roi");//在底图图层中可视化此矢量,其中color属性为矢量边界的轮廓颜色,fillColor为填充色,width为线宽,“roi”为图层名称
    3. Map.centerObject(roi, 7);//将底图的中心选择在矢量图层的中心,并以7级展示

            调用效果如下,成功实现上传数据的调用。

    2.影像数据的调用

           平台的数据调用可以是单景影像也可以按照矢量边界裁剪后的影像。

       ①平台数据

            以北京市2021年的哨兵2号_L1C数据为例,代码如下(代码解释包含在在代码中):

    1. fCol = pie.FeatureCollection("NGCC/CHINA_CITY_BOUNDARY");//市级矢量数据集
    2. var roi = fCol.filter(pie.Filter.eq("name", "北京市")).first().geometry();//筛选出name属性为“北京市”的首个FeatureCollection对象并将其转换为geometry类型
    3. Map.addLayer(roi, {color:"#ff0000", fillColor:"#00000000"}, "roi");//在底图图层中可视化此矢量,其中color属性为矢量边界的轮廓颜色,fillColor为填充色,“roi”为图层名称
    4. Map.centerObject(roi, 7);//将底图的中心选择在矢量图层的中心,并以7级展示
    5. var bands = ['B2','B3','B4','B8'];//选择影像数据的波段
    6. var image = pie.ImageCollection("S2/L1C")//选择数据源为哨兵2号L1C数据
    7. .filterBounds(roi)//以roi边界为位置选择影像
    8. .filterDate("2021-3-1","2021-8-1")//选择在2022年3-5月份的影像
    9. .filter(pie.Filter.lt("cloudyPixelPercentage", 5))//云盖量属性小于5
    10. .select(bands)//选择需要的波段
    11. .mosaic()//选择需要的波段并拼接影像
    12. .clip(roi);//根据研究区范围裁剪影像
    13. Map.addLayer(image.select(["B4","B3","B2"]),{min:0,max:3000},"image");//将其展现在底图上,其中select函数用于选择需要展示出来的波段组合。min-max是影像数值范围,image是图层名称

            查看结果,可以看到影像已被加载出来,细节清晰。

       ②上传数据

            以之前上传的东京1m影像为例,上传影像因为边界已知,所以不需要roi辅助。代码如下:

    1. bands = ['B1','B2','B3']//选择要显示的波段
    2. var image = pie.Image('user/qianyouliang/tokyo_1m').select(bands);//提取资源中上传的影像
    3. Map.addLayer(image.select(bands),{min:0,max:255},"研究区遥感影像");//将其可视化在底图中
    4. Map.centerObject(image,18)//定位其中心并以18级放大级别展示

            结果如下,可以清晰的看到地物:

    三、数据导出下载

            在进行数据导出之前,我们需要知道,数据有两个导出途径:

    1 资源 资源区域数据可以直接在分析中调用,也可以直接下载

    2 云盘 数据只可以下载到本地,不能在分析中调用

    Export类:提供影像、表格等导出功能,支持导出数据至个人资源目录或云盘下。

    image函数,用于导出影像数据至个人资源

    table函数,用于导出矢量数据至个人资源

    imageToCloud函数,用于导出影像至个人云盘

    1.矢量数据导出下载   

            我将以北京市的行政边界为例导出矢量数据。代码如下:

    1. var fCol = pie.FeatureCollection("NGCC/CHINA_CITY_BOUNDARY");//市级矢量数据集
    2. var roi = fCol.filter(pie.Filter.eq("name", "北京市")).first().geometry();
    3. Map.centerObject(roi, 7);//将底图的中心选择在矢量图层的中心,并以7级展示
    4. Map.addLayer(roi, {color:"#ff0000", fillColor:"#00000000"}, "roi");
    5. Export.table({
    6. collection: roi,//选择导出的对象,这里为roi图层
    7. description: "ExportShp"//任务描述,用处不大
    8. });

    2.栅格数据导出下载

            以之前北京市2022年的哨兵2号L1C影像数据为例,将其导出到云盘或者资源。

    1. fCol = pie.FeatureCollection("NGCC/CHINA_CITY_BOUNDARY");//市级矢量数据集
    2. var roi = fCol.filter(pie.Filter.eq("name", "北京市")).first().geometry();//筛选出name属性为“北京市”的首个FeatureCollection对象并将其转换为geometry类型
    3. Map.addLayer(roi, {color:"#ff0000", fillColor:"#00000000"}, "roi");//在底图图层中可视化此矢量,其中color属性为矢量边界的轮廓颜色,fillColor为填充色,“roi”为图层名称
    4. Map.centerObject(roi, 7);//将底图的中心选择在矢量图层的中心,并以7级展示
    5. var bands = ['B2','B3','B4','B8'];//选择影像数据的波段
    6. var image = pie.ImageCollection("S2/L1C")//选择数据源为哨兵2号L1C数据
    7. .filterBounds(roi)//以roi边界为位置选择影像
    8. .filterDate("2021-3-1","2021-8-1")//选择在2022年3-5月份的影像
    9. .filter(pie.Filter.lt("cloudyPixelPercentage", 5))//云盖量属性小于5
    10. .select(bands)//选择需要的波段
    11. .mosaic()//选择需要的波段并拼接影像
    12. .clip(roi);//根据研究区范围裁剪影像
    13. Map.addLayer(image.select(["B4","B3","B2"]),{min:0,max:3000},"image");//将其展现在底图上,其中select函数用于选择需要展示出来的波段组合。min-max是影像数值范围,image是图层名称
    14. Export.image({
    15. image: image,//导出对象
    16. description: "ExportImage",//导出任务描述
    17. assetId: "24287496921681920123",//导出数据的ID,此参数可忽略
    18. region: roi,//导出矢量范围
    19. scale: 30 //导出的分辨率
    20. });

            运行结果如下图,我们可以在右上角任务栏中找到影像导出的按钮,点击执行便可导出至个人资源:

    3.导出至云盘与资源的区别

            在上文中我们可以看到,矢量数据和影像数据都可以导出至个人资源并在需要的时候直接调用。但是Export类也有一个影像导出至云盘的函数imageToCloud:使用代码如下:

    1. fCol = pie.FeatureCollection("NGCC/CHINA_CITY_BOUNDARY");//市级矢量数据集
    2. var roi = fCol.filter(pie.Filter.eq("name", "北京市")).first().geometry();//筛选出name属性为“北京市”的首个FeatureCollection对象并将其转换为geometry类型
    3. Map.addLayer(roi, {color:"#ff0000", fillColor:"#00000000"}, "roi");//在底图图层中可视化此矢量,其中color属性为矢量边界的轮廓颜色,fillColor为填充色,“roi”为图层名称
    4. Map.centerObject(roi, 7);//将底图的中心选择在矢量图层的中心,并以7级展示
    5. var bands = ['B2','B3','B4','B8'];//选择影像数据的波段
    6. var image = pie.ImageCollection("S2/L1C")//选择数据源为哨兵2号L1C数据
    7. .filterBounds(roi)//以roi边界为位置选择影像
    8. .filterDate("2021-3-1","2021-8-1")//选择在2022年3-5月份的影像
    9. .filter(pie.Filter.lt("cloudyPixelPercentage", 5))//云盖量属性小于5
    10. .select(bands)//选择需要的波段
    11. .mosaic()//选择需要的波段并拼接影像
    12. .clip(roi);//根据研究区范围裁剪影像
    13. Map.addLayer(image.select(["B4","B3","B2"]),{min:0,max:3000},"image");//将其展现在底图上,其中select函数用于选择需要展示出来的波段组合。min-max是影像数值范围,image是图层名称
    14. Export.imageToCloud({
    15. image: image,//导出云盘的影像
    16. description: "ExportImage",//导出任务描述
    17. assetId: "24287496921681920123",//导出的影像编号,可忽略
    18. region: roi,//导出影像的矢量范围边界
    19. scale: 30//导出影像的分辨率
    20. });

            用户可在资源栏旁边的云盘中找到导出的影像,同时资源栏和云盘栏的数据都可以点击下载按钮进行下载。

            个人云盘与个人资源相比有以下特点:

    1 导出至云盘速度快于导出至个人资源

    2 导出云盘数据只能用于下载,不能在平台上调用

    注意:云盘和资源的存储空间和下载流量都是有限制的!

    四、总结

            在本文中,作者对PIE Engine平台的数据上传、调用以及导出下载进行的详细的案例介绍,在今后的文章中,作者将继续分享PIE Engine平台的操作流程以及遥感云计算知识的分享。


            如果觉得我的文章对你有帮助的话,三连+关注便是对我创作最大的支持!

            更多遥感云计算文章查看https://blog.csdn.net/qq_45590504/category_11808327.html

            博主会不定期修改文章,关注我查看最新内容😀! 

  • 相关阅读:
    Spring使用注解进行注入
    20231018 自然常数的存在性
    Python代码大全,海量代码任你下载
    Web框架开发-Form组件和ajax实现注册
    Windows安全中心内存完整性无法打开问题的处理方法
    Windows11更新后Chrome无法打开解决方案
    No9.【spring-cloud-alibaba】添加字典业务,这一模块就是纯业务
    MySQL 事件
    编译 libcurl 静态库
    【已解决】qt死活不响应鼠标移动到按钮事件
  • 原文地址:https://blog.csdn.net/qq_45590504/article/details/124952821