private FeatureType classify () { // now to classify boolean is2Dtime = (rtAxis != null) && (timeOffsetAxis != null || (timeAxis != null && timeAxis.getRank() == 2)); if (is2Dtime) { return FeatureType.FMRC; // LOOK this would allow 2d horiz } boolean is2Dhoriz = isLatLon && (xaxis.getRank() == 2) && (yaxis.getRank() == 2); if (is2Dhoriz) { Set<Dimension> xyDomain = CoordinateSystem.makeDomain(Lists.newArrayList(xaxis, yaxis)); if (timeAxis != null && CoordinateSystem.isSubset(timeAxis.getDimensionsAll(), xyDomain)) return FeatureType.SWATH; // LOOK prob not exactly right else return FeatureType.CURVILINEAR; } // what makes it a grid? // each dimension must have its own coordinate variable Set<Dimension> indDimensions = CoordinateSystem.makeDomain(independentAxes); Set<Dimension> allDimensions = CoordinateSystem.makeDomain(allAxes); if (indDimensions.size() == allDimensions.size()) { return FeatureType.GRID; } // default return FeatureType.COVERAGE; }
public boolean match(CoordinateAxis axis) { if ((outer == null) && (axis.getRank() == 0)) return true; if ((outer != null) && (axis.getRank() == 1) && (outer.equals(axis.getDimension(0)))) return true; // if axis is structure member, try pulling dimension out of parent structure if (axis.getParentStructure() != null) { Structure parent = axis.getParentStructure(); if ((outer != null) && (parent.getRank() == 1) && (outer.equals(parent.getDimension(0)))) return true; } return false; } });
public boolean match(CoordinateAxis axis) { if ((outer == null) && (axis.getRank() == 0)) return true; if ((outer != null) && (axis.getRank() == 1) && (outer.equals(axis.getDimension(0)))) return true; // if axis is structure member, try pulling dimension out of parent structure if (axis.getParentStructure() != null) { Structure parent = axis.getParentStructure(); if ((outer != null) && (parent.getRank() == 1) && (outer.equals(parent.getDimension(0)))) return true; } return false; } });
public boolean match(CoordinateAxis axis) { if ((outer == null) && (axis.getRank() == 0)) return true; if ((outer != null) && (axis.getRank() == 1) && (outer.equals(axis.getDimension(0)))) return true; // if axis is structure member, try pulling dimension out of parent structure if (axis.getParentStructure() != null) { Structure parent = axis.getParentStructure(); if ((outer != null) && (parent.getRank() == 1) && (outer.equals(parent.getDimension(0)))) return true; } return false; } });
@Override public boolean match(CoordinateAxis axis) { return ((axis.getRank() == 2) && outer.equals(axis.getDimension(0)) && inner.equals(axis.getDimension(1))); } });
public boolean match(CoordinateAxis axis) { return ((axis.getRank() == 2) && outer.equals(axis.getDimension(0)) && inner.equals(axis.getDimension(1))); } });
public boolean match(CoordinateAxis axis) { return ((axis.getRank() == 2) && outer.equals(axis.getDimension(0)) && inner.equals(axis.getDimension(1))); } });
private boolean isSwath(java.util.List<CoordinateSystem> csysList) { CoordinateSystem use = null; for (CoordinateSystem csys : csysList) { if (use == null) use = csys; else if (csys.getCoordinateAxes().size() > use.getCoordinateAxes().size()) use = csys; } if (use == null) return false; CoordinateAxis lat = use.getLatAxis(); CoordinateAxis lon = use.getLonAxis(); CoordinateAxis time = use.getTaxis(); if ((lat == null) || (lat.getRank() != 2)) return false; if ((lon == null) || (lon.getRank() != 2)) return false; if ((time == null)) return false; // must have time - otherwise it can be a grid // lat/lon must have the same dimensions if (!lat.getDimension(0).equals(lon.getDimension(0))) return false; if (!lat.getDimension(1).equals(lon.getDimension(1))) return false; Set<Dimension> dims = new HashSet<Dimension>(10); for (Dimension d : lat.getDimensions()) dims.add(d); for (Dimension d : lon.getDimensions()) dims.add(d); // diff with grid - time dimension(s) are a subset of lat/lon dimensions for (Dimension d : time.getDimensions()) { if (!dims.contains(d)) return false; } return true; }
private boolean isSwath(java.util.List<CoordinateSystem> csysList) { CoordinateSystem use = null; for (CoordinateSystem csys : csysList) { if (use == null) use = csys; else if (csys.getCoordinateAxes().size() > use.getCoordinateAxes().size()) use = csys; } if (use == null) return false; CoordinateAxis lat = use.getLatAxis(); CoordinateAxis lon = use.getLonAxis(); CoordinateAxis time = use.getTaxis(); if ((lat == null) || (lat.getRank() != 2)) return false; if ((lon == null) || (lon.getRank() != 2)) return false; if ((time == null)) return false; // must have time - otherwise it can be a grid // lat/lon must have the same dimensions if (!lat.getDimension(0).equals(lon.getDimension(0))) return false; if (!lat.getDimension(1).equals(lon.getDimension(1))) return false; Set<Dimension> dims = new HashSet<Dimension>(10); for (Dimension d : lat.getDimensions()) dims.add(d); for (Dimension d : lon.getDimensions()) dims.add(d); // diff with grid - time dimension(s) are a subset of lat/lon dimensions for (Dimension d : time.getDimensions()) { if (!dims.contains(d)) return false; } return true; }
@Override public boolean match(CoordinateAxis axis) { return ((axis.getRank() == 3) && outer.equals(axis.getDimension(0)) && middle.equals(axis.getDimension(1)) && inner.equals(axis.getDimension(2))); } });
public boolean match(CoordinateAxis axis) { return ((axis.getRank() == 3) && outer.equals(axis.getDimension(0)) && middle.equals(axis.getDimension(1)) && inner.equals(axis.getDimension(2))); } });
public boolean match(CoordinateAxis axis) { return ((axis.getRank() == 3) && outer.equals(axis.getDimension(0)) && middle.equals(axis.getDimension(1)) && inner.equals(axis.getDimension(2))); } });
private void makeHorizRange(GridCoordSystem gcsOrg, ProjectionRect projRect, int horizStride, List<Range> yxRanges) throws InvalidRangeException { if (gcsOrg.getXHorizAxis().getRank() > 1 || gcsOrg.getYHorizAxis().getRank() > 1) { throw new IllegalArgumentException("Coordinate systems with 2D horizontal axis are not supported");
private Element writeAxis(CoordinateAxis axis) { NcMLWriter ncmlWriter = new NcMLWriter(); Element varElem = new Element("axis"); varElem.setAttribute("name", axis.getFullName()); varElem.setAttribute("shape", getShapeString(axis.getShape())); // axis.getDimensionsString()); DataType dt = axis.getDataType(); varElem.setAttribute("type", dt.toString()); AxisType axisType = axis.getAxisType(); if (null != axisType) varElem.setAttribute("axisType", axisType.toString()); // attributes for (Attribute att : axis.getAttributes()) { varElem.addContent(ncmlWriter.makeAttributeElement(att)); } if (axis.getRank() == 1) { try { Element values = ncmlWriter.makeValuesElement(axis, true); varElem.addContent(values); } catch (IOException e) { String message = String.format( "Couldn't read values for %s. Omitting <values> element.", axis.getFullName()); logger.warn(message, e); } } return varElem; }
private Element writeAxis(CoordinateAxis axis) { Element varElem = new Element("axis"); varElem.setAttribute("name", axis.getFullName()); varElem.setAttribute("shape", getShapeString(axis.getShape())); // axis.getDimensionsString()); DataType dt = axis.getDataType(); varElem.setAttribute("type", dt.toString()); AxisType axisType = axis.getAxisType(); if (null != axisType) varElem.setAttribute("axisType", axisType.toString()); // attributes for (Attribute att : axis.getAttributes()) { varElem.addContent(ucar.nc2.ncml.NcMLWriter.writeAttribute(att, "attribute", null)); } if (axis.getRank() == 1) { Element values = ucar.nc2.ncml.NcMLWriter.writeValues(axis, null, true); //values.setAttribute("npts", Long.toString(axis.getSize())); varElem.addContent(values); } return varElem; }
private Element writeAxis(CoordinateAxis axis) { Element varElem = new Element("axis"); varElem.setAttribute("name", axis.getFullName()); varElem.setAttribute("shape", getShapeString(axis.getShape())); // axis.getDimensionsString()); DataType dt = axis.getDataType(); varElem.setAttribute("type", dt.toString()); AxisType axisType = axis.getAxisType(); if (null != axisType) varElem.setAttribute("axisType", axisType.toString()); // attributes for (Attribute att : axis.getAttributes()) { varElem.addContent(ucar.nc2.ncml.NcMLWriter.writeAttribute(att, "attribute", null)); } if (axis.getRank() == 1) { Element values = ucar.nc2.ncml.NcMLWriter.writeValues(axis, null, true); //values.setAttribute("npts", Long.toString(axis.getSize())); varElem.addContent(values); } return varElem; }