Example #1
0
 /**
  * Waveform in sac file.
  *
  * @param sacPath {@link Path} for a sac file
  * @return double[] of waveform data
  * @throws IOException if sacPath does not exist or if an I/O error occurs
  */
 public static double[] readSACData(Path sacPath) throws IOException {
   try (SACInputStream stream = new SACInputStream(sacPath)) {
     stream.skipBytes(79 * 4);
     int npts = stream.readInt();
     double[] data = new double[npts];
     stream.skipBytes(632 - 80 * 4);
     // stream.skipBytes(632);
     // float(4) * 70, int(4) * 40, String (8) * 22 + (16)
     // 4* 70 + 4* 40 + 8* 22 +16 = 632
     for (int i = 0; i < npts; i++) data[i] = stream.readFloat();
     return data;
   }
 }
Example #2
0
  /**
   * Read header values in a sacFile.
   *
   * @param sacPath to read
   * @return {@link Map} of {@link SACHeader} in the file
   * @throws IOException If sacFile does not exist, if an I/O error occurs.
   */
  public static Map<SACHeaderEnum, String> readHeader(Path sacPath) throws IOException {
    Map<SACHeaderEnum, String> headerMap = new EnumMap<>(SACHeaderEnum.class);
    try (SACInputStream stream = new SACInputStream(sacPath)) {
      headerMap.put(SACHeaderEnum.DELTA, Float.toString(stream.readFloat())); // 0
      headerMap.put(SACHeaderEnum.DEPMIN, Float.toString(stream.readFloat())); // 1
      headerMap.put(SACHeaderEnum.DEPMAX, Float.toString(stream.readFloat())); // 2
      headerMap.put(SACHeaderEnum.SCALE, Float.toString(stream.readFloat())); // 3
      headerMap.put(SACHeaderEnum.ODELTA, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.B, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.E, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.O, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.A, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.num9, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.T0, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.T1, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.T2, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.T3, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.T4, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.T5, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.T6, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.T7, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.T8, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.T9, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.F, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.RESP0, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.RESP1, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.RESP2, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.RESP3, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.RESP4, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.RESP5, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.RESP6, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.RESP7, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.RESP8, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.RESP9, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.STLA, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.STLO, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.STEL, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.STDP, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.EVLA, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.EVLO, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.EVEL, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.EVDP, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.MAG, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.USER0, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.USER1, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.USER2, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.USER3, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.USER4, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.USER5, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.USER6, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.USER7, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.USER8, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.USER9, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.DIST, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.AZ, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.BAZ, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.GCARC, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.num54, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.num55, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.DEPMEN, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.CMPAZ, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.CMPINC, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.XMINIMUM, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.XMAXIMUM, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.YMINIMUM, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.YMAXIMUM, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.num63, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.num64, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.num65, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.num66, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.num67, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.num68, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.num69, Float.toString(stream.readFloat()));
      headerMap.put(SACHeaderEnum.NZYEAR, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.NZJDAY, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.NZHOUR, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.NZMIN, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.NZSEC, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.NZMSEC, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.NVHDR, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.NORID, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.NEVID, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.NPTS, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.num80, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.NWFID, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.NXSIZE, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.NYSIZE, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.num84, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.IFTYPE, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.IDEP, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.IZTYPE, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.num88, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.IINST, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.ISTREG, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.IEVREG, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.IEVTYP, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.IQUAL, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.ISYNTH, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.IMAGTYP, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.IMAGSRC, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.num97, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.num98, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.num99, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.num100, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.num101, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.num102, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.num103, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.num104, Integer.toString(stream.readInt()));
      headerMap.put(SACHeaderEnum.LEVEN, Boolean.toString(stream.readSACBoolean()));
      headerMap.put(SACHeaderEnum.LPSPOL, Boolean.toString(stream.readSACBoolean()));
      headerMap.put(SACHeaderEnum.LOVROK, Boolean.toString(stream.readSACBoolean()));
      headerMap.put(SACHeaderEnum.LCALDA, Boolean.toString(stream.readSACBoolean()));
      headerMap.put(SACHeaderEnum.num109, Boolean.toString(stream.readSACBoolean()));
      headerMap.put(SACHeaderEnum.KSTNM, stream.readString(8));
      headerMap.put(SACHeaderEnum.KEVNM, stream.readString(16));
      headerMap.put(SACHeaderEnum.KHOLE, stream.readString(8));
      headerMap.put(SACHeaderEnum.KO, stream.readString(8));
      headerMap.put(SACHeaderEnum.KA, stream.readString(8));
      headerMap.put(SACHeaderEnum.KT0, stream.readString(8));
      headerMap.put(SACHeaderEnum.KT1, stream.readString(8));
      headerMap.put(SACHeaderEnum.KT2, stream.readString(8));
      headerMap.put(SACHeaderEnum.KT3, stream.readString(8));
      headerMap.put(SACHeaderEnum.KT4, stream.readString(8));
      headerMap.put(SACHeaderEnum.KT5, stream.readString(8));
      headerMap.put(SACHeaderEnum.KT6, stream.readString(8));
      headerMap.put(SACHeaderEnum.KT7, stream.readString(8));
      headerMap.put(SACHeaderEnum.KT8, stream.readString(8));
      headerMap.put(SACHeaderEnum.KT9, stream.readString(8));
      headerMap.put(SACHeaderEnum.KF, stream.readString(8));
      headerMap.put(SACHeaderEnum.KUSER0, stream.readString(8));
      headerMap.put(SACHeaderEnum.KUSER1, stream.readString(8));
      headerMap.put(SACHeaderEnum.KUSER2, stream.readString(8));
      headerMap.put(SACHeaderEnum.KCMPNM, stream.readString(8));
      headerMap.put(SACHeaderEnum.KNETWK, stream.readString(8));
      headerMap.put(SACHeaderEnum.KDATRD, stream.readString(8));
      headerMap.put(SACHeaderEnum.KINST, stream.readString(8));
    }

    return headerMap;
  }