记录一下StamPS+SBAS的过程
记录一下利用stamps做sbas的过程
本文主要记录一下做SBAS的过程,主要参考了B站up主刘博士的视频,其中也遇到了一些问题进行解决,在此记录一下整体过程。
-
安装双系统Ubuntu18.04.6
①在镜像源中下载:http://mirrors.163.com/ubuntu-releases/
找到ubuntu-18.04.6-desktop-amd64.iso下载即可,下载较慢可以复制下载地址粘贴到IDM中进行下载。
②利用软碟通制作启动u盘。准备好镜像文件和一个大于8G的U盘,U盘里的文件记得备份好,软碟通制作u盘的过程可参考网上的资料,这个还是比较简单的。
③磁盘分区。准备好一个大于200G的磁盘空间用于安装Ubuntu系统,并在系统盘中分个200M做EFI启动项(我是双固态硬盘)。
④重启电脑安装Ubuntu系统。插好启动u盘,开机时进入BIOS界面,用上下左右键找到设置启动项,可能在setting里,选择启动u盘优先启动,保存并退出。然后就进入安装界面,选择install Ubuntu,前面可根据自行需求进行设置。
手动分区:
EFI启动区:选择200M的空闲区域,点击+,Primary,加载方法为Beginning of this space,Use as选择EFI System Partition,OK;(分好后变为efi, unknown,注意与window的区分)
swap交换区:选择20000多M的空闲区域,点击+,Size设置为你的内存大小(我的为16384MB),Logical,加载方法为Beginning of this space,Use as选择swap area,OK;
根目录区:选择剩余的20000多M的空间区域,点击+,Logical,加载方法为Beginning of this space,Use as选择Ext4 journaling file system,Mount point:/,OK;
注意:Device for boot loader installation必须选择与EFI相同的挂载点,注意名称,否则会安装失败。
点击install now,继续安装即可。
问题:安装Ubuntu完成但是发现没有网络?
答:这个我尝试过安装驱动,但是没能成功,可能要对应版本的才行。有另外两种办法,一个是直接用网线直连,有宽带的可以加条网线连接即可,用手机的热点也可以;另一个是上淘宝买个20块的无线网卡,我试了即插即用,直接就能搜到wifi。
问题:如何重装Ubuntu双系统?
答:重装的话直接先进入windows系统,在磁盘管理删除掉分给Ubuntu的空间即可,然后重新安装步骤安装就行,考虑到可能因修改系统文件无法进入Ubuntu界面导致的后果(新手的我也重装过)
-
安装ISCE软件(使用cmake方法)
①安装Cmake(版本要求3.13以上)
下载链接:https://cmake.org/files/v3.22/
直接找到cmake-3.22.1.zip下载就行。
进入cmake-3.22.1文件夹,打开终端,运行./configure命令,看看是否满足运行条件,有报错提示按照提示来改就行,如果满足会提示now run:make、sudo make install,按照提示运行即可。
安装多个版本gcc、g++并指定为7的方法:
sudo apt install software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt install gcc-7 g++-7 gcc-8 g++-8 gcc-9 g++-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 --slave /usr/bin/g++ g++ /usr/bin/g++-8 --slave /usr/bin/gcov gcov /usr/bin/gcov-8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7 --slave /usr/bin/gcov gcov /usr/bin/gcov-7
sudo update-alternatives --config gcc
然后选择g++-7那个即可。
提示找不到OpenSSL:sudo apt-get install libssl-dev
②安装Cython
下载链接:https://pypi.org/simple/cython/
找到Cython-0.29.1.tar.gz下载下来。
到Cython-0.29.1文件夹中运行:
sudo python3 setup.py install
③安装好预备的库
sudo apt-get install python-pybind11
sudo apt install -y gfortran libmotif-dev libhdf5-dev libfftw3-dev libgdal-dev scons python3 cython3 python3-scipy python3-matplotlib python3-h5py python3-gdal python3-pip gdal-bin
④安装ISCE
参考链接:https://github.com/isce-framework/isce2
将isce包下载下来,放到你的Ubuntu文件夹中。
在isce文件夹中搜索给geogrid.cpp和geogridOptical.cpp两个文件添加一行头文件:
#include <ogr_spatialref.h>
进入isce文件夹,打开终端,运行:
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/isce (这个路径也是参考UP主来弄的)
make install
编译成功后,复制原来isce文件夹中的contrib文件夹到usr/local/isce/packages/isce里,由于没有访问权限要使用sudo,在文件夹中运行进行复制:sudo cp -r contrib /usr/local/isce/packages/isce
配置bashrc环境:
export ISCE_HOME=/usr/local/isce/packages
export PYTHONPATH=$ISCE_HOME:$ISCE_HOME/isce:$PYTHONPATH
export PATH=$ISCE_HOME/isce/applications:$ISCE_HOME/isce/contrib/stack/topsStack:$ISCE_HOME/isce/contrib/timeseries/prepStackToStaMPS/bin:/usr/local/isce/bin:$PATH
然后在终端中运行:source ~/.bashrc 更新一下命令即可。
最后验证一下:
在终端里:
python3
import isce
isce.version.release_version
看到版本即安装ISCE成功。
No CMAKE_Fortran_COMPILER could be found报错:sudo apt install gfortran
Gtk-Message: 18:27:05.223: Failed to load module "canberra-gtk-module":
sudo apt-get install libcanberra-gtk-module
报错FFTW:sudo apt-get install fftw3 fftw3-dev fftw3-doc
切换为Python3:
查看位置
python3 --version
python --version
建立软链接
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
设置优先级:
sudo update-alternatives --config python
-
安装matlab R2022b
参考:https://mp.weixin.qq.com/s/Tve3e1aBcJ7ogSrHZN9mNw
-
安装StamPS
需准备的环境:
sudo apt-get install gawk
sudo apt-get install tcsh
sudo apt-get install csh
sudo apt-get install matlab-support
sudo apt-get make
sudo apt-get build-essential g++
①安装snaphu
在终端运行:
sudo mkdir /usr/local/man/man1
cd到文件夹的src里,运行:
make
sudo make install
②安装Triangle
sudo apt-get install triangle-bin
③安装TRAIN
下载链接:David Bekaert
后续在matlab中添加TRAIN-master的matlab路径即可。
④安装StamPS
下载链接:GitHub - dbekaert/StaMPS: Stanford Method for Persistent Scatterers
解压得到stamps文件夹。
cd /StaMPS-master/src
make
sudo make install
⑤配置bashrc环境
export STAMPS="/home/lhf/StaMPS-master"
export TRIANGLE_BIN="/usr/bin"
export SNAPHU_BIN="/usr/local/bin"
export TRAIN="/home/lhf/TRAIN-master"
export MATLABPATH=$STAMPS/matlab:$TRAIN/matlab:`echo $MATLABPATH`
export PATH=${PATH}:$STAMPS/bin:$TRIANGLE_BIN:$SNAPHU_BIN
到这环境基本上就配置好了~
5. 进行SBAS实验
参考:https://github.com/isce-framework/isce2/blob/main/contrib/stack/topsStack/README.md
首先注册earthdata账号,并添加LPDAAC服务、LP DAAC data pool、LP DAAC OPeNP,这个可以参考我上一篇博客:https://blog.csdn.net/amazing_jack/article/details/128656045?spm=1001.2014.3001.5501
在实验文件夹中创建:AxuDir、DEM、Orbits、SLC四个文件夹
将下载好的哨兵数据slc放在SLC里
①进入DEM文件夹下载拼接DEM,运行(4个数字代表经纬度,适当大一点)
dem.py -a stitch -b 34 37 111 114 -r -s 1 -c
rm demLat*.dem demLat*.dem.xml demLat*.dem.vrt
处理只剩4个文件
提示not found curl无法下载:sudo apt-get install curl
②新建Process文件夹(注意文件夹名称不能有空格)
Mkdir Process
进入Process文件夹中运行,生成配准后的SLC(4个参数对应SLC、DEM、AxuDir、Orbits):
stackSentinel.py -s ../SLC/ -d ../DEM/demLat_N36_N39_Lon_E100_E104.dem.wgs84 -a ../AuxDir/ -o ../Orbits -b '37 38.5 100.3 102' -W slc
处理没问题的话形成得到run_files文件夹
③运行run_files里的所有命令:
./run_0**
这一步处理时间较长,我总共有13个run
创建input_file文件,内容如下,reference修改(时间20180419改为你的参考影像时间,其他路径根据你的来改):
source_data slc_stack
slc_stack_path /media/lhf/Backup_Plus/SBAS/Process/merged/SLC
slc_stack_reference 20180419
slc_stack_geom_path /media/lhf/Backup_Plus/SBAS/Process/merged/geom_reference
slc_stack_baseline_path /media/lhf/Backup_Plus/SBAS/Process/merged/baselines
range_looks 40
azimuth_looks 10
aspect_ratio 4
lambda 0.056
slc_suffix .full
geom_suffix .full
下载opencv:
sudo python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
④根据官方手册进行处理
官网文档连接:ISCE 2 StaMPS Manual (usermanual.wiki)
make single master stack isce mt extract info isce 进入matlab
ps_load_info
生成干涉图网(可以自行设置)
sb find (rho min , Ddiff max , Bdiff max) sb find (0.4,48,150)
plot sb baselines(这一步我报错了,不过没关系)
进入INSAR_master_date文件夹:
make small baselines isce
进入生成的SMALL_BASELINES文件夹:
mt_prep_isce 0.3 3 2 20 20
生成3*2个patch块,然后就可以进入matlab利用stamps处理啦
在matlab中每一个patch运行stamps(1,5)
然后返回上一目录运行
setparm('small_baseline_flag', 'y')
stamps(1,1)
再运行
stamps(6,6)
stamps(7,7)
即处理完成,可以反复运行stamps(6,7),使得解缠结果更加准确
ps_plot('V-do',1,0,0,'ts');绘制SBAS时间序列形变图
这就是StamPS-SBAS的整个处理过程了,还是花了比较多的时间的,其中可能还有很多不完善的地方,欢迎各位指出相互交流,TY。
可能会出现有个patch里的pscands文件是空的情况,可参考:Empty pscands files --- Error in llh2local (line 39) z=llh(2,:)~=0; Error in ps_load_initial_isce (line 161) xy=llh2local(lonlat',ll0)*1000; Error in stamps (line 281) ps_load_initial_isce(data_inc) · Issue #28 · dbekaert/StaMPS · GitHub
qgmeng1提到了这种情况,可编辑patch.list文件,将错误的patch删掉(文件夹也对应删除),再运行即可。
主要参考:
StamPS-SBAS参考:https://www.bilibili.com/video/BV1pm4y1976U?p=2&vd_source=5897ef2245bbf96656b07e9ef7ba73e6
StamPS安装参考:(66条消息) StaMPS4.1+ISCE2.5安装记录(已经把后期出现问题的解决方案加进去了,所以按照这个流程不会出错)_boost66的博客-CSDN博客
更多推荐
所有评论(0)