### Data structure

MintPy uses HDF5 file internally. It loads files generated by various InSAR processors into HDF5 format (via `load_data.py` or `prep_*.py`). HDF5 files can exported into other format via `save_*.py`, i.e. QGIS, HDF-EOS5, GMT, ROI_PAC and Google Earth KMZ.

#### File name convention

Using the underscore `_` as the delimiter in the file name, the first part describes the file type, while the rest parts describe the additional operations. For example:

- `timeseries.h5` is the raw time series
- `timeseries_ERA5.h5` is the time series after the ERA5 correction;
- `velocity.h5` is the velocity from the final displacement time series
- `velocityERA5.h5` is the velocity from ERA5 tropospheric delay (from `inputs/ERA5.h5` file), not the displacement velocity after ERA5 correction.
- `timeseriesResidual.h5` is the residual phase time series
- `timeseriesResidual_ramp.h5` is the residual phase time series after deramping

#### File description

The generated HDF5 files by the routine workflow `smallbaselineApp.py` are described in the following notebook:

- https://github.com/insarlab/MintPy-tutorial/blob/main/workflows/smallbaselineApp.ipynb

#### HDF5 data structure

All HDF5 files generated by MintPy have datasets and attributes in the root level. Files may have one or multiple datasets. Datasets in most files have the same shape (size), except for the pre-defined structure types below (presented in the most complete form):

##### timeseries

    /                Root level
    Attributes       Dictionary for metadata
    /date            1D array of string  in size of (n,     ) in YYYYMMDD format.
    /timeseries      3D array of float32 in size of (n, l, w) in meter for cumulative displacement.
    /bperp           1D array of float32 in size of (n,     ) in meter for perpendicular baseline.

where `n` is the number of acquisitions, `l` for length, `w` for width.

##### velocity

    /                          Root level
    Attributes                 Dictionary of metadata
    /velocity                  2D array of float32 in size of (l, w) in m/year         for polynomial function with the order of 1
    /velocityStd               2D array of float32 in size of (l, w) in m/year         for polynomial function with the order of 1
    /acceleration              2D array of float32 in size of (l, w) in m^2/year       for polynomial function with the order of 2
    /accelerationStd           2D array of float32 in size of (l, w) in m^2/year       for polynomial function with the order of 2
    /poly{order}               2D array of float32 in size of (l, w) in m^{order}/year for polynomial function with the order >= 3
    /poly{order}Std            2D array of float32 in size of (l, w) in m^{order}/year for polynomial function with the order >= 3
    ...
    /annualAmplitude           2D array of float32 in size of (l, w) in meter  for periodic function with period of 1     year
    /annualPhase               2D array of float32 in size of (l, w) in radian for periodic function with period of 1     year
    /semiAnnualAmplitude       2D array of float32 in size of (l, w) in meter  for periodic function with period of 1/2   year
    /semiAnnualPhase           2D array of float32 in size of (l, w) in radian for periodic function with period of 1/2   year
    /periodY{per}Amplitude     2D array of float32 in size of (l, w) in meter  for periodic function with period of {per} year
    /periodY{per}Phase         2D array of float32 in size of (l, w) in radian for periodic function with period of {per} year
    ...
    /step{YYYYMMDD}            2D array of float32 in size of (l, w) in meter for step function
    /step{YYYYMMDD}Std         2D array of float32 in size of (l, w) in meter for step function
    ...
    /velocityPost{YYYYMMDD}    2D array of float32 in size of (l, w) in m/year for a polyline function starting at {YYYYMMDD}
    /velocityPost{YYYYMMDD}Std 2D array of float32 in size of (l, w) in m/year for a polyline function starting at {YYYYMMDD}
    ...
    /exp{YYYYMMDD}Tau{tau}     2D array of float32 in size of (l, w) in meter for an exponential function starting at {YYYYMMDD} with characteristic time of {tau} days
    /exp{YYYYMMDD}Tau{tau}Std  2D array of float32 in size of (l, w) in meter for an exponential function starting at {YYYYMMDD} with characteristic time of {tau} days
    ...
    /log{YYYYMMDD}Tau{tau}     2D array of float32 in size of (l, w) in meter for a logarithmic function starting at {YYYYMMDD} with characteristic time of {tau} days
    /log{YYYYMMDD}Tau{tau}Std  2D array of float32 in size of (l, w) in meter for a logarithmic function starting at {YYYYMMDD} with characteristic time of {tau} days
    ...

##### geometry

    /                        Root level
    Attributes               Dictionary for metadata. 'X/Y_FIRST/STEP' attribute for geocoded.
    /height                  2D array of float32 in size of (l, w   ) in meter. Height with respect to the ellipsoid (as provided by ISCE-2/topsStack) or geoid.
    /latitude (azimuthCoord) 2D array of float32 in size of (l, w   ) in degree.
    /longitude (rangeCoord)  2D array of float32 in size of (l, w   ) in degree.
    /slantRangeDistance      2D array of float32 in size of (l, w   ) in meter.
    /incidenceAngle          2D array of float32 in size of (l, w   ) in degree. Incidence angle of the LOS vector measured from vertical  at the target.
    /azimuthAngle            2D array of float32 in size of (l, w   ) in degree. Azimuth   angle of the LOS vector measured from the north at the target with anti-clockwise direction as positive.
    /shadowMask              2D array of bool    in size of (l, w   ). Mask with non-zero value for pixels in shadow in the LOS direction.
    /waterMask               2D array of bool    in size of (l, w   ). Mask with non-zero value for pixels on land.
    /bperp                   3D array of float32 in size of (n, l, w) in meter.
    /date                    1D array of string  in size of (n,     ) in YYYYMMDD.
    ...

##### ifgramStack

    /                  Root level group name
    Attributes         Dictionary for metadata
    /date              2D array of string  in size of (m, 2   ) in YYYYMMDD format for reference and secondary date
    /bperp             1D array of float32 in size of (m,     ) in meter for perpendicular baseline.
    /dropIfgram        1D array of bool    in size of (m,     ) with 0/False for drop and 1/True for keep
    /unwrapPhase       3D array of float32 in size of (m, l, w) in radian.
    /coherence         3D array of float32 in size of (m, l, w).
    /connectComponent  3D array of int16   in size of (m, l, w).
    /wrapPhase         3D array of float32 in size of (m, l, w) in radian.
    /azimuthOffset     3D array of float32 in size of (m, l, w) in pixel number.
    /azimuthOffsetStd  3D array of float32 in size of (m, l, w) in pixel number.
    /rangeOffset       3D array of float32 in size of (m, l, w) in pixel number.
    /rangeOffsetStd    3D array of float32 in size of (m, l, w) in pixel number.
    /offsetSNR         3D array of float32 in size of (m, l, w).

where `m` is the number of (interferometric / offset) pairs.

#### Tips: check file structure with `info.py`

One could run `info.py` on ANY HDF5 file to display its file structure, e.g.:

    yunjunz:~/data/test/FernandinaSenDT128/mintpy>$ info.py timeseries.h5
    ******************** Basic File Info ************************
    file name: /Users/yunjunz/data/test/FernandinaSenDT128/mintpy/timeseries.h5
    file type: timeseries
    coordinates : RADAR

    ******************** Date Stat Info *************************
    Start Date: 20141213
    End   Date: 20180619
    Number of acquisitions    : 98
    Std. of acquisition times : 0.99 years
    ----------------------
    List of dates:
    ['20141213', '20141225', '20150307', '20150319', '20150331', '20150412', '20150424', '20150506', '20150518', '20150530', '20150611', '20150623', '20150717', '20150729', '20150822', '20150903', '20150915', '20150927', '20151009', '20151021', '20151102', '20151114', '20151126', '20151208', '20151220', '20160101', '20160113', '20160125', '20160206', '20160218', '20160301', '20160406', '20160418', '20160430', '20160512', '20160524', '20160605', '20160629', '20160711', '20160723', '20160804', '20160816', '20160828', '20160909', '20160921', '20161003', '20161015', '20161027', '20161108', '20161120', '20161202', '20161214', '20161226', '20170107', '20170119', '20170131', '20170212', '20170224', '20170308', '20170320', '20170401', '20170413', '20170425', '20170507', '20170519', '20170531', '20170612', '20170624', '20170706', '20170718', '20170730', '20170811', '20170823', '20170904', '20170916', '20170928', '20171010', '20171022', '20171103', '20171115', '20171127', '20171209', '20171221', '20180102', '20180114', '20180126', '20180207', '20180219', '20180303', '20180315', '20180327', '20180408', '20180420', '20180502', '20180514', '20180526', '20180607', '20180619']
    ----------------------
    ...
    ******************** HDF5 File Structure ********************
    Attributes in / level:
      ALOOKS                                          5
      ANTENNA_SIDE                                    -1
      AZIMUTH_PIXEL_SIZE                              78.08212603857966
      CENTER_LINE_UTC                                 42584.0
      DATA_TYPE                                       float32
      DATE12                                          141213-141225
      EARTH_RADIUS                                    6337286.638938101
      END_DATE                                        20180619
      FILE_LENGTH                                     450
      FILE_PATH                                       /Users/yunjunz/data/test/FernandinaSenDT128/merged/interferograms/20141213_20141225/filt_fine.unw
      FILE_TYPE                                       timeseries
      HEADING                                         -168.01821899414062
      HEIGHT                                          698834.2261352595
      LAT_REF1                                        -0.27142282744993307
      LAT_REF2                                        -0.2052012679974385
      LAT_REF3                                        -0.548154094069745
      LAT_REF4                                        -0.4814968797610026
      LENGTH                                          450
      LON_REF1                                        -91.33901754364975
      LON_REF2                                        -91.64656503719202
      ...

    HDF5 dataset "/bperp               ": shape (98,)               , dtype <float32>
    HDF5 dataset "/date                ": shape (98,)               , dtype <|S8>
    HDF5 dataset "/timeseries          ": shape (98, 450, 600)      , dtype <float32>

GitHub « Previous Next »