目录
*河流相关交流微信群*
概述
针对landsat系列数据
工作流选择
基于遥感影像分析河流演变,我使用过的有四种方法:
1.USGS/gscloud+ENVI+arcgis,是最基础的,只需要安装软件,前者下载遥感影响,中者处理遥感影像,后者进行统计分析。
2.USGS/gscloud+IDL(ENVI)+arcpy(arcgis+Python),中者改为了IDL,可以对下载的遥感影像进行批处理;后者改为了arcpy,允许使用Python2.7编写脚本工具,然后在arcgis中进行统计分析。IDL和arcpy都不容易上手,而且IDL的资料较少非常难受。
3.USGS/gscloud+Python,在这里放弃ENVI,直接使用Python进行遥感处理和统计分析,是因为Python的诸多第三方库中,存在可以基本实现ENVI和ArcGIS的处理和分析功能的库(e.g.,GDAL,shapely)。方便上手且网上资料多(有研究者专门写了一个河流遥感处理分析的库pyris)。
4.GEE+Python,现在发现最好的方法,Python可以替代ENVI和arcgis上面已经说明了,而GEE的主要优势在这里就是方便筛选影像,而且无需下载即可处理,我在这里的具体方法是把选择的研究区域的遥感影像集从GEE上以.npy(numpy数组)格式保存到本地,这样可以极大的缩小文件大小(百兆以内),同时保存对应的proj(投影)和geatrans(地理转换参数)到本地,下一步就可以在本地使用Python离线处理你选出来的遥感影像集了。
第一种方法在这篇文章中不再赘述,下面从方法二三四涉及的批处理方法介绍作者积累的脚本。重点放在第四种方法。
关于投影
- 定义投影:指的是你的图有坐标,但是没有投影,这个时候你需要自己去搞清楚你图的坐标是在什么地理/投影坐标系下的,然后再将图定义到对应的坐标系。一般都是WGS84下的经纬度坐标(EPSG=4326)。
- 投影转换:这时候你的图有坐标系了(无论是地理还是投影坐标系),然后你想转换为另外一个坐标系,这叫投影转换。
- 你是从谷歌地球或者gee上面拿的坐标,都是WGS84地理坐标系下的坐标。
- 在python里面实现投影转换和投影定义:需要先查地理/投影坐标系对应的EPSG代号(在这里查)
我国边界最东端在黑龙江和乌苏里江的主航道中心线的相交处(135°2′30”E);最西端在帕米尔高原附近(73°29’59.79”E)。遥感影像一般都是UTM投影坐标系,所以我国用的UTM带号在43N-53N之间(72-138°,EPSG代号=326+带号)。
各常见坐标系对应EPSG代号见S1。完整的表格下载放这里。
相应的坐标系定义和转换函数我会整合在我正在改写的pyris第三方库这里。
遥感处理
基于Python的遥感处理
这一部分方法在pyris中已经涉及的很全面了,本人正在进行pyris的改写。
pyris
GEE+Python
贴上本人目前的GEE学习轨迹(GEE之python学习)
MNDWI工作流
- 首先用GEE,按照裁剪影像的云量排序,进行筛选。筛选后的影像可以选择保存所有波段,也可以先计算MNDWI再以.npy保存到本地。
- 对于辩状河流这种,因为分辨率低导致水体断点了,就需要先把本地的MNDWI.npy转tiff转shp,手动在arcgis里面删去不需要的水体,再把shp转tiff转数组。而对于一般比如弯曲、分汊的河流,就可以直接用pyris里面的方法,选择保存面积最大的一块水体即可。
- 统一维数:对于水体的数组,可能会有维数不一样的情况,因为所有数据左上角点坐标都是一致的,则只需要在右侧和下侧拼接全0数组。
def unify_shape(array,shape):
#用0补全数组右侧和下侧
n1=np.concatenate((array,np.zeros([shape[0]-array.shape[0],shape[1]])),axis=0)#补全下侧
n2=np.concatenate((n1,np.zeros([shape[0],shape[1]-array.shape[1]])),axis=1)#补全右侧
return n2
统计分析
分析的基础文件就是上面提到的干净的MNDWI.npy
面积
简单的不摆
中心线/岸线摆动(arcpy)
本人写的中心线/岸线横向摆动面积脚本工具。
pyris
辫状河流
辩状指数计算
汊道数指数
拓扑结构提取
Lowpath
这个工具根据算法,使用DEM来计算辫状河汊道
(https://github.com/tue-alga/ttga; https://zenodo.org/record/3518174#.Y4xQ8-gzbIV)
RivMACNet
基于水体的Segementation提取的拓扑结构(10.1016/j.cageo.2022.105180).
其它
杂
IDL批量提取水体
Python爬取遥感信息及批量下载
根据月份从地理空间数据云上爬取遥感影像信息
根据水文资料(水位/流量)爬取地理空间数据云遥感影像信息
从地理空间数据云批量下载landsat
河流系软件
SI
S1
(待续)