我们知道,想发表SCI期刊论文,除了需要非常好的idea以及非常严谨且优美的写作之外,还需要在论文的图表等方面下功夫。很多时候,一张图做好了,审稿人看到了会心情愉悦,论文发表后作者本身也会觉得是一种享受。
一直以来,高质量的SCI期刊图表都是在本地做的。为了制作精美的图片,需要把数据都在本地准备好。例如,我们想实现下面的图片,就需要下载DEM数据到本地然后再出图,这种方式还是比较繁琐的。
既然Google Earth Engine已经把各类遥感影像数据以及一些高级算法都集成到GEE云平台了,那么有没有可能把作图等环节也搬到GEE云平台上呢?一直以来,我们都以为GEE出图比较丑,不适合做这些高质量的精美图片。但是,最近发现我们错了,使用GEE依然能够做出非常好看的SCI期刊图片。
比如,参考上图右半部分的研究区图片,我们可以在GEE上直接利用DEM数据做出如下的图片。两者图片虽然在局部地区存在一些差异,但基本上实现了最初的功能。最主要的是,整个作图过程仅仅花费了10.5秒便完成了。
接下来,我们就详细介绍如何在GEE上面实现这一精美的图片。需要指出的是,这个图片不是用JavaScript网页版本的GEE做出的,而是使用的Python版本。我们使用的IDE是VS Code,配置起来也很方便。我们最新的寒假课程就讲授了如何使用VS Code访问GEE以及有关配置问题(见寒假加油|人工智能与云平台大数据图像处理基础和提升研修班)。
第一步,导入需要的模块
这里主要是cartopy、geemap和cartoee等模块,其中cartoee模块已经内嵌到geemap,无需再安装。本地安装geemap的时候,只需使用 pip install geemap -i https://pypi.douban.com/simple/即可完成安装。
import ee
import geemap
from geemap import cartoee
import cartopy
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
第二步,授权GEE的访问
主要是让本地的IDE能够访问GEE数据,使用的是下面语句:
# geemap.ee_initialize()
geemap.set_proxy(port=33210)
ee.Authenticate()
ee.Initialize(project='ee-scistudy')
注意,这里的port后面的端口是每个人魔法的端口,project后面的项目号则是自己的project名称。这里我们就不赘叙了,有不懂的请联系小编加群咨询。
第三步,调用dem数据和矢量数据,并在地图中先加载看一下效果,代码如下:
roi = ee.FeatureCollection("users/studyroomGEE/A_Paper/PSPR/HLJProvince")
Map = geemap.Map()
Map.add_basemap("Esri.WorldImagery")
Map.add_basemap("OpenTopoMap")
styleHLJ = {"color": "FF0000", "width": 2, "lineType": "solid", "fillColor": "00000000"}
HLJShp = roi
chinaProvince = ee.FeatureCollection('users/studyroomGEE/ChinaShp/ChinaProvince')
styleChina = {"color": "0000FF", "width": 1, "fillColor": "00000000"}
Map.addLayer(chinaProvince.style(**styleChina), {}, "chinaProvince")
Map.addLayer(HLJShp.style(**styleHLJ), {}, "HLJ")
# get an image
srtm = ee.Image("CGIAR/SRTM90_V4").clip(roi)
vis_params = {
'min': 0.0,
'max': 1643,
'palette': [
'FFFFFF',
'CE7E45',
'DF923D',
'F1B555',
'FCD163',
'99B718',
'74A901',
'66A000',
'529400',
'3E8601',
'207401',
'056201',
'004C00',
'023B01',
'012E01',
'011D01',
'011301',
],
}
srtm = srtm.visualize(**vis_params)
imgBlend = srtm.blend(chinaProvince.style(**styleChina)).blend(HLJShp.style(**styleHLJ))
Map.addLayer(imgBlend, {}, "imgBlend")
Map.centerObject(roi)
Map
经过这一步可以得到下面的地图。在线加载出这个地图表明距离最后的成功就不远了。
最后一步,将上面的地图使用plt制作成我们需要的图片,代码如下:
bbox = [135.8,39,120.2,55]
import matplotlib.pyplot as plt
import cartopy.io.img_tiles as cimgt
plt.rcParams['font.family'] = 'Times New Roman'
# 统一设置
from proplot import rc
# 统一设置字体
rc['tick.labelsize'] = 20
# 统一设置xy轴名称的字体大小
rc["axes.labelsize"] = 20
# # 统一设置轴刻度标签的字体粗细
rc["axes.labelweight"] = "bold"
# 统一设置xy轴名称的字体粗细
rc["tick.labelweight"] = "bold"
fig = plt.figure(figsize=(20, 22),facecolor='white')
ax = cartoee.get_map(imgBlend, region=bbox)
cb = cartoee.add_colorbar(ax,vis_params=vis_params,loc='right',orientation="vertical")
# ax.set_title(label='Study Area', fontsize=20)
# add gridlines to the map at a specified interval
cartoee.add_gridlines(ax, interval=[2, 2], linestyle="--")
plt.show()
经过这么几步,我们就可以在GEE中做出上文中出现的精美图片。而且大家在做这种图的时候,还可以自己加地图以及换成别的不同的类型,比如地形图DTM可以换成下面的NDVI图,或者是土地利用的图片。整个过程十分的快捷方便,真的是太舒服了!!!
交流合作
想加入交流的加小编微信邀请进群(扫描下方二维码咨询报名或菜单栏“联系我们”选项框都可以找到小编哟)。注意,咨询加群验证信息请备注为“研究方向-学校-加群”格式,否则不予通过。例如,假如你是武汉大学的土地利用分类方向的研究生,则可以备注“LULC-武大-加群”;假如你是北京大学的生态学方向的研究生,则可以备注“生态学-北大-加群”。