protected void calcBounds(PointFeature pf) { count++; if (!calcBounds) return; if (pf == null) return; if (bb == null) bb = new LatLonRect(pf.getLocation().getLatLon(), .001, .001); else bb.extend(pf.getLocation().getLatLon()); double obsTime = pf.getObservationTime(); minTime = Math.min(minTime, obsTime); maxTime = Math.max(maxTime, obsTime); }
protected void calcBounds(PointFeature pf) { count++; if (!calcBounds) return; if (pf == null) return; if (bb == null) bb = new LatLonRect(pf.getLocation().getLatLon(), .001, .001); else bb.extend(pf.getLocation().getLatLon()); double obsTime = pf.getObservationTime(); minTime = Math.min(minTime, obsTime); maxTime = Math.max(maxTime, obsTime); }
protected void trackBB(EarthLocation loc, CalendarDate obsDate) { if (loc != null) { if (llbb == null) { llbb = new LatLonRect(loc.getLatLon(), .001, .001); return; } llbb.extend(loc.getLatLon()); } // date is handled specially if ((minDate == null) || minDate.isAfter(obsDate)) minDate = obsDate; if ((maxDate == null) || maxDate.isBefore(obsDate)) maxDate = obsDate; }
protected void calcBounds(PointFeature pf) { count++; if (!calcBounds) return; if (pf == null) return; if (bb == null) bb = new LatLonRect(pf.getLocation().getLatLon(), .001, .001); else bb.extend(pf.getLocation().getLatLon()); if (timeUnit == null) timeUnit = pf.getTimeUnit(); double obsTime = pf.getObservationTime(); minTime = Math.min(minTime, obsTime); maxTime = Math.max(maxTime, obsTime); }
private CollectionInfo calcBounds(PointFeatureCollection pfc) { LatLonRect bbox = null; double minTime = Double.MAX_VALUE; double maxTime = -Double.MAX_VALUE; int count = 0; for (PointFeature pf : pfc) { if (bbox == null) bbox = new LatLonRect(pf.getLocation().getLatLon(), .001, .001); else bbox.extend(pf.getLocation().getLatLon()); double obsTime = pf.getObservationTime(); minTime = Math.min(minTime, obsTime); maxTime = Math.max(maxTime, obsTime); count++; } if (count == 0) { return new CollectionInfo(null, null, 0, 0); } CalendarDateUnit cdu = dsg.getTimeUnit(); CalendarDateRange dateRange = CalendarDateRange.of(cdu.makeCalendarDate(minTime), cdu.makeCalendarDate(maxTime)); return new CollectionInfo(bbox, dateRange, count, count); }
public static boolean equals(EarthLocation loc1, EarthLocation loc2) { if (loc1 == loc2) { return true; } else if (loc1 == null || loc2 == null) { return false; } if (!loc1.getLatLon().nearlyEquals(loc2.getLatLon(), 1.0e-8)) { return false; } else if (!Misc.nearlyEquals(loc1.getAltitude(), loc2.getAltitude(), 1.0e-8)) { return false; } else if (!Objects.deepEquals(loc1.isMissing(), loc2.isMissing())) { return false; } return true; }
public void writeRecord(double timeCoordValue, CalendarDate obsDate, EarthLocation loc, StructureData sdata) throws IOException { trackBB(loc.getLatLon(), obsDate); StructureDataScalar coords = new StructureDataScalar("Coords"); coords.addMember(timeName, null, null, DataType.DOUBLE, false, timeCoordValue); coords.addMember(latName, null, null, DataType.DOUBLE, false, loc.getLatitude()); coords.addMember(lonName, null, null, DataType.DOUBLE, false, loc.getLongitude()); if (altUnits != null) coords.addMember(altName, null, null, DataType.DOUBLE, false, loc.getAltitude()); StructureDataComposite sdall = new StructureDataComposite(); sdall.add(coords); // coords first so it takes precedence sdall.add(sdata); obsRecno = super.writeStructureData(obsRecno, record, sdall, dataMap); }
public void writeRecord(double timeCoordValue, CalendarDate obsDate, EarthLocation loc, StructureData sdata) throws IOException { trackBB(loc.getLatLon(), obsDate); StructureDataScalar coords = new StructureDataScalar("Coords"); coords.addMember(timeName, null, null, DataType.DOUBLE, timeCoordValue); coords.addMember(latName, null, null, DataType.DOUBLE, loc.getLatitude()); coords.addMember(lonName, null, null, DataType.DOUBLE, loc.getLongitude()); if (altUnits != null) coords.addMember(altName, null, null, DataType.DOUBLE, loc.getAltitude()); StructureDataComposite sdall = new StructureDataComposite(); sdall.add(coords); // coords first so it takes precedence sdall.add(sdata); obsRecno = super.writeStructureData(obsRecno, record, sdall, dataMap); }
for (PointFeature pf : pfc) { checkPointFeature(pf, pfc.getTimeUnit()); if (!bb.contains(pf.getLocation().getLatLon())) System.out.printf(" point not in BB = %s on %s %n", pf.getLocation().getLatLon(), pfc.getName()); int counts = 0; for (PointFeature pf : subset) { LatLonPoint llpt = pf.getLocation().getLatLon(); if (!bb2.contains(llpt)) { System.out.printf(" point not in BB = %s on %s %n", llpt, pfc.getName());
public void writeObsData(PointFeature pf) throws IOException { EarthLocation loc = pf.getLocation(); trackBB(loc.getLatLon(), timeUnit.makeCalendarDate(pf.getObservationTime())); StructureDataScalar coords = new StructureDataScalar("Coords"); coords.addMember(timeName, null, null, DataType.DOUBLE, pf.getObservationTime()); coords.addMember(latName, null, null, DataType.DOUBLE, loc.getLatitude()); coords.addMember(lonName, null, null, DataType.DOUBLE, loc.getLongitude()); if (altUnits != null) coords.addMember(altName, null, null, DataType.DOUBLE, loc.getAltitude()); StructureDataComposite sdall = new StructureDataComposite(); sdall.add(coords); // coords first so it takes precedence sdall.add(pf.getFeatureData()); obsRecno = super.writeStructureData(obsRecno, record, sdall, dataMap); }
public void writeObsData(PointFeature pf) throws IOException { EarthLocation loc = pf.getLocation(); trackBB(loc.getLatLon(), timeUnit.makeCalendarDate(pf.getObservationTime())); StructureDataScalar coords = new StructureDataScalar("Coords"); coords.addMember(timeName, null, null, DataType.DOUBLE, false, pf.getObservationTime()); coords.addMember(latName, null, null, DataType.DOUBLE, false, loc.getLatitude()); coords.addMember(lonName, null, null, DataType.DOUBLE, false, loc.getLongitude()); if (altUnits != null) coords.addMember(altName, null, null, DataType.DOUBLE, false, loc.getAltitude()); StructureDataComposite sdall = new StructureDataComposite(); sdall.add(coords); // coords first so it takes precedence sdall.add(pf.getFeatureData()); obsRecno = super.writeStructureData(obsRecno, record, sdall, dataMap); }