gee python:geemap进行波段重命名和逐波段统计
安装地球引擎API和geemap
安装地球引擎的Python API和geemap。geemap Python包是建立在ipyleaflet和folium包之上的,它实现了几个与地球引擎数据层交互的方法,比如Map.addLayer()、Map.setCenter()和Map.centerObject()。下面的脚本检查geemap包是否已经安装。如果没有,它将安装geemap,它会自动安装其依赖项,包括earthengine-api、folium和ipyleaflet。
import subprocess
try:
import geemap
except ImportError:
print('Installing geemap ...')
subprocess.check_call(["python", '-m', 'pip', 'install', 'geemap'])
import ee
import geemap
这里我们就选择一个单景影像,然后分别统计波段的平均值,这里如果我们要统计每一个波段需要用到一个函数:
forEachBand(image)
Creates a Reducer by combining a copy of the given reducer for each band in the given image, using the band names as output names.
通过组合给定图像中每个波段的给定聚合器的副本来创建减速器,并使用波段名称作为输出名称。
Arguments:
this:reducer (Reducer)
image (Image)
Returns: Reducer
# Add Earth Engine dataset
image = ee.Image('USDA/NAIP/DOQQ/m_3712213_sw_10_1_20140613')
Map.setCenter(-122.466123, 37.769833, 17)
Map.addLayer(image, {'bands': ['N', 'R','G']}, 'NAIP')
geometry = image.geometry()
means = image.reduceRegions(geometry, ee.Reducer.mean().forEachBand(image), 10)
print(means.getInfo())
{‘type’: ‘FeatureCollection’, ‘columns’: {‘B’: ‘Float<0.0, 255.0>’, ‘G’: ‘Float<0.0, 255.0>’, ‘N’: ‘Float<0.0, 255.0>’, ‘R’: ‘Float<0.0, 255.0>’, ‘system:index’: ‘String’}, ‘features’: [{‘type’: ‘Feature’, ‘geometry’: {‘type’: ‘Polygon’, ‘coordinates’: [[[-122.50384809968367, 37.815186584325374], [-122.50384809968367, 37.747300979776796], [-122.43357895772449, 37.747300954003066], [-122.43357895772449, 37.815186523981325], [-122.50384809968367, 37.815186584325374]]]}, ‘id’: ‘0’, ‘properties’: {‘B’: 113.92255161564239, ‘G’: 125.41387897689918, ‘N’: 86.16627228617047, ‘R’: 121.34327479453404}}]}
波段重命名:这里很简单,最简单的就是使用select将改变的名称写在一个列表内,替换到你之前选择波段即可,当然我们可以使用rename进行重命名,但这种更多用在你所构建的函数当中的批量操作。
# Add Earth Engine dataset
image = ee.Image('LANDSAT/LC8_L1T/LC80260412017023LGN00')
b5 = image.select('B5')
Map.centerObject(image, 10)
Map.addLayer(image, {}, 'Band 5')
selected = image.select(["B5", 'B4', 'B3'], ['Nir', 'Red', 'Green'])
Map.addLayer(selected, {}, "Renamed bands")
print(selected.bandNames().getInfo())
selected = image.select(["B5", 'B4', 'B3']).rename(['Nir', 'Red', 'Green'])
print(selected.bandNames().getInfo())
- 点赞
- 收藏
- 关注作者
评论(0)