我们使用GEE在线编辑可以直接通过在线的网页可以加载展示我们计算的结果,而python版的GEE要展示我们的计算结果可能就比较麻烦。如果有同学看过GEE的python版API中可以找到一个类ee.mapclient,这个类的介绍是它是GEE官方通过Tk写的一个加载展示地图的类。但是随着API的发展,其实这个类早已被官方废弃,我们没办法直接使用这个类,在实际开发中也不建议大家尝试去使用这个类。
下面我介绍一下我推荐使用的加载显示方式,目前比较好用的展示方式有两种,一种是静态图片展示方式,另外一种是动态加载展示结果,下面我会依次来介绍相关内容。
首先使用GEE的python版API在我们的代码最开始都需要加入以下代码:
-
import ee
-
ee.Initialize()
第一种方式:静态图片展示模式。
这种模式使用的是IPython自带的display来渲染,然后我们的显示内容也是通过缩略图来显示。
优点: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/jupyterlab-manager@0.38
(3)ipygee初步使用
使用这个库非常简单,需要注意的是:使用这个库之前必须要验证GEE,也就是需要执行
-
import ee
-
ee.Initialize()
加载地图
-
# 展示地图
-
from ipygee import Map
-
myMap = Map()
-
myMap.show()
显示资源管理器
-
# 资源管理器,也就是GEE在线编辑的Assets Manager界面
-
from ipygee import AssetManager
-
myManager = AssetManager()
-
myManager
显示任务管理器
-
# 任务管理器,也就是GEE的Task列表
-
from ipygee import TaskManager
-
myTask = TaskManager()
-
myTask
从这里可以看到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")
显示结果:
矢量数据
栅格数据
同时我们还可以对这些图层做各种类似线上的操作,这个大家可以自己挖掘实践。关于ipygee如果大家还有需要了解的,等ipygee版本比较稳定了,我可以单独些一些关于ipygee相关内容来介绍这个库。
来源请引用:地理遥感生态网科学数据注册与出版系统。