问题
江河湖泊中的水体提取
思路
哨兵2数据从时空分辨率、易获取性方面均有优势,选择该数据的另一个原因是在github上找到了相关能用的算法和代码。
文章
代码
这个github用户还有一些数据下载以及水相关的算法代码,比如:Sentinel1 flood finder、GEES2Downloader、WaterDetect algorithm for the Microsoft Planetary Computer。
步骤
运行环境:Python 3.6.13下载Sentinel L2A 数据
本文使用了以前下载的北京的1景(2023-08-22)和3景乐山(2023-04-01 2023-05-16 2023-08-22)S2数据
安装waterdetect包
安装WaterDetect前需要安装Python GDAL包
> pip install waterdetect
监测水体
将S2的压缩包解压放在一个目录下,并新建一个输出目录。
启动Anaconda的waterdetect虚拟环境,在命令行中打开。
输入一下命令
> M:\WT\water>waterdetect -i M:/WT/water/waterleshan2 -o M:/WT/waterresult -p S2_S2COR
-i 输入目录,程序会遍历目录下的文件逐个计算
-o 输出目录
-p 有三种格式,数据来自ESA官方,所以使用 S2_S2COR
如果出现 无坐标系的错误,就是proj.db不同版本的冲突,以前写过一篇文章 Python 中的Rasterio与Postgresql冲突,可以卸载软件,也可以把系统变量中的PROJ_LIB变量的名字修改了.
GIS数据可视化
SNAP软件可以直接打开Sentinel 2数据,导出RGB时建议使用Raster–>subset 中的band subset提取原始数据RGB到新的数据集,然后将新的数据集使用File–>export导出。在RGB可视化窗口右键导出tif没有坐标系。
北京20230822提取结果
乐山20230401提取结果
乐山20230516提取结果
乐山20230708提取结果