我们知道,想发表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 eeimport geemapfrom geemap import cartoeeimport cartopyimport cartopy.crs as ccrsimport 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 = roichinaProvince = 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 imagesrtm = 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 pltimport cartopy.io.img_tiles as cimgtplt.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 intervalcartoee.add_gridlines(ax, interval=[2, 2], linestyle='--')plt.show()
经过这么几步,我们就可以在GEE中做出上文中出现的精美图片。而且大家在做这种图的时候,还可以自己加地图以及换成别的不同的类型,比如地形图DTM可以换成下面的NDVI图,或者是土地利用的图片。整个过程十分的快捷方便,真的是太舒服了!!!
图片
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。