private String tryGrid(VariableEnhanced v) { Formatter buff = new Formatter(); buff.format("%s:", v.getFullName()); List<CoordinateSystem> csList = v.getCoordinateSystems(); if (csList.size() == 0) buff.format(" No Coord System found"); else { for (CoordinateSystem cs : csList) { buff.format("%s:", cs.getName()); if (GridCoordSys.isGridCoordSys(buff, cs, v)) { buff.format("GRID OK%n"); } else { buff.format(" NOT GRID"); } } } return buff.toString(); }
public VariableBean(VariableEnhanced v) { this.ve = v; setName(v.getFullName()); setDescription(v.getDescription()); setUnits(v.getUnitsString()); // collect dimensions StringBuilder lens = new StringBuilder(); StringBuilder names = new StringBuilder(); java.util.List dims = v.getDimensions(); for (int j = 0; j < dims.size(); j++) { ucar.nc2.Dimension dim = (ucar.nc2.Dimension) dims.get(j); if (j > 0) { lens.append(","); names.append(","); } String name = dim.isShared() ? dim.getShortName() : "anon"; names.append(name); lens.append(dim.getLength()); } setDims(names.toString()); setShape(lens.toString()); StringBuilder buff = new StringBuilder(); List<CoordinateSystem> csList = v.getCoordinateSystems(); for (CoordinateSystem cs : csList) { if (firstCoordSys == null) firstCoordSys = cs; else buff.append("; "); buff.append(cs.getName()); Formatter gridBuff = new Formatter(); if (GridCoordSys.isGridCoordSys(gridBuff, cs, v)) { addDataType("grid"); } /* else if (PointDatasetDefaultHandler.isPointFeatureDataset(ds)) { addDataType("point"); } */ } setCoordSys(buff.toString()); }
public CoordinateSystemBean(CoordinateSystem cs) { this.coordSys = cs; setCoordSys(cs.getName()); setGeoXY(cs.isGeoXY()); setLatLon(cs.isLatLon()); setProductSet(cs.isProductSet()); setRegular(cs.isRegular()); setDomainRank(cs.getDomain().size()); setRangeRank(cs.getCoordinateAxes().size()); coverageType = CoverageCSFactory.describe(null, cs); if (GridCoordSys.isGridCoordSys(parseInfo, cs, null)) { addDataType("grid"); } if (RadialCoordSys.isRadialCoordSys(parseInfo, cs)) { addDataType("radial"); } StringBuilder buff = new StringBuilder(); List ctList = cs.getCoordinateTransforms(); for (int i = 0; i < ctList.size(); i++) { CoordinateTransform ct = (CoordinateTransform) ctList.get(i); if (i > 0) buff.append(" "); buff.append(ct.getTransformType()); if (ct instanceof VerticalCT) buff.append("(").append(((VerticalCT) ct).getVerticalTransformType()).append(")"); if (ct instanceof ProjectionCT) { ProjectionCT pct = (ProjectionCT) ct; if (pct.getProjection() != null) { buff.append("(").append(pct.getProjection().getClassName()).append(")"); } } } setCoordTransforms(buff.toString()); }
/** * Create a new GeoGrid that is a logical subset of this GeoGrid. * * @param t_range subset the time dimension, or null if you want all of it * @param z_range subset the vertical dimension, or null if you want all of it * @param bbox a lat/lon bounding box, or null if you want all x,y * @param z_stride use only if z_range is null, then take all z with this stride (1 means all) * @param y_stride use this stride on the y coordinate (1 means all) * @param x_stride use this stride on the x coordinate (1 means all) * @return subsetted GeoGrid * @throws InvalidRangeException if bbox does not intersect GeoGrid */ public GeoGrid subset( Range t_range, Range z_range, LatLonRect bbox, int z_stride, int y_stride, int x_stride) throws InvalidRangeException { if ((z_range == null) && (z_stride > 1)) { Dimension zdim = getZDimension(); if (zdim != null) z_range = new Range(0, zdim.getLength() - 1, z_stride); } Range y_range = null, x_range = null; if (bbox != null) { List yx_ranges = gcs.getRangesFromLatLonRect(bbox); y_range = (Range) yx_ranges.get(0); x_range = (Range) yx_ranges.get(1); } if (y_stride > 1) { if (y_range == null) { Dimension ydim = getYDimension(); y_range = new Range(0, ydim.getLength() - 1, y_stride); } else { y_range = new Range(y_range.first(), y_range.last(), y_stride); } } if (x_stride > 1) { if (x_range == null) { Dimension xdim = getXDimension(); x_range = new Range(0, xdim.getLength() - 1, x_stride); } else { x_range = new Range(x_range.first(), x_range.last(), x_stride); } } return subset(t_range, z_range, y_range, x_range); }
/** * Constructor. * * @param dataset belongs to this dataset * @param dsvar wraps this Variable * @param gcs has this grid coordinate system */ public GeoGrid(GridDataset dataset, VariableDS dsvar, GridCoordSys gcs) { this.dataset = dataset; this.vs = dsvar; this.gcs = gcs; CoordinateAxis xaxis = gcs.getXHorizAxis(); if (xaxis instanceof CoordinateAxis1D) { xDimOrgIndex = findDimension(gcs.getXHorizAxis().getDimension(0)); yDimOrgIndex = findDimension(gcs.getYHorizAxis().getDimension(0)); } else { // 2D case yDimOrgIndex = findDimension(gcs.getXHorizAxis().getDimension(0)); xDimOrgIndex = findDimension(gcs.getXHorizAxis().getDimension(1)); } if (gcs.getVerticalAxis() != null) zDimOrgIndex = findDimension(gcs.getVerticalAxis().getDimension(0)); if (gcs.getTimeAxis() != null) { if (gcs.getTimeAxis1D() != null) tDimOrgIndex = findDimension(gcs.getTimeAxis1D().getDimension(0)); else tDimOrgIndex = findDimension(gcs.getTimeAxis().getDimension(1)); } if (gcs.getEnsembleAxis() != null) eDimOrgIndex = findDimension(gcs.getEnsembleAxis().getDimension(0)); if (gcs.getRunTimeAxis() != null) rtDimOrgIndex = findDimension(gcs.getRunTimeAxis().getDimension(0)); // construct canonical dimension list int count = 0; this.mydims = new ArrayList<Dimension>(); if ((rtDimOrgIndex >= 0) && (rtDimOrgIndex != tDimOrgIndex)) { mydims.add(dsvar.getDimension(rtDimOrgIndex)); rtDimNewIndex = count++; } if (eDimOrgIndex >= 0) { mydims.add(dsvar.getDimension(eDimOrgIndex)); eDimNewIndex = count++; } if (tDimOrgIndex >= 0) { mydims.add(dsvar.getDimension(tDimOrgIndex)); tDimNewIndex = count++; } if (zDimOrgIndex >= 0) { mydims.add(dsvar.getDimension(zDimOrgIndex)); zDimNewIndex = count++; } if (yDimOrgIndex >= 0) { mydims.add(dsvar.getDimension(yDimOrgIndex)); yDimNewIndex = count++; } if (xDimOrgIndex >= 0) { mydims.add(dsvar.getDimension(xDimOrgIndex)); xDimNewIndex = count; } }
/** @return ArrayList of thredds.util.NamedObject, from the GridCoordSys. */ public List<NamedObject> getTimes() { return gcs.getTimes(); }
/** @return ArrayList of thredds.util.NamedObject, from the GridCoordSys. */ public List<NamedObject> getLevels() { return gcs.getLevels(); }
/** get the Projection. */ public ProjectionImpl getProjection() { return gcs.getProjection(); }