目录
- 上传矢量和DEM获取
- 添加颜色条
- 参考文章
先连接上GEE的自己的项目
import ee
import geemap
geemap.set_proxy(port=33210)
ee.Authenticate()
ee.Initialize(project='a-flyllf0313')
上传矢量和DEM获取
使用Google Earth Engine(GEE)和Google Earth Engine Python API来进行地理空间数据的处理和可视化。这段代码的目的是从GEE获取影像数据,并在地图上叠加不同的地理要素和影像数据,最终实现可视化。
具体来说,代码中的步骤包括:
使用ee.FeatureCollection函数加载了一个名为xiongan的区域数据集,并将其赋值给roi变量。
创建了一个Map对象。
在地图上添加了两个底图,分别是"Esri.WorldImagery"和"OpenTopoMap"。
定义了两个样式,用于绘制黑龙江省和中国省份的边界。
使用ee.FeatureCollection函数加载了一个名为HeBei的中国省份数据集,并将其赋值给chinaProvince变量。
将中国省份和黑龙江省的边界绘制到地图上。
从GEE获取了一个影像数据集,即"SRTM",并选择了高程数据,然后裁剪到了指定的区域roi。
定义了影像的可视化参数,包括最小和最大值,以及色带。
使用定义的可视化参数对影像进行可视化处理。
将省份边界和黑龙江省的边界与处理后的影像进行叠加,得到混合后的影像。
将混合后的影像添加到地图中,并将地图视角设置为roi区域。
roi = ee.FeatureCollection('projects/a-flyllf0313/assets/xiongan');
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('projects/a-flyllf0313/assets/HeBei')
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("NASA/NASADEM_HGT/001").select('elevation').clip(roi)
vis_params = {
'min': 0.0,
'max': 30,
'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
添加颜色条
这段代码使用了Geemap和Cartopy库来生成地图,并在地图上叠加了高程数据。让我解释一下每个部分的作用:
bbox = [116.4,38.65,115.6,39.2]:定义了地图的边界框(Bounding Box),指定了地图显示的范围。
导入了需要的库:
import matplotlib.pyplot as plt:导入matplotlib库,用于绘制图像。
import cartopy.io.img_tiles as cimgt:导入cartopy库中的img_tiles模块,用于处理地图瓦片数据。
from geemap import cartoee:导入geemap库中的cartoee模块,用于创建地图并在其中添加图层。
设置全局字体样式:
plt.rcParams[‘font.family’] = ‘Times New Roman’:设置全局字体样式为"Times New Roman"。
创建一个新的matplotlib图形对象:
fig = plt.figure(figsize=(20, 22),facecolor=‘white’):创建一个大小为20x22英寸的图形对象,背景颜色为白色。
使用cartoee.get_map()函数创建地图:
ax = cartoee.get_map(imgBlend, region=bbox):在地图上叠加高程数据,并指定了地图的边界框。
使用cartoee.add_colorbar()函数添加颜色条:
cb = cartoee.add_colorbar(ax,vis_params=vis_params,loc=‘right’,orientation=“vertical”):在地图的右侧添加颜色条,并使用给定的可视化参数设置颜色条的外观。
使用cartoee.add_gridlines()函数添加网格线:
cartoee.add_gridlines(ax, interval=[0.2, 0.1], linestyle=“–”):在地图上添加网格线,并指定网格线的间隔和线型。
最后调用plt.show()显示生成的地图。
bbox = [116.4,38.65,115.6,39.2]
import matplotlib.pyplot as plt
import cartopy.io.img_tiles as cimgt
from geemap import cartoee
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=[0.2, 0.1], linestyle="--")
plt.show()
参考文章
什么?仅仅花费10秒钟就可以直接利用Google Earth Engine精美的SCI期刊论文插图