gee python:geemap进行波段重命名和逐波段统计

举报
此星光明 发表于 2023/07/06 04:01:15 2023/07/06
【摘要】 安装地球引擎API和geemap安装地球引擎的Python API和geemap。geemap Python包是建立在ipyleaflet和folium包之上的,它实现了几个与地球引擎数据层交互的方法,比如Map.addLayer()、Map.setCenter()和Map.centerObject()。下面的脚本检查geemap包是否已经安装。如果没有,它将安装geemap,它会自动安装其...

安装地球引擎API和geemap
安装地球引擎的Python API和geemap。geemap Python包是建立在ipyleaflet和folium包之上的,它实现了几个与地球引擎数据层交互的方法,比如Map.addLayer()、Map.setCenter()和Map.centerObject()。下面的脚本检查geemap包是否已经安装。如果没有,它将安装geemap,它会自动安装其依赖项,包括earthengine-api、folium和ipyleaflet。

Installs geemap package

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())

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。