package edu.sc.seis.sod.subsetter.origin; import org.w3c.dom.Element; import edu.iris.Fissures.Area; import edu.iris.Fissures.event.EventAttrImpl; import edu.iris.Fissures.event.OriginImpl; import edu.iris.Fissures.model.PointDistanceAreaImpl; import edu.iris.Fissures.model.QuantityImpl; import edu.iris.Fissures.model.UnitImpl; import edu.sc.seis.fissuresUtil.bag.DistAz; import edu.sc.seis.fissuresUtil.cache.CacheEvent; import edu.sc.seis.sod.status.StringTree; import edu.sc.seis.sod.status.StringTreeLeaf; public class OriginPointDistance extends AbstractOriginPoint implements OriginSubsetter { public OriginPointDistance(Element config) throws Exception { super(config); min = getMin().convertTo(UnitImpl.DEGREE).get_value(); max = getMax().convertTo(UnitImpl.DEGREE).get_value(); } /** * Accepts an origin only if it lies within the given distance range of the * given lat and lon. */ public StringTree accept(CacheEvent event, EventAttrImpl eventAttr, OriginImpl origin) { double oLat = origin.getLocation().latitude; double oLon = origin.getLocation().longitude; DistAz distaz = new DistAz(latitude, longitude, oLat, oLon); double delta = distaz.getDelta(); return new StringTreeLeaf(this, min <= delta && max >= delta); } private double min, max; public Area getArea() { return new PointDistanceAreaImpl((float)latitude, (float)longitude, new QuantityImpl(min, UnitImpl.DEGREE), new QuantityImpl(max, UnitImpl.DEGREE)); } }