ucar.nc2.ft.point.CollectionInfo Maven / Gradle / Ivy
The newest version!
/*
* Copyright (c) 1998-2018 John Caron and University Corporation for Atmospheric Research/Unidata
* See LICENSE for license information.
*/
package ucar.nc2.ft.point;
import ucar.nc2.time.CalendarDateRange;
import ucar.nc2.time.CalendarDateUnit;
import ucar.unidata.geoloc.LatLonRect;
/**
* Value class to hold bounds info for a collection
*
* @author caron
* @since 9/25/2015.
*/
public class CollectionInfo {
public LatLonRect bbox; // can be null if count == 0
private CalendarDateRange dateRange;// can be null if count == 0
public double minTime = Double.MAX_VALUE; // in units of dsg.timeUnit
public double maxTime = -Double.MAX_VALUE;
public int nobs;
public int nfeatures;
private boolean complete;
public CollectionInfo() {}
public CollectionInfo(LatLonRect bbox, CalendarDateRange dateRange, int nfeatures, int nobs) {
this.bbox = bbox;
this.dateRange = dateRange;
this.nfeatures = nfeatures;
this.nobs = nobs;
}
public void extend(CollectionInfo info) {
if (info.nobs == 0)
return;
nobs += info.nobs;
nfeatures++;
if (bbox == null)
bbox = info.bbox;
else if (info.bbox != null)
bbox.extend(info.bbox);
minTime = Math.min(minTime, info.minTime);
maxTime = Math.max(maxTime, info.maxTime);
}
public CalendarDateRange getCalendarDateRange(CalendarDateUnit timeUnit) {
if (nobs == 0)
return null;
if (dateRange != null)
return dateRange;
if (timeUnit != null && minTime <= maxTime) {
dateRange = CalendarDateRange.of(timeUnit.makeCalendarDate(minTime), timeUnit.makeCalendarDate(maxTime));
}
return dateRange;
}
public void setCalendarDateRange(CalendarDateRange dateRange) {
this.dateRange = dateRange;
}
public boolean isComplete() {
return complete;
}
public void setComplete() {
if (nobs > 0)
this.complete = true;
}
@Override
public String toString() {
return "CollectionInfo{" + "bbox=" + bbox + ", dateRange=" + getCalendarDateRange(null) + ", nfeatures=" + nfeatures
+ ", nobs=" + nobs + ", complete=" + complete + '}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy