跳转到主要内容

使用Earth Engine和Cartopy制作出版物质量的地图!

项目描述

cartoee

PyPI version Build Status Documentation Status DOI License: GPL v3 status

使用Earth EngineCartopy制作出版物质量的地图!alt-text

安装

cartoee可以通过pip进行安装。要安装此软件包,您可以使用pip在您的Python环境中进行安装

pip install cartoee

或者,您可以使用以下命令从源代码手动安装该软件包

git clone https://github.com/kmarkert/cartoee.git
cd cartoee
python setup.py install

有关安装依赖项的说明,请参阅文档

与cartoee合作

cartoee旨在做好一件事:将从Earth Engine获取的处理结果输出到出版物质量的地图界面。cartoee简单地从Earth Engine获取结果,并使用正确的地理投影将其绘制出来,将更多的处理和可视化工作留给eecartopy

简单案例

以下是可视化SRTM数据在地图上的简单工作流程

import cartoee as cee
import ee

ee.Initialize()

# get an earth engine image
srtm = ee.Image("CGIAR/SRTM90_V4")

# plot the result using cartoee
ax = cee.getMap(srtm,region=[-180,-90,180,90],visParams={'min':0,'max':3000})

ax.coastlines()
plt.show()

alt-text

现在我们已经将EE图像作为cartopy/matplotlib对象,我们可以开始使用cartopy API为出版物样式化我们的绘图。

import cartopy.crs as ccrs
from cartopy.mpl.gridliner import LATITUDE_FORMATTER, LONGITUDE_FORMATTER

# set gridlines and spacing
xticks = [-180,-120,-60,0,60,120,180]
yticks = [-90,-60,-30,0,30,60,90]
ax.gridlines(xlocs=xticks, ylocs=yticks,linestyle='--')

# set custom formatting for the tick labels
ax.xaxis.set_major_formatter(LONGITUDE_FORMATTER)
ax.yaxis.set_major_formatter(LATITUDE_FORMATTER)

# set tick labels
ax.set_xticks([-180,-120,-60, 0, 60, 120, 180], crs=ccrs.PlateCarree())
ax.set_yticks([-90, -60, -30, 0, 30, 60, 90], crs=ccrs.PlateCarree())

alt-text

做更多...

现在我们已经掌握了简单示例,我们可以使用Earth Engine进行一些处理,制作一张漂亮的地图。

# function to add NDVI band to imagery
def calc_ndvi(img):
    ndvi = img.normalizedDifference(['Nadir_Reflectance_Band2','Nadir_Reflectance_Band1'])
    return img.addBands(ndvi.rename('ndvi'))

# MODIS Nadir BRDF-Adjusted Reflectance with NDVI band
modis = ee.ImageCollection('MODIS/006/MCD43A4')\
        .filterDate('2010-01-01','2016-01-01')\
        .map(calc_ndvi)

# get the cartopy map with EE results
ax = cee.getMap(modis.mean(),cmap='YlGn'
    visParams={'min':-0.5,'max':0.85,'bands':'ndvi',},
    region=[-180,-90,180,90])

ax.coastlines()

cb = cee.addColorbar(ax,loc='right',cmap='YlGn',visParams={'min':0,'max':1,'bands':'ndvi'})

alt-text

从示例中可以看出,我们计算了2010-2015年的MODIS图像上的NDVI,并创建了一张带有每个像素平均值的全局地图。

如果我们想用不同的投影制作多张地图怎么办?我们可以通过创建我们的图形并供应绘图轴来实现这一点。

# get land mass feature collection
land = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017')

# get seasonal averages and clip to land features
djf = modis.filter(ee.Filter.calendarRange(12,3,'month')).mean().clip(land)
mam = modis.filter(ee.Filter.calendarRange(3,6,'month')).mean().clip(land)
jja = modis.filter(ee.Filter.calendarRange(6,9,'month')).mean().clip(land)
son = modis.filter(ee.Filter.calendarRange(9,12,'month')).mean().clip(land)

fig,ax = plt.subplots(ncols=2,nrows=2,subplot_kw={'projection': ccrs.Orthographic(-80,35)})

imgs = np.array([[djf,mam],[jja,son]])
titles = np.array([['DJF','MAM'],['JJA','SON']])

for i in range(len(imgs)):
    for j in range(len(imgs[i])):
        ax[i,j] = cee.addLayer(imgs[i,j],ax=ax[i,j],
                               region=bbox,dims=500,
                               visParams=ndviVis,cmap='YlGn'
                              )
        ax[i,j].coastlines()
        ax[i,j].gridlines(linestyle='--')
        ax[i,j].set_title(titles[i,j])

cax = fig.add_axes([0.9, 0.2, 0.02, 0.6])
cb = cee.addColorbar(ax[i,j],cax=cax,cmap='YlGn',visParams=ndviVis)

alt-text

要查看更多示例,请访问https://cartoee.readthedocs.io

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

cartoee-0.0.5.tar.gz (8.4 kB 查看哈希值)

上传时间 源代码

构建分发

cartoee-0.0.5-py3-none-any.whl (10.8 kB 查看哈希值)

上传时间 Python 3

由以下支持