什么?仅仅花费10秒钟就可以直接利用Google Earth Engine精美的SCI期刊论文插图

学术   2024-11-21 15:28   山东  

我们知道,想发表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=(2022),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=[22], linestyle="--")

plt.show()

经过这么几步,我们就可以在GEE中做出上文中出现的精美图片。而且大家在做这种图的时候,还可以自己加地图以及换成别的不同的类型,比如地形图DTM可以换成下面的NDVI图,或者是土地利用的图片。整个过程十分的快捷方便,真的是太舒服了!!!

交流合作

GEE学习室是一群由认真学习和使用GEE等遥感大数据平台的高校博士生(含在读和已毕业)组建的团队,致力于GEE等大数据原创和优质算法开发,希冀通过团队的努力为遥感大数据智能处理普及和广大学子科研之路提供绵薄之力荧荧之光
本学习室业已创建了4个学习交流群,即则喜群、明辨群、如琢群修远群来自各地高校和研究所,涵盖本科、硕士和博士群体,交流群每天活跃度非常高

想加入交流的加小编微信邀请进群(扫描下方二维码咨询报名或菜单栏“联系我们”选项框都可以找到小编哟)。注意,咨询加群验证信息请备注为“研究方向-学校-加群”格式否则不予通过例如,假如你是武汉大学的土地利用分类方向的研究生,则可以备注“LULC-武大-加群”;假如你是北京大学的生态学方向的研究生,则可以备注“生态学-北大-加群”。

如果有帮助,点赞或者关注一下呗

科研交流
立志打造国内最值得学生信任的科研平台,让学生的利益不再受侵犯!免费推送各种关于数模、论文、项目在内的资料干货,并定期发布更新科研数据大全。
 最新文章