功能需求

在遥感影像变化检测中,当我们已有一个时期的影像时,需要从一些数据网站上下载其他时期的影像,这时我们就要对影像的边界进行提取,然后基于这个边界矢量从其他网站上裁剪不同时期的影像,这样就能保证不同时期的影像在同一区域了。

解决思路

一个首先能想到的办法就是直接获取影像的四个角点的坐标,基于这四个点的坐标生成一个面矢量,虽然这种方法简单,但会有一定的弊端,对于影像中边界部分很多都是nan值,但是在获取边界范围时还是把这些区域算在内了,这样生成的矢量范围实际不是我们需要的。那么怎么去掉这些nan值区域呢?我们可以使用rasterio中的read_masks函数,这个函数会将有效数据区域(非nan值)设置为255,无效区域(nan值)设置为0 ,然后使用 shapes 函数就可以得到一个多边形几何对象,这个区域就是非nan值的有效数据区域。核心代码如下:

mask = src.read_masks(1)
shapes = features.shapes(mask, mask=mask, transform=src.transform)

原始影像如下图所示:

在这里插入图片描述

边界提取如下图所示:

在这里插入图片描述

获取本博客全部代码资料或咨询交流见 博主首页→个人简介
1、本博客相关代码;
2、指导代码运行;
3、同类任务咨询交流;

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐