gee学习笔记 第二天
前言
第二天
学习如何准备水煮鱼的材料,也就是准备和简单的处理项目所需的原始数据
一、继续熟悉jupyter lab notebook
还是打开miniconda的命令行,输入两行代码,打开jupyter lab
在摸索之后我才明白,每一行代码块都需要单独的运行,比如说第一行的import geemap,如果说你不去点击运行这一行代码,geemap的库就无法引入,后续代码就会报错.第二行代码和第一天一样需要添加代理获得gee的api.
如图片所示ipyleaflet是一种地图的模式,也是吴秋生老师所说的用的较多的一种模式
可以通过上图的代码直接打开对应坐标缩放比例的地图,在python中单独运行变量就会将变量内容打印出来,所以在代码块中才会单独打Map,
如果一次性打开了几个地图,那么对这几个地图中的一个的操作也会影响到其他的地图,比如说缩放一个地图,那么其他的所以地图也会耕者缩放.
这个是测量的图标,我们可以使用这个功能来获得经纬度.
这个是draw_ctrl
这个是data_ctrl
这个就是toolbar_ctrl
我们可以设置在地图上要不要这几个控件.
Map = geemap.Map(data_ctrl=False, toolbar_ctrl=False, draw_ctrl=False) Map
轻便模式,只有放大缩小.
Map = geemap.Map(lite_mode=True) Map
同理运行Folium如下:
不在库中的地图可以通过如下的方式添加
二、获取和找到数据
这里需要先初试ee的服务,而且
image = ee.Image('USGS/SRTMGL1_003')
意为获取id为USGS/SRTMGL1_003的数据,但是这个数据是存储在gee的云服务器上的,我们需要这个数据的id来找到他.
要想看到这个数据的内部,不能单纯的输入image
这样的话只是会把image这个指针指向的地址打印出来,如果想要看到数据内部的具体信息我们需要
image.getInfo()
如果还需要可视化的使用如下的代码,整体的流程如下,首先找到想要获取的数据的id,获得id之后访问服务器的数据,选用合适的可视化方案,将图层添加到地图上,显示地图.
Map = geemap.Map(center=[21.79, 70.87], zoom=3)
image = ee.Image('USGS/SRTMGL1_003')
vis_params = {
'min': 0,
'max': 6000,
'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5'],
}
Map.addLayer(image, vis_params, 'SRTM')
Map
结果如下图:
这是数据集和数据集的可视化
Map = geemap.Map()
collection = ee.ImageCollection('COPERNICUS/S2_SR')
image = collection.median()//这里是取中值
vis = {
'min': 0.0,
'max': 3000,
'bands': ['B4', 'B3', 'B2'],
}
Map.setCenter(83.277, 17.7009, 12)
Map.addLayer(image, vis, 'Sentinel-2')
Map
运行结果如下:
1、选定区域和设置过滤器
首先我们打开一副地图并选定区域(左边的工具栏可以用矩形,圆圈,选点等等)
Map.user_roi
可以获得选定区域的信息,下面使用getInfo
方法打印出来
使用过滤器设置过滤时间,然后打印数据集筛选之后的数据数量
collection = ee.ImageCollection('COPERNICUS/S2_SR').filterDate('2021-01-01','2021-02-01')
//filterDate中的2021-02-01这一天不包括在内,也就是只有一月的数据
collection.size().getInfo()
下面将前面选定的区域信息也加到过滤器中
collection = ee.ImageCollection('COPERNICUS/S2_SR').filterDate('2021-01-01','2021-02-01').filterBounds(Map.user_roi)
collection.size().getInfo()
可以看到数据的数量大大的减少了
下面是老师的完整代码示例,可以修改vis的参数改变可视化的结果,包括波段、透明度、最小最大值等等。
Map = geemap.Map()
collection = (
ee.ImageCollection('COPERNICUS/S2_SR')
.filterDate('2021-01-01', '2022-01-01')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 5))
)
image = collection.median()
vis = {
'min': 0.0,
'max': 3000,
'bands': ['B4', 'B3', 'B2'],
}
Map.setCenter(83.277, 17.7009, 12)
Map.addLayer(image, vis, 'Sentinel-2')
Map
下面演示如何搜索并添加数据到图层上,最后显示在地图里。
第一步先打开一个地图
第二部打开搜索找到需要的数据
第三步选择参数生成可视化图层,加载到地图上
Map = geemap.Map(center=[28.00142, -81.7424], zoom=13)
Map.add_basemap('HYBRID')
image=ee.Image('CGIAR/SRTM90_V4')
Map.addLayer(image,{'min':0,'max':5000,'palette':'terrain'},'SRTM')
Map