ROI_PAC (Repeat Orbit Interferometry PACkage) is a JPL/Caltech software for processing InSAR data, released for public use. ROI_PAC v2 is now available for a free download at (subject to a license agreement).

Below are some fixes/workarounds/utilities that might be of use for the ROI_PAC users.

  • Version 1.0 won't compile on Sun workstations because of bugs in one of the make files (specifically, in the icu unwrapper module). To install ROI_PAC, you may either comment out compilation of icu in the master Makefile_SUN (note that icu is not the default ROI_PAC unwrapper), or replace a faulty ./ROI_PAC/icu/Makefile_SUN file with a corrected one (dowload here; changes are due to Mark Simons of Caltech).


  • The geocoding script doesn't check whether the transformation map from the radar Doppler coordinates to the geographic coordinates already exists, and generates this map every time is called. This is a big waste of your CPU time if you wish to do some post-processing (e.g., bridge together patches of an interferogram separeted by decorrelated areas, fix unwrapping errors, play with various filtering schemes, etc.). You might want to replace the old script with the updated one.

  • The following fix in helps to avoid crashes during the image co-registration with the simulated topography:
    if ($gox==-9999){$gox = 0};
    if ($goz==-9999){$goz = 0};
    Message "Getting the fine offset";

  • In v2.2.1, script should have

    $length = Use_rsc "$unw.unw read FILE_LENGTH";
    instead of
    $length = Use_rsc "$unw.unw read LENGTH";

  • In v2.2.1, the program that "looks down" SLCs, util/powlooks.f should have

    write(12,rec=lineout) (c(k),k=1,2*na/la-1)
    instead of
    write(12,rec=lineout) (c(k),k=1,na/la)

  • Script does not work properly with the precise orbits from Delft Univ. (ODR) in the post-2003 epoch. This fix ( should be adequate.

  • Programs that look down (bin-average) unwrapped phase, DEMs, etc. (util/nbymhgt,nbymdem,looknby) return a value even when there is only one "good" pixel in the averaging bin. Besides giving an overly optimistic impression of the data coverage, this may produce (sometimes highly) inaccurate results in areas of high phase gradient, or phase discontinuities, e.g., across the earthquake fault. A more conservative approach is to assign values only to bins that have less than half of no-data pixels,

    c isum is number of good points

    do j = 1 , wido

  • Doing interferometry without accurate DEMs may be as painful and unsatisfying as skiing on your favorite pair of Rossignols on a 1 inch snow base. Consider yourself lucky if your area of interest is in the US: pretty good digital topo with 30 m postings is now available from both SRTM (NASA's Shuttle Radar Topography Mission) and NED (USGS National Elevation Dataset). You can also ftp either data set (converted to a format that is readily digestible by ROI_PAC) from our WInSAR archive, (that is, if you happen to reside at a WInSAR-affiliated institution). The SRTM quadrangles can be stitched into larger DEMs using this program, SRTMpaste. You can also use SDTS (pre-NED) USGS digital topo with 30 m postings. I have modified SDTS2DEM program to take the 7.5 min USGS quadrangles in the SDTS format (available e.g. at GisDataDepot) and convert them into a format readable by ROI_PAC. The individual 7.5 min "poststamps" may then be used to create larger DEM mosaics using Matlab package dem_mosaic.

  • One may use script to generate header (*.rsc) files for the original SRTM/NED DEMs.
  • is a handy Perl script that will unpack and convert the ERS raw data downloaded from SIO's Winsar Archive to a format amenable for ROI_PAC processing. The script will work only if you have ROI_PAC installed, as it calls ROI_PAC's scripts ( and Just copy all the SIO archive files for the satellite track you want to process into your working directory, and run in that directory (or pass the dir name as a command line argument). The script will figure out if you have more-than-one-frame data for the same satellite pass, and/or multiple acquisition dates, and put the data into respective subdirectories (YYMMDD directory name is default, where YY, MM, and DD correspond to year, month, and day of data acquisition). If the operational system is not SunOS/Solaris, the script assumes it is Irix.

  • Here are some basics of SAR processing

  • Nice roipac web site at UC Berkeley by Dave Schmidt

    You may freely use the above-referenced software for your research, but please acknowledge.

    Go back