⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arcstation.java

📁 一个用java写的地震分析软件(无源码)-used to write a seismic analysis software (without source)
💻 JAVA
字号:
package org.trinet.hypoinv;
import org.trinet.util.*;
import java.lang.Math;

public class ArcStation {
  public String site;
  public String net;
  public char chnl;
  public String chan;
  public String prmk;
  public char pfm;
  public int pwta;
  public int year;
  public int month;
  public int day;
  public int hr;
  public int mn;
  public float psec;
  public float pttr;
  public float pwtu;
  public float ssec;
  public String srmk;
  public int swta;
  public float sttr;
  public float amp;
  public int ampunits;
  public float swtu;
  public float pdelay;
  public float sdelay;
  public float dist;
  public float eangle;
  public int ampmagwt;
  public int durmagwt;
  public float period;
  public char chlrmk;
  public float taud;
  public float azes;
  public float durmag;
  public float ampmag;
  public float impp;
  public float imps;
  public char datasrccode;
  public char durmagcode;
  public char ampmagcode;

  public boolean parseStatus;
  public static int MAX_ARC_STATION_CHARS=110;  // should be 111
  public static String titleStr = "SITE NET CHL DATE       HR:MN PSEC   DIST AZM  AN PD PWT   PRES  PWTU SD SWT  SSEC  S-RES  SWTU   IMPP   IMPS";


  public ArcStation () {
  }

  public ArcStation(String stnStr) {
    parseArcStation(stnStr);
  }
/*
	  1         2         3         4         5         6         7         8         9        10        11
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
STATNnt cCMP pr  yearmodyhrmnseconPresPwtS-secSr sSrespek2pekmmSwtPdlySdlyDistAngADPerRCodaAzmDurMagPimpSimpSFX
MCV  NC VVHZ  PU0199806262007 4310  -9110    0   0   0      0 0  0   0   0  1616400  0  159297404  0 502   0WD
HMT  CI VVHZ     199811102059    0   0  0 5632IS 0 -27    151 0  0   0   0 708 9000  0    0228  0  0   0
WOF   G  P V IPD0199811120254 2436   7172    0   0   0      0 0  0   0   0 49610100  0    0165  0  0 174   0
GTM  CI  EHZ  P00199912080004 4174  -9155    0   0   0      0 0  0   0   0 264 9000  0    0201  0  0 741   0
KNW  AZ HHHE  PD0200004170736 0240   4100                                   -1              -1
WRV  CI VEHZ  P 3200209122043 3869  -1  0                                  450
*** NOTE:  when Hypoinverse cannot 'setup' a station it is still returned
           in the .arc output with an abreviated line like the following:
HMT  CI VVLN     200004071235        0  0 1285 S 0
ALV  CI EEHZ  PU2200004111537 3867   3 50
*/
  public boolean parseArcStation(String stnStr) {
    parseStatus = false;

    if (stnStr.length() < MAX_ARC_STATION_CHARS) {
      System.out.println("parseArcStation: Arc station record shorter then MAX_ARC_STATION_CHARS: " + stnStr.length());
      System.out.println("\"" + stnStr + "\"");
      return parseStatus;
    }

    System.out.println("parseArcStation: \"" + stnStr + "\"");

    site = ParseString.getString(stnStr, 0, 5);
    net = ParseString.getString(stnStr, 5, 7);
    chnl = ParseString.getChar(stnStr, 8);
    chan = ParseString.getString(stnStr, 9, 12);
    prmk = ParseString.getString(stnStr, 13, 15);
    pfm = ParseString.getChar(stnStr, 15);
    pwta = ParseString.getInt(stnStr, 16, 17);
    year = ParseString.getInt(stnStr, 17, 21);
    month = ParseString.getInt(stnStr, 21, 23);
    day = ParseString.getInt(stnStr, 23, 25);
    hr = ParseString.getInt(stnStr, 25, 27);
    mn = ParseString.getInt(stnStr, 27, 29);
    psec = ParseString.getIntToFloat(stnStr, 29, 34, 2);
    pttr = ParseString.getIntToFloat(stnStr, 34, 38, 2);
    pwtu = ParseString.getIntToFloat(stnStr, 38, 41, 2);
    ssec = ParseString.getIntToFloat(stnStr, 41, 46, 2);
    srmk = ParseString.getString(stnStr, 46, 48);
    swta = ParseString.getInt(stnStr, 49, 50);

    sttr = ParseString.getIntToFloat(stnStr, 50, 54, 2);
    amp = ParseString.getIntToFloat(stnStr, 54, 61, 2);
    ampunits = ParseString.getInt(stnStr, 61, 63);
    swtu = ParseString.getIntToFloat(stnStr, 63, 66, 2);
    pdelay = ParseString.getIntToFloat(stnStr, 66, 70, 2);
    sdelay = ParseString.getIntToFloat(stnStr, 70, 74, 2);
    dist = ParseString.getIntToFloat(stnStr, 74, 78, 1);
    eangle = ParseString.getIntToFloat(stnStr, 78, 81, 0);
    ampmagwt = ParseString.getInt(stnStr, 81, 82);
    durmagwt = ParseString.getInt(stnStr, 82, 83);
    period = ParseString.getIntToFloat(stnStr, 83, 86, 2);
    chlrmk = ParseString.getChar(stnStr, 86);
    taud = ParseString.getIntToFloat(stnStr, 87, 91, 0);
    azes = ParseString.getIntToFloat(stnStr, 91, 94, 0);
    durmag = ParseString.getIntToFloat(stnStr, 94, 97, 2);
    ampmag = ParseString.getIntToFloat(stnStr, 97, 100, 2);
    impp = ParseString.getIntToFloat(stnStr, 100, 104, 3);
    imps = ParseString.getIntToFloat(stnStr, 104, 108, 3);
    datasrccode = ParseString.getChar(stnStr, 108);
    durmagcode = ParseString.getChar(stnStr, 109);
//aww needs fix    ampmagcode = ParseString.getChar(stnStr, 110);
    parseStatus = true;
    return parseStatus;

  }

  public String toArcStationString() {
    StringBuffer sb = new StringBuffer(112);
    Concat cc = new Concat();
    try {
      sb = sb.append(site.substring(0,5));
    }
    catch  (StringIndexOutOfBoundsException e) {
      System.out.println ("toArcStationString: String out of bounds error for site:\"" + site + "\"");
    }
    try {
      sb = sb.append(net.substring(0,2));
    }
    catch  (StringIndexOutOfBoundsException e) {
      System.out.println ("toArcStationString: String out of bounds error for net:\"" + net + "\"");
    }
    sb = sb.append(' ');
    sb = sb.append(chnl);
    try {
      sb = sb.append(chan.substring(0,3));
    }
    catch  (StringIndexOutOfBoundsException e) {
      System.out.println ("toArcStationString: String out of bounds error for chan:\"" + chan + "\"");
    }
    sb = sb.append(' ');
    try {
      sb = sb.append(prmk.substring(0,2));
    }
    catch  (StringIndexOutOfBoundsException e) {
      System.out.println ("toArcStationString: String out of bounds error for prmk:\"" + prmk + "\"");
    }
    sb = sb.append(pfm);
    sb = cc.format(sb, (long) pwta, 1);
    sb = cc.format(sb, (long) year, 4);
    sb = cc.format(sb, (long) month, 2, 2);
    sb = cc.format(sb, (long) day, 2, 2);
    sb = cc.format(sb, (long) hr, 2, 2);
    sb = cc.format(sb, (long) mn, 2, 2);
    sb = cc.format(sb, (long) Math.round(psec*100.), 5);
    sb = cc.format(sb, (long) Math.round(pttr*100.), 4);
    sb = cc.format(sb, (long) Math.round(pwtu*100.), 3);
    sb = cc.format(sb, (long) Math.round(ssec*100.), 5);
    try {
      sb = sb.append(srmk.substring(0,2));
    }
    catch  (StringIndexOutOfBoundsException e) {
      System.out.println ("toArcStationString: String out of bounds error for srmk:\"" + srmk + "\"");
    }
    sb = sb.append(' ');
    sb = cc.format(sb, (long) swta,1);
    sb = cc.format(sb, (long) Math.round(sttr*100.), 4);
    sb = cc.format(sb, (long) Math.round(amp*100.), 7);
    sb = cc.format(sb, (long) ampunits, 2);
    sb = cc.format(sb, (long) Math.round(swtu*100.), 3);
    sb = cc.format(sb, (long) Math.round(pdelay*100.), 4);
    sb = cc.format(sb, (long) Math.round(sdelay*100.), 4);
    sb = cc.format(sb, (long) Math.round(dist*10.), 4);
    sb = cc.format(sb, (long) eangle, 3);
    sb = cc.format(sb, (long) ampmagwt, 1);
    sb = cc.format(sb, (long) durmagwt, 1);
    sb = cc.format(sb, (long) Math.round(period*100.), 3);
    sb.append(chlrmk);
    sb = cc.format(sb, (long) taud, 4);
    sb = cc.format(sb, (long) azes, 3);
    sb = cc.format(sb, (long) Math.round(durmag*100.), 3);
    sb = cc.format(sb, (long) Math.round(ampmag*100.), 3);
    sb = cc.format(sb, (long) Math.round(impp*1000.), 4);
    sb = cc.format(sb, (long) Math.round(imps*1000.), 4);
    sb.append(datasrccode);
    sb.append(durmagcode);
    sb.append(ampmagcode);

    return sb.toString();

  }

  public void printArcStationString() {
    System.out.println(toArcStationString());
  }

  public static void printTitle() {
    System.out.println(titleStr);
  }

  public static String getTitle() {
    return titleStr;
  }

  public String getFormattedStationString() {
    if (! parseStatus) return "";
    StringBuffer sb = new StringBuffer(132);
    Concat cc = new Concat();
    sb = sb.append(site);
    sb = sb.append(" ");
    sb = sb.append(net);
    sb = sb.append(" ");
    sb = sb.append(chan);
    sb = sb.append(" ");
    sb = cc.format(sb, (long) year, 4, 4) ;
    sb = sb.append("-");
    sb = cc.format(sb, (long) month, 2, 2) ;
    sb = sb.append("-");
    sb = cc.format(sb, (long) day, 2, 2) ;
    sb = sb.append(" ");
    sb = cc.format(sb, (long) hr, 2, 2) ;
    sb = sb.append(":");
    sb = cc.format(sb, (long) mn, 2, 2) ;
    sb = sb.append(":");
    sb = cc.format(sb, (double) psec, 2, 2);
    sb = cc.format(sb, (double) dist, 4, 1);
    sb = cc.format(sb, (long) azes, 4);
    sb = cc.format(sb, (long) eangle, 4);
    sb = sb.append(" ");
    sb = sb.append(prmk);
    sb = sb.append(pfm);
    sb = sb.append(" ");
    sb = cc.format(sb, (long) pwta, 2) ;
    sb = cc.format(sb, (double) pttr, 4, 2);
    sb = cc.format(sb, (double) pwtu, 3, 2);
    sb = sb.append(" ");
    sb = sb.append(srmk);
    sb = sb.append(" ");
    sb = cc.format(sb, (long) swta, 2) ;
    sb = cc.format(sb, (double) ssec, 4, 2);
    sb = cc.format(sb, (double) sttr, 4, 2);
    sb = cc.format(sb, (double) swtu, 3, 2);
    sb = cc.format(sb, (double) impp, 3, 3);
    sb = cc.format(sb, (double) imps, 3, 3);
    return sb.toString();
  }

  public String getTableString() {
    if (! parseStatus) return "";
    StringBuffer sb = new StringBuffer(132);
    Concat cc = new Concat();
    sb = sb.append(site);
    sb = sb.append(" ");
    sb = sb.append(net);
    sb = sb.append(" ");
    sb = sb.append(chan);
    sb = sb.append(" ");
    sb = cc.format(sb, (long) year, 4, 4) ;
    sb = sb.append("-");
    sb = cc.format(sb, (long) month, 2, 2) ;
    sb = sb.append("-");
    sb = cc.format(sb, (long) day, 2, 2) ;
    sb = sb.append(" ");
    sb = cc.format(sb, (long) hr, 2, 2) ;
    sb = sb.append(":");
    sb = cc.format(sb, (long) mn, 2, 2) ;
    sb = sb.append(" ");
    sb = cc.format(sb, (double) psec, 3, 2, 2);
    sb = cc.format(sb, (double) dist, 4, 1, 3);
    sb = cc.format(sb, (long) azes, 4, 3);
    sb = cc.format(sb, (long) eangle, 4, 3);
    sb = sb.append(" ");
    sb = sb.append(prmk);
    sb = sb.append(pfm);
    sb = sb.append(" ");
    sb = cc.format(sb, (long) pwta, 2) ;
    sb = cc.format(sb, (double) pttr, 4, 2);
    sb = cc.format(sb, (double) pwtu, 3, 2);
    sb = sb.append(" ");
    if (srmk.trim().length() == 0) sb = sb.append("--");
    else sb = sb.append(srmk);
    sb = sb.append(" ");
    sb = cc.format(sb, (long) swta, 2) ;
    sb = cc.format(sb, (double) ssec, 4, 2, 2);
    sb = cc.format(sb, (double) sttr, 4, 2);
    sb = cc.format(sb, (double) swtu, 3, 2);
    sb = cc.format(sb, (double) impp, 3, 3);
    sb = cc.format(sb, (double) imps, 3, 3);
    return sb.toString();
  }

  public String getFormattedStationString(String stnStr) {
    parseArcStation(stnStr);
    return getFormattedStationString();
  }

  public void printFormattedStation(String stnStr) {
    System.out.println(getFormattedStationString(stnStr));
  }

  public void printFormattedStation() {
    System.out.println(getFormattedStationString());
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -