Ubuntu系统下StaMPS InSAR处理软件完整安装与配置指南 📅 2026/8/13 4:22:07 1. 项目概述为什么要在Ubuntu上折腾StaMPS如果你正在处理合成孔径雷达干涉测量InSAR数据尤其是时序分析那么StaMPS这个名字对你来说应该不陌生。它是一个基于MATLAB的开源软件包专门用于处理多时相InSAR数据进行永久散射体PS和小基线集SBAS分析。简单来说它能帮你从一堆雷达卫星图像里精准地提取出地表毫米级的形变信息广泛应用于地质灾害监测、城市沉降、火山活动等领域。那么为什么要把StaMPS装到Ubuntu上原因很直接性能、稳定性和成本。InSAR数据处理是典型的计算密集型任务动辄几十上百景影像每景影像的尺寸又巨大。Windows系统在处理这类任务时内存管理、多核并行效率往往不如Linux发行版。Ubuntu作为最流行的Linux桌面发行版之一拥有强大的命令行工具链、优秀的包管理机制apt和活跃的社区支持能让你更高效地配置StaMPS所需的各种依赖环境如MATLAB运行时、GDAL、PROJ等。此外对于服务器或工作站环境Ubuntu几乎是标配在Linux环境下安装StaMPS意味着你的处理流程可以更容易地脚本化、自动化并部署到高性能计算集群上。因此掌握在Ubuntu中安装StaMPS是从业者迈向高效、专业InSAR数据处理的关键一步。这个过程看似只是“安装一个软件”实则涉及Linux系统管理、MATLAB环境配置、编译工具链使用等多个环节。新手常会卡在依赖缺失、路径配置或权限问题上。接下来我将以一个在Ubuntu 22.04 LTS系统上安装StaMPS 4.1b版本的完整过程为例拆解每一个步骤背后的逻辑、可能遇到的坑以及我的实战经验目标是让你看完就能在自己的机器上成功跑起来。2. 安装前的核心准备理清依赖与思路在Ubuntu上安装任何科学计算软件最忌讳的就是直接开干。盲目执行网上搜到的命令很容易陷入“依赖地狱”——因为缺少某个库而报错装了A库又发现需要B库的特定版本。对于StaMPS我们需要先理清它的运行架构。StaMPS本身是一系列MATLAB脚本和函数的集合但它并非完全独立。它的运行依赖于几个关键部分MATLAB环境StaMPS是MATLAB程序因此系统中必须安装MATLAB或者至少安装MATLAB RuntimeMCR。对于个人学习或轻度使用安装完整的MATLAB是首选因为方便调试和修改代码。对于无图形界面的服务器或追求轻量化可以只安装MCR。第三方工具StaMPS在内部会调用一些外部命令来处理数据最核心的是Doris、ROI_PAC和Snaphu。Doris和ROI_PAC用于生成干涉图Snaphu用于相位解缠。虽然StaMPS的安装包可能包含这些工具的源码或二进制文件但在Linux下我们通常需要自己编译以确保兼容性。系统级依赖库编译上述工具需要C、C、Fortran的编译器如gcc, g, gfortran以及一些数学库如BLAS, LAPACK和开发头文件。因此我们的安装思路应该是先搭建基础系统环境编译器、库 - 安装MATLAB - 编译第三方工具 - 最后配置StaMPS本身。这个顺序很重要因为编译工具时需要知道MATLAB的头文件和库文件在哪里。注意强烈建议在一个全新的Ubuntu系统或用户环境下开始避免与现有软件环境冲突。如果是在已有复杂环境的系统上操作请考虑使用虚拟环境或容器技术如Docker进行隔离但这属于更进阶的用法本文先以裸机安装为例。2.1 系统更新与基础工具安装首先打开终端更新系统软件包列表并升级现有软件。这是一个好习惯能确保我们接下来安装的依赖是最新的稳定版。sudo apt update sudo apt upgrade -y接着安装编译StaMPS所需的各种开发工具和库。这里我列出了一个比较全面的清单一次性安装可以避免后续反复中断。sudo apt install -y build-essential cmake gcc g gfortran \ libblas-dev liblapack-dev liblapacke-dev \ libfftw3-dev libhdf5-dev libgdal-dev libproj-dev \ libtiff-dev libgeotiff-dev libxml2-dev \ git wget curl unzip逐项解释一下build-essential包含了gcc, g, make等最基础的编译工具链。cmake现代C/C项目常用的构建工具部分工具可能用到。gfortranFortran编译器编译某些科学计算库如早期ROI_PAC可能需要。libblas-dev,liblapack-dev线性代数计算的核心库几乎所有数值计算软件都依赖。libfftw3-dev快速傅里叶变换库InSAR处理中频域运算的核心。libhdf5-dev用于读写HDF5格式数据许多新型雷达数据采用此格式。libgdal-dev,libproj-dev地理空间数据抽象库和投影变换库处理地理编码和制图必备。libtiff-dev,libgeotiff-devTIFF图像和地理TIFF格式支持库。git, wget, curl, unzip用于下载源码和压缩包的工具。安装完这些你的系统就具备了编译大多数科学计算软件的基础能力。这一步通常很顺利如果遇到某个包无法找到可能是软件源的问题可以尝试更换为阿里云、清华大学的镜像源。2.2 MATLAB的安装与关键配置接下来是重头戏安装MATLAB。这里有两种路径路径A安装完整MATLAB推荐用于桌面开发从MathWorks官网下载Linux版本的MATLAB安装包通常是一个.iso文件。挂载ISO文件或解压后运行install脚本。sudo mkdir -p /media/matlab sudo mount -o loop /path/to/matlab.iso /media/matlab cd /media/matlab sudo ./install跟随图形化或命令行安装向导完成安装。请务必记住你的安装路径默认通常是/usr/local/MATLAB/R2023a这样的形式版本号会变。我们将这个路径记为$MATLAB_ROOT。路径B仅安装MATLAB RuntimeMCR适用于服务器或无图形界面环境从MathWorks官网下载对应版本的MCR例如对于MATLAB R2023a你需要找v9.14的MCR。下载通常是一个.zip文件解压后运行安装脚本。unzip MCR_R2023a_glnxa64.zip -d /tmp/mcr_installer cd /tmp/mcr_installer sudo ./install -mode silent -agreeToLicense yes -destinationFolder /opt/matlab_runtime安装完成后同样记下安装路径例如/opt/matlab_runtime/v914。关键配置步骤无论哪种安装方式都需要安装完成后需要将MATLAB的可执行文件路径加入系统的PATH环境变量并将其库文件路径加入LD_LIBRARY_PATH。这样终端和后续编译的工具才能找到MATLAB。编辑你的shell配置文件例如~/.bashrc如果你用的是bashnano ~/.bashrc在文件末尾添加以下行请根据你的实际安装路径修改# 假设完整MATLAB安装在 /usr/local/MATLAB/R2023a export MATLAB_ROOT/usr/local/MATLAB/R2023a export PATH$MATLAB_ROOT/bin:$PATH export LD_LIBRARY_PATH$MATLAB_ROOT/bin/glnxa64:$MATLAB_ROOT/sys/os/glnxa64:$LD_LIBRARY_PATH # 如果只安装了MCR路径可能是 /opt/matlab_runtime/v914/runtime/glnxa64 等 # export MATLAB_ROOT/opt/matlab_runtime/v914 # export LD_LIBRARY_PATH$MATLAB_ROOT/runtime/glnxa64:$MATLAB_ROOT/bin/glnxa64:$MATLAB_ROOT/sys/os/glnxa64:$LD_LIBRARY_PATH保存退出后执行source ~/.bashrc使配置生效。然后可以在终端输入matlab完整版或检查$LD_LIBRARY_PATH来验证配置是否成功。实操心得很多StaMPS编译错误都源于LD_LIBRARY_PATH设置不正确导致链接器找不到MATLAB的库文件如libmwmclmcrrt.so。务必仔细检查路径是否存在并且顺序正确。一个验证方法是ls $MATLAB_ROOT/bin/glnxa64看看里面是否有大量的.so库文件。3. 第三方工具的编译Doris, ROI_PAC, SnaphuStaMPS本身不直接处理原始雷达数据生成干涉图这部分工作它外包给Doris或ROI_PAC。而相位解缠则依赖Snaphu。因此我们需要先编译好这些“左膀右臂”。3.1 编译DorisDoris是TU Delft开发的精密InSAR处理器现在已成为很多流程的标准工具。获取源码从GitHub或官方FTP获取最新稳定版源码。这里以从GitHub克隆为例。git clone https://github.com/bertspaan/doris.git cd doris # 查看并切换到一个稳定版本分支例如5.0.x git checkout v5.0.3配置与编译Doris使用CMake构建相对现代。mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX/usr/local make -j$(nproc) # -j参数利用多核加速编译 sudo make install-DCMAKE_INSTALL_PREFIX/usr/local指定安装目录这样编译出的可执行文件会放在/usr/local/bin库文件在/usr/local/lib方便系统全局调用。验证安装编译安装完成后在终端输入doris如果出现帮助信息或版本信息说明安装成功。如果提示命令未找到检查/usr/local/bin是否在你的PATH中通常默认就在。3.2 编译ROI_PACROI_PAC是更早期的InSAR处理软件有些流程或历史数据可能还需要它。它的编译稍微复杂一些。获取源码wget https://github.com/isce-framework/isce2/releases/download/v2.6.3/ROI_PAC-3.0.1.tar.gz tar -xzf ROI_PAC-3.0.1.tar.gz cd ROI_PAC-3.0.1解决依赖与配置ROI_PAC的配置脚本可能比较老。首先确保所有依赖已安装。然后编辑Makefile或configure脚本。通常需要手动指定FFTW、HDF5等库的路径。一个常见的做法是修改config.user文件如果存在或直接设置环境变量。export FFTW_LIB/usr/lib/x86_64-linux-gnu export FFTW_INC/usr/include export HDF5_LIB/usr/lib/x86_64-linux-gnu export HDF5_INC/usr/include编译./configure --prefix/usr/local make sudo make install如果configure失败可能需要安装更多开发包如libmotif-dev或libx11-dev具体看错误信息。编译ROI_PAC是对耐心和排错能力的考验如果只为StaMPS且你的数据都能用Doris处理可以考虑跳过ROI_PAC。3.3 编译SnaphuSnaphuStatistical-cost, Network-flow Algorithm for Phase Unwrapping是相位解缠的黄金标准工具。获取源码通常StaMPS的安装包/src/snaphu里就包含源码也可以从网上单独下载。# 假设你已经下载了StaMPS安装包并解压 cd /path/to/stamps/StaMPS-4.1b/src/snaphu编译Snaphu的编译通常很简单。make编译后会在当前目录生成snaphu可执行文件。我们需要把它放到一个系统路径下或者告诉StaMPS它的位置。sudo cp snaphu /usr/local/bin/注意事项编译这些工具时如果遇到“找不到 -lgfortran”或“undefined reference tosgemm_”之类的链接错误通常是Fortran编译器或BLAS/LAPACK库链接问题。确保gfortran已安装并尝试安装libatlas-base-dev提供优化的BLAS或使用sudo apt install libblas-dev liblapack-dev来安装参考实现。对于链接问题有时需要显式指定库路径例如在编译命令后加上-L/usr/lib -lblas -llapack。4. StaMPS本体的安装与配置当所有“配角”都就位后终于可以请出“主角”StaMPS了。获取StaMPS源码访问StaMPS官网或GitHub仓库下载最新稳定版本。这里以4.1b为例。wget https://github.com/dbekaert/StaMPS/archive/refs/tags/v4.1b.tar.gz tar -xzf v4.1b.tar.gz cd StaMPS-4.1b关键一步修改MATLAB路径配置文件StaMPS需要知道你的MATLAB安装在哪里。编辑stamps目录下的startup.m文件或者setpath.m具体看版本。nano startup.m找到设置matlabroot或MCRROOT的那一行。对于完整MATLAB安装它可能像这样matlabroot /usr/local/MATLAB/R2023a;对于仅MCR安装则可能是MCRROOT /opt/matlab_runtime/v914;务必将其修改为你自己的实际路径。这是StaMPS能否启动的命门。将StaMPS路径添加到MATLAB搜索路径为了让MATLAB启动时自动识别StaMPS的所有函数我们需要将其路径添加到MATLAB的默认搜索路径中。有两种方法方法一临时在MATLAB命令行中执行addpath(genpath(/path/to/your/StaMPS-4.1b)); savepath; % 保存路径到默认路径文件下次启动生效方法二推荐永久在$HOME/Documents/MATLAB目录下如果不存在则创建创建一个名为startup.m的文件。在这个文件里写入上面的addpath命令。这样每次启动MATLAB都会自动加载StaMPS路径。测试安装启动MATLAB完整版或在配置好MCR的环境下运行StaMPS的测试脚本。# 对于完整MATLAB matlab -nodesktop -nosplash -r try, stamps; catch ME, disp(ME.message); exit(1); end; exit(0);如果一切正常MATLAB会启动并显示StaMPS的图形用户界面GUI或者至少不会报错地退出。对于无图形界面的MCR环境可以尝试运行一个简单的StaMPS函数如ps_load_info来测试环境是否正常。5. 环境集成与实战验证安装完成并不意味着万事大吉我们需要确保StaMPS能顺利调用那些编译好的外部工具。设置StaMPS外部工具路径在StaMPS的GUI里或者通过修改配置文件需要告诉StaMPS Doris、Snaphu等工具的完整路径。例如在StaMPS的setparm_*.m系列函数中会有类似doris_path、snaphu_path的参数。你需要根据你的安装位置进行设置。如果按照前文安装到了/usr/local/bin那么这些工具应该已经被系统识别因为/usr/local/bin通常在PATH中StaMPS可能能自动找到。如果不能就需要显式指定绝对路径如/usr/local/bin/doris。运行一个微型测试流程最好的验证方法是跑一个最小的示例。StaMPS的/examples目录下通常有测试数据。你可以尝试按照README或官方教程运行从mt_prep到ps_plot的一个最小流程。这个过程会检验MATLAB/StaMPS函数能否正常调用。外部工具Doris生成干涉图、Snaphu解缠能否被成功调用并执行。数据读写权限是否正常。权限与路径问题排查在Linux下权限问题很常见。确保你的用户对StaMPS目录、数据目录有读写权限。另外所有路径中避免使用中文或特殊字符尽量使用纯英文、数字和下划线的组合。MATLAB对中文路径的支持在Linux下可能有问题。6. 常见问题与排查技巧实录即便按照步骤操作也难免会遇到问题。下面是我在多次安装中遇到的典型问题及解决方法。问题1启动MATLAB时StaMPS报错 “Undefined function or variable ‘stamps’.”原因MATLAB搜索路径未正确添加StaMPS。解决检查并执行第4步中的addpath操作。确认你添加的是StaMPS的根目录MATLAB的genpath函数会递归添加所有子目录。使用which stamps命令在MATLAB中检查是否能找到该函数。问题2编译Doris或ROI_PAC时报错 “找不到 -lxxx” 链接错误。原因缺少对应的开发库或者库文件不在链接器的默认搜索路径中。解决首先用apt search libxxx或apt-file search libxxx.so查找对应的-dev包并安装。如果库已安装但链接器找不到可能需要使用-L选项指定库路径例如在CMake命令中添加-DCMAKE_LIBRARY_PATH/usr/lib/x86_64-linux-gnu。问题3运行StaMPS处理时卡在调用外部工具如doris一步并报错 “命令未找到” 或 “Permission denied”。原因系统PATH环境变量未包含工具路径或者工具没有可执行权限。解决对于“命令未找到”在终端直接输入doris或snaphu看是否能运行。如果不能说明系统PATH没设置好。可以将/usr/local/bin加入PATH通常已默认加入或者在StaMPS配置中使用绝对路径。对于“Permission denied”使用chmod x /usr/local/bin/doris给可执行文件添加执行权限。问题4在仅安装MCR的环境中运行StaMPS脚本报错关于MATLAB运行时的错误。原因LD_LIBRARY_PATH环境变量设置不正确或未生效导致系统找不到MATLAB Runtime的共享库。解决确认LD_LIBRARY_PATH包含了MCR运行时库的确切路径。路径可能类似$MCRROOT/runtime/glnxa64:$MCRROOT/bin/glnxa64:$MCRROOT/sys/os/glnxa64。检查是否在正确的shell中设置了环境变量。如果你在~/.bashrc中设置但通过非交互式脚本如cron job调用可能不会读取.bashrc。在这种情况下需要在调用脚本中显式设置这些变量。使用ldd命令检查StaMPS编译出的二进制文件如果有的话或MATLAB启动器依赖的库是否都能找到ldd $(which matlab)或ldd /path/to/mcr_script。问题5处理过程中出现 “磁盘空间不足” 或 “内存不足” 错误。原因InSAR数据处理是I/O和内存密集型任务。即使很小的数据集中间文件也可能非常庞大。解决确保工作目录所在的分区有充足的剩余空间建议100GB以上。在StaMPS的参数设置中留意是否有选项可以设置临时文件目录tmpdir将其指向空间更大的分区。如果内存不足可以考虑分块处理如果StaMPS或Doris支持或者增加系统的交换空间swap。问题6StaMPS图形界面GUI在Linux下显示异常或无法启动。原因MATLAB的GUI依赖特定的图形库可能在最小化安装的Linux服务器上缺失。解决对于桌面版Ubuntu通常没问题。对于服务器版可能需要安装一些X11和图形库sudo apt install xvfb libxrender1 libxt6 libxmu6。如果不需要GUI可以始终使用-nodesktop -nosplash参数以无头模式运行MATLAB通过脚本控制StaMPS。这才是生产环境的推荐做法。最后一个非常重要的习惯详细阅读错误信息。Linux和MATLAB的错误提示通常非常具体直接复制错误信息到搜索引擎注意去掉你本地的路径等隐私信息很大概率能找到解决方案。StaMPS的邮件列表和GitHub的Issues页面也是宝贵的资源。安装过程虽然繁琐但一旦打通你就拥有了一个强大、稳定且可定制的InSAR数据处理平台。