IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> ubuntu18中ISCE2.6+stamps实现PSInSAR时序地表形表处理 -> 正文阅读

[Python知识库]ubuntu18中ISCE2.6+stamps实现PSInSAR时序地表形表处理

一 安装ubuntu
教程参考:https://baijiahao.baidu.com/s?id=1741674041146755999&wfr=spider&for=pc
建议安装18或者20版本,版本过高会导致版本不匹配的问题。

二安装Anaconda3
教程参考:https://zhuanlan.zhihu.com/p/269183148
注意安装的python环境建议为3.6-3.8版本,版本过高也会导致适配问题。

三安装isce2.6
教程参考:https://zhuanlan.zhihu.com/p/269183148
注意这里使用的在线安装,安装过程会存在失败的情况,多重复几次即可,网上很多离线安装的方法,也可以尝试下。
涉及到环境配置如下:

# ISCE2 #
export ISCE_HOME=/home/serena/anaconda3/envs/isce2_env/lib/python3.8/site-packages/isce
export PATH=$PATH:$ISCE_HOME/applications:$ISCE_HOME/bin
export ISCE_STACK=/home/serena/isce2
export prepStackToStaMPS=/home/serena/isce2/contrib/timeseries/prepStackToStaMPS
export PATH=$prepStackToStaMPS/bin:/home/serena/isce2/contrib/stack/topsStack:$PATH

其中export ISCE_HOME=/home/serena/anaconda3/envs/isce2_env/lib/python3.8/site-packages/isce,为在线安装成功后的文件路径,测试topsApp.py --steps --help
和topsApp.py -h就能提示安装成功。
但ps和sbas处理时会用到contrib文件夹下的timeseries和stack两个包,在线安装是没有的,因此存在安装教程中还离线下载包并配置这另个环境的原因。按照

export ISCE_STACK=/home/serena/isce2

export prepStackToStaMPS=/home/serena/isce2/contrib/timeseries/prepStackToStaMPS

export PATH=$prepStackToStaMPS/bin:/home/serena/isce2/contrib/stack/topsStack:$PATH

配置环境后会存在提示找不到文件的情况,可能需要增加配置

export PYTHONPATH="/home/yzm/isce2/contrib/stack:$PYTHONPATH"

export PYTHONPATH="/home/yzm/isce2/contrib/timeseries:$PYTHONPATH"


在这里插入图片描述
四安装matlab
由于stamps的运行环境为matlab,因此需要优先安装,可以参考的教程为:
https://blog.csdn.net/weixin_43713224/article/details/117548355
需要环境配置中添加alias matlab=“/usr/local/Polyspace/R2020a/bin/matlab”,用于 命令窗口matlab启动程序。

五安装stamps
参考教程如下:https://zhuanlan.zhihu.com/p/53564322
需要注意的是,这个环境变量配置在stamps自己的安装包中的StaMPS_CONFIG修改,在系统的环境变量中只添加StaMPS_CONFIG的路径和启动配置,如下:

# stamps#
export STAMPS_HOME=/home/yzm/文档/StaMPS-master
export SNAPHU_HOME=/home/yzm/文档/snaphu-v2.0.4
export TRAIN_HOME=/home/yzm/文档/TRAIN-master
export PATH=$PATH:$STAMPS_HOME/bin:$SNAPHU_HOME/bin:$TRAIN_HOME/bin

source /home/yzm/文档/StaMPS-master/StaMPS_CONFIG.bash

其中snaphu-v2.0.4和TRAIN-master是stamps使用所需的额外包,也一并配置。
参考教程:https://blog.csdn.net/sa_V_ic/article/details/125997556

六数据预备
需要下载哨兵1和轨道文件,哨兵1下载网址如下:
https://search.asf.alaska.edu/#/

在这里插入图片描述下载py脚本,在命令窗口中python ×× 运行该脚本,下载影像。
下载轨道文件,使用程序:

from data_downloader import downloader,parse_urls
from pathlib import Path
import pandas as pd
import datetime as dt

folder_aux = Path('/home/yzm/文档/INSAR/AxuDir')  # 指定aux_cal,辅助数据 的下载文件夹
folder_preorb = Path('/home/yzm/文档/INSAR/Orbits') # 指定aux_poeorb,精密轨道数据 的下载文件夹


def filter_aux_cal_urls(urls, platform='all'):
    '''filter files from urls of aux_cal by platform.
    
    Parameters:
    ----------
    urls : list
        a list contains the urls of aux_cal 
    platform : str
        platform of satellite. should be one of ['S1A', 'S1B','all']  
    '''
    if platform in ['S1A', 'S1B','all']:
        if platform == 'all':
            platform = ['S1A', 'S1B']
        else:
            platform = [platform]
    else:
        raise ValueError("platform must be one of ['S1A', 'S1B','all']")
    
    _urls = [i for i in urls if Path(i).suffix == '.SAFE']
    urls_filter = [i for i in _urls if Path(i).stem[:3] in platform]
    
    return urls_filter
            

def filter_aux_poeorb_urls(urls, date_start, date_end, platform='all'):
    '''filter files from urls of aux_poeorb(precise orbit) by date and platform.
    
    Parameters:
    ----------
    urls : list
        a list contains the urls of aux_cal
    date_start, date_end : str
    	start/end date to filter
    platform : str
        platform of satellite. should be one of ['S1A', 'S1B','all']  
    '''
    if platform in ['S1A', 'S1B', 'all']:
        if platform == 'all':
            platform = ['S1A', 'S1B']
        else:
            platform = [platform]
    else:
        raise ValueError("platform must be one of ['S1A', 'S1B','all']")

    date_start = pd.to_datetime(date_start).date()
    date_end = pd.to_datetime(date_end).date()
    
    _urls = [i for i in urls if Path(i).suffix == '.EOF']
    urls_filter = []
    for i in _urls:
        name = Path(i).stem
        dt_i = (pd.to_datetime(name.split('_')[-1]).date() 
                - dt.timedelta(days=1))
        
        if (name[:3] in platform and 
            date_start <= dt_i <= date_end):
            urls_filter.append(i)
        
    return urls_filter

					# 执行下载 #
# ########### download aux_cal  #####################
home_aux_cal = 'https://s1qc.asf.alaska.edu/aux_cal/'
urls_aux_cal = parse_urls.from_html(home_aux_cal)
urls = filter_aux_cal_urls(urls_aux_cal,'S1A') # 获取S1A的所有辅助数据的链接
downloader.async_download_datas(urls, folder=folder_aux)


########### download precise orbit ############
home_preorb = 'https://s1qc.asf.alaska.edu/aux_poeorb/'
urls_preorb = parse_urls.from_html(home_preorb)
urls = filter_aux_poeorb_urls(urls_preorb, 
                              '20220101', '20221215',
                              'S1A') # 获取所有S1A在20210101-20221215期间的精密轨道数据的链接
downloader.download_datas(urls, folder=folder_preorb)

七isce开始处理
先下载对应区域的dem数据,教程如下:
https://blog.csdn.net/weixin_42464154/article/details/120620958?spm=1001.2014.3001.5501,设置asf帐号和密码如下。

machine urs.earthdata.nasa.gov
login ######
password ######

第六步中也需要用到这个配置帐号。
创建文件夹,命令如下:

mkdir DEM
mkdir SLC
mkdir AxuDir
mkdir Orbits
mkdir Process

将下载的哨兵1放入SLC,将轨道文件放入Orbits。
在DEM中下载dem,命令如下:

 cd DEM
  dem.py -a stitch -b 30 31 110 112 -r -s 1 -c
  rm demLat*.dem demLat*.dem.xml demLat*.dem.vrt

isce生成批处理文件命令如下:

cd Process
stackSentinel.py -s ../SLC/ -d ../DEM/demLat_N30_N31_Lon_E110_E112.dem.wgs84 -a ../AuxDir/ -o ../Orbits -b '30.76 30.94 110.87 111.13' -W slc

在Process文件夹下生成了
在这里插入图片描述
这就是时序insar处理时的步骤文件,依次运行即可。这里用python脚本批运行。代码如下:

#!/usr/bin/env python3
#适用于isce2.5及以上版本
import os
import time
start_time = time.time()
print('读取文件')
fileList=os.listdir('./run_files')
for i in range(0,len(fileList)):
	for file in fileList:
          
		if i<9:   
			if file[:7] =='run_0{}_'.format(i+1):
				print('*******处理文件:{}********'.format(file))
				run_file=open('./run_files/{}'.format(file))
				for line in run_file:
					print('**运行命令:{}**'.format(line))
					os.system(line)
		else:
			if file[:7] =='run_{}_'.format(i+1):
				print('*******处理文件:{}********'.format(file))
				run_file=open('./run_files/{}'.format(file))
				for line in run_file:
					print('**运行命令:{}**'.format(line))
					os.system(line)
m, s = divmod(time.time()-start_time, 60)
print('使用时间: {:02.0f} mins {:02.1f} secs\n'.format(m, s))
print('*********完成处理********')

运行完成后,生成如下文件夹:
在这里插入图片描述
其中最后的文件都在merged文件夹中。

接下来生成stamps需要的文件格式,在根目录下创建配置文件input_file,文件内容如下:
在这里插入图片描述
对应的文件夹路径按照本地路径修改。

source_data slc_stack
slc_stack_path /home/yzm/文档/INSAR/Process/merged/SLC
slc_stack_reference 20220725
slc_stack_geom_path /home/yzm/文档/INSAR/Process/merged/geom_reference
slc_stack_baseline_path /home/yzm/文档/INSAR/Process/merged/baselines
range_looks 40
azimuth_looks 10
aspect_ratio 4
lambda 0.056
slc_suffix .full
geom_suffix .full

其中slc_stack_reference 为主影像日期。
参考教程如下:https://blog.csdn.net/ZB18810657133/article/details/116271460?spm=1001.2014.3001.5501

在input_file所在路径命令窗口运行命令,make_single_reference_stack_isce,生成如下文件夹:
在这里插入图片描述接下来在make_single_reference_stack_isce命令生成的INSAR_20220602目录下,运行如下命令:

mt_extract_info_isce#在INSAR_20220602路径下命令窗口 运行

sb_find(0.4,48,150)#matlab中运行,生成连接图,三个参数分别为最小相干性、最大的时间基线、最大的空间基线

make_small_baselines_isce#在INSAR_20220602路径下命令窗口 运行,生成SMALL_BASELINES文件夹

mt_prep_isce 0.3 3 2 50 200#在SMALL_BASELINES文件夹中运行,提取所需信息,幅度校正,建立分块,选取初始高相干候选点。(0.6这个值要比ps的高点。山区阈值选择0.3)其中3×2就是PATCH块的个数。

注意mt_prep_isce参数设置依次为:

da_thresh          //幅度离差阈值,一般取值0.4-0.42,小于此幅度离差的选为PS候选点,默认为0.4
rg_patches         //距离向上分块,默认为1
az_patches         //方位向上分块,默认为1
rg_overlap         //距离向上块间重叠像元数,默认50
az_overlap         //方位向上块间重叠像元数,默认200

参考教程如下:

https://blog.csdn.net/ZB18810657133/article/details/120113396
https://www.bilibili.com/video/BV1pm4y1976U?p=3&vd_source=cef0275840744dbd9a65e929713146b2
其中小基线文件夹SMALL_BASELINES,为stamps处理的根目录。在这里插入图片描述八stamps数据处理
在matlab下的SMALL_BASELINES文件夹进行数据处理,分别执行stamps1-5步骤,然后执行ps_merge_patches,合并步骤5中的分块文件夹。再运行stamps6-8,最后matlab中ps_plot(‘v’ ,4)可以显示结果。
参考教程如下:https://blog.csdn.net/ZB18810657133/article/details/119211263

在运行stamps(1,1)等过程中存在报错的情况,说找不到master,原因在于stamps中代码将主影像编写为master,但isce2.5以后,master用reference替代了,因此需要将stamps中对应文件中的代码中查找master,全部替换为reference。按住ctrl,点击报错显示的代码行,进入后在matlab中用查找工具统一替换。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述补上一些绘图命令:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

matlab运行过程会报错,因此需要安装如下插件:
sudo apt install tcsh
sudo apt-get install gawk
sudo apt-get install libcanberra-gtk-module

sudo apt-get install libgtk2.0-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so /usr/lib/libcanberra-gtk-module.so
1、Ubuntu 18.04/20.04 默认安装了libcanberra-gtk3-module(gtk-3.0+),而Matlab需要调用的是gtk-2.0+的canberra动态链接库;
(实际上gtk-3.0+目录下也有2.0+版本的动态链接库文件,但似乎Matlab并不支持同一路径下的多版本libcanberra-gtk-module.so)

2、linux默认库是从“/usr/lib/”路径下找,而canberra动态链接库位于“/usr/lib/x86_64-linux-gnu/”路径下;

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:04:55  更:2022-12-25 11:06:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 2:37:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计