GEE学习笔记 七十三:【GEE之Python版教程七】静态展示影像和动态展示影像

先说一个事情,之前在朋友圈中也提到过,这一周由于没什么事情所以更新比较频繁。后期更新速度会慢下来,更新速度可能是一周左右更新一篇吧。具体原因呢,看下图吧!

GEE学习笔记 七十三:【GEE之Python版教程七】静态展示影像和动态展示影像_第1张图片

免费写这些教程不是我的本职工作,所以我也不能占用我自己太多的时间来做这些事情,工作挣钱养家才是我的本职工作,希望大家谅解一下!

 


 

    我们使用GEE在线编辑可以直接通过在线的网页可以加载展示我们计算的结果,而python版的GEE要展示我们的计算结果可能就比较麻烦。如果有同学看过GEE的python版API中可以找到一个类ee.mapclient,这个类的介绍是它是GEE官方通过Tk写的一个加载展示地图的类。但是随着API的发展,其实这个类早已被官方废弃,我们没办法直接使用这个类,在实际开发中也不建议大家尝试去使用这个类。

    下面我介绍一下我推荐使用的加载显示方式,目前比较好用的展示方式有两种,一种是静态图片展示方式,另外一种是动态加载展示结果,下面我会依次来介绍相关内容。

 

首先使用GEE的python版API在我们的代码最开始都需要加入以下代码:

import ee

ee.Initialize()

 

第一种方式:静态图片展示模式。

这种模式使用的是IPython自带的display来渲染,然后我们的显示内容也是通过缩略图来显示。

GEE学习笔记 七十三:【GEE之Python版教程七】静态展示影像和动态展示影像_第2张图片

 

优点:IPython原生,快捷方便。

缺点:渲染内容只能是通过缩略图这种方式来做,展示内容有局限。

 

第二种方式:动态加载展示模式。

    这种方式需要使用一个第三方库 ipygee(https://github.com/fitoprincipe/ipygee),这个库是在另外的一个展示库的基础 ipyleaflet 基础上开发而来的。目前属于刚起步,但是展示效果非常好。

 

首先是安装这个库 ipygee

(1)安装这个库,以我的电脑为例

sudo pip3 install ipygee

 

(2)激活ipyleaflet在jupyter上的插件

jupyter nbextension enable --py --sys-prefix ipyleaflet

 

如果没有安装过nbextension,那么需要先安装

sudo pip3 install jupyter_contrib_nbextensions

sudo jupyter contrib nbextension install --user

sudo pip3 install jupyter_nbextensions_configurator

 

如果要使用jupyterLab还需要给jupyterLab安装ipyleaflet插件

sudo jupyter labextension install jupyter-leaflet

同时有些电脑,比如我这台需要激活一个插件jupyterlab-manager才能显示地图。

首先查看本地的jupyterLab的版本

jupyter lab --version

输出结果是 0.35.6,通过jupyterlab-manager 网站查询可知,我们需要安装对应版本的内容,也就是0.38版的jupyterlab-manager,所以执行下面的命令:

sudo jupyter labextension install @jupyter-widgets/[email protected]

(3)ipygee初步使用

使用这个库非常简单,需要注意的是:使用这个库之前必须要验证GEE,也就是需要执行

import ee

ee.Initialize()

加载地图

# 展示地图

from ipygee import Map

myMap = Map()

myMap.show()

 

GEE学习笔记 七十三:【GEE之Python版教程七】静态展示影像和动态展示影像_第3张图片

 

 

显示资源管理器

# 资源管理器,也就是GEE在线编辑的Assets Manager界面

from ipygee import AssetManager

myManager = AssetManager()

myManager

 

GEE学习笔记 七十三:【GEE之Python版教程七】静态展示影像和动态展示影像_第4张图片

 

显示任务管理器

# 任务管理器,也就是GEE的Task列表

from ipygee import TaskManager

myTask = TaskManager()

myTask

 

GEE学习笔记 七十三:【GEE之Python版教程七】静态展示影像和动态展示影像_第5张图片

 

从这里可以看到ipygee是通过GEE的API连接到GEE服务器上,然后展示相关内容。下面我详细说一下ipygee是如何加载显示我们想要的影像或者矢量数据的。

 

(4)加载矢量、栅格数据

具体代码:

# 加载显示栅格数据和矢量数据

from ipygee import Map

myMap = Map()

# 展示OSM底图

myMap.show()

# 栅格数据

img = ee.Image("CGIAR/SRTM90_V4")

# 矢量数据

roi = ee.FeatureCollection("users/wangweihappy0/shape/huanghe")

# 缩放到指定级别

myMap.centerObject(roi, 5)

# 裁剪数据

img = img.clip(roi)

# 加载栅格数据到地图上

myMap.addLayer(img, {"min": 0, "max": 3000}, name="SRTM")

# 加载矢量数据到地图上

myMap.addLayer(roi, {"outline_color": "red", "outline": 2, "fill_color": "blue"}, name="roi")

 

显示结果:

矢量数据

GEE学习笔记 七十三:【GEE之Python版教程七】静态展示影像和动态展示影像_第6张图片

栅格数据

GEE学习笔记 七十三:【GEE之Python版教程七】静态展示影像和动态展示影像_第7张图片

 

同时我们还可以对这些图层做各种类似线上的操作,这个大家可以自己挖掘实践。关于ipygee如果大家还有需要了解的,等ipygee版本比较稳定了,我可以单独些一些关于ipygee相关内容来介绍这个库。

 


大家如果有问题需要交流或者有项目需要合作,可以微信联系我,加微信好友请留言加上“GEE”。

知乎专栏:https://zhuanlan.zhihu.com/c_123993183

CSDN:https://blog.csdn.net/shi_weihappy

你可能感兴趣的:(python,GEE,网络前沿知识,GEE开发)