package edu.colostate.vchill.chill; import edu.colostate.vchill.ViewUtil; import edu.colostate.vchill.data.Ray; /** * Data storage using the new more general protocol * * @author Jochen Deyke * @author jpont * @version 2007-11-29 */ public class ChillGenRay extends Ray { /** * sweepwide header */ public ChillHSKHeader hskH; /** * raywide header */ public ChillDataHeader dataH; /** * name of datatype; used for scaling etc */ public String type; /** * the actual gate data; uncompressed */ public double[] data; public ChillGenRay(final ChillHSKHeader hskH, final ChillDataHeader dataH, final String type, final double[] data) { this.hskH = hskH; this.dataH = dataH; this.type = type; this.data = data; } public ChillGenRay(final ChillHSKHeader hskH, final ChillDataHeader dataH, final String type, final byte[] data) { this.hskH = hskH; this.dataH = dataH; this.type = type; this.data = ViewUtil.getValues(data, type); } public String getRadarId() { return this.hskH.radarId; } public double getStartAzimuth() { return this.dataH.startAz * 360.0 / this.hskH.angleScale; } public double getStartElevation() { return this.dataH.startEl * 360.0 / this.hskH.angleScale; } public double getEndAzimuth() { return this.dataH.endAz * 360.0 / this.hskH.angleScale; } public double getEndElevation() { return this.dataH.endEl * 360.0 / this.hskH.angleScale; } public double getStartRange() { return this.dataH.startRange; } public double getEndRange() { return this.dataH.startRange + this.hskH.gateWidth * this.dataH.numGates; } public double getGateWidth() { return this.hskH.gateWidth * 1e-6; } public double[] getData() { return this.data; } public long getDate() { return this.dataH.dataTime * 1000l + this.dataH.fractionalSecs / 1000000; } public int getNumberOfGates() { return this.dataH.numGates; } public double getVelocityRange() { return this.hskH.nyquistVel / 1000.0; } public int getTiltNum() { return this.hskH.tiltNum; } public int getSaveTilt() { return this.hskH.saveTilt; } public String getMode() { return this.hskH.getMode(); } public ChillHSKHeader getHSKHeader() { return this.hskH; } public ChillDataHeader getDataHeader() { return this.dataH; } public String getType() { return this.type; } }