橙蜂智能公司致力于提供先进的人工智能和物联网解决方案,帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、领域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。
橙蜂智农的智慧农业产品涵盖了多方面的功能,如智能化推荐、数据分析、远程监控和决策支持系统。用户可以通过应用获得个性化的作物种植建议、实时的生长状态监控以及精确的灌溉和施肥指导,提升农业生产效率。
上一篇文章介绍通过EarthPy包获取卫星遥感数据,然后对数据进行分析和可视化的展示。整个 操作过程需要您具备一定的编程技能,这篇文章推荐阿里达摩院的一站式的遥感数据分析服务平台---AIEarth地球科学云平台,不仅提供了集成的SDK,可把遥感数据能力嵌入自有系统,而且还提供可视化的操作平台,便于更直观的使用遥感数据的分析能力。但在使用验证的过程中,发现平台的说明文档还是不够详细,很多使用方式需要自行摸索验证。但总体瑕不掩瑜,感谢阿里提供的强大的、免费的服务能力。下边通过可视化操作方式,来介绍下AIEarth的能力,因场景所限,可能介绍的不是特别完整,欢迎大家补充。
AIEarth介绍
AI Earth平台利用先进的算法和阿里云的计算资源,为用户提供多源对地观测数据的云计算分析服务。它旨在通过数据感知地球,助力科学研究和决策。
核心功能
- 零代码探索地球:用户无需编写代码即可获取公开数据,上传和管理数据,进行数据处理分析,以及训练遥感AI模型。
- 写代码探索地球:为开发者提供开发者模式,支持使用Notebook进行编程,提供丰富的API供调用,以及提供案例参考。
服务特点
- 技术积累:平台背后有达摩院-视觉技术实验室在深度学习、计算机视觉和地理空间分析等领域的技术积累。
- 算力支持:依托阿里云的高性能计算资源,能够处理大规模的遥感数据分析任务。
- 易用性:提供零代码和开发者模式两种操作方式,满足不同用户的需求。
- 多源数据支持:能够处理和分析多源对地观测数据,提供全面的数据分析服务。
- AI模型训练:支持用户进行遥感AI模型的训练,提高数据处理的智能化水平。
作物长势分析操作流程
1.获取遥感数据
AIEarth平台提供LandSat卫星和Sentinal卫星的遥感数据,前边文章也和大家介绍过,Sentinel-2卫星的遥感数据具有更高精度和频次,所以获取Sentinel-2卫星数据,后续利用该数据进行作物长势分析。
确定数据的卫星来源之后,通过全选区域的方式,勾选我们要进行作物长势分析的地块。通过勾选地图的多个点可以很方便的圈选一个多边形的地块,然后确定遥感数据的采集时间范围,点击“检索”则会筛选符合要求的遥感数据。
友情提示:Sentinel提供不同的类型的遥感数据,L2A数据类型表示经过大气校正的表面反射率数据,已经进行了大气校正,可以直接用于分析。该数据主要用于陆地观测,尤其在农业、森林监测、土地利用、灾害评估等领域。其他类型的数据用途不同,可根据需求场景自行选择。
这个时间范围内,检索到四个时间点的遥感数据,而且刚圈选的地块即使有100亩,现在也变成地图上的一个点,所以需要对遥感数据进行裁剪,保存我们需要的数据,然后在进行重点分析。
2.图像裁剪
圈选待裁剪的数据,选择对应的波段排序,然后执行裁剪操作。因为调整影像的展示波段,导致图像的背景色变成了红色。
3.作物长势分析
选择裁剪的数据集,然后使用公开的数据集指数计算方法,可以非常轻松的计算该地块区域的植被指数,并以可视化的方式展示到地图上。这里为方便大家观看,把地块进行放大导致图像有些模糊。
大家也可以使用开发者模式,对地块的作物长势进行分析,示例代码如下:
因为Landsat卫星和Sentinel卫星遥感数据波段名称不同,在使用编码分析时,请注意区分这两种卫星的数据名称。
import aie
aie.Authenticate()
aie.Initialize()
img = aie.Image('user/66b363c9c118337ec1378dc5516')
# 归一化植被指数
def getNDVI(image):
ndvi = image.normalizedDifference(['B8', 'B4']).rename(['NDVI'])
return ndvi
ndvi = getNDVI(img)
ndvi_vis = {
'min': -0.2,
'max': 0.8,
'palette': [
'#D7191C', '#FDAE61', '#FFFFBF', '#2B83BA', '#ABDDA4'
]
}
map = aie.Map(
center=ndvi.getCenter(),
height=800,
zoom=5
)
map.addLayer(
ndvi,
ndvi_vis,
'NDVI',
bounds=ndvi.getBounds()
)
map