public CoverageCoordSys findCoordSys(String csysName) { for (CoverageCoordSys csys : coordSys) if (csys.getName().equalsIgnoreCase(csysName)) return csys; return null; }
public CoverageCoordSys findCoordSys(String name) { for (CoverageCoordSys gcs : coordSys) if (gcs.getName().equalsIgnoreCase(name)) return gcs; return null; }
public CoverageCoordAxis getXAxis() { CoverageCoordAxis result = getAxis(AxisType.GeoX); if (result == null) result = getAxis(AxisType.Lon); if (result == null) throw new IllegalArgumentException("Cant find X axis for coordsys " + getName()); return result; }
public CoverageCoordAxis getYAxis() { CoverageCoordAxis result = getAxis(AxisType.GeoY); if (result == null) result = getAxis(AxisType.Lat); if (result == null) throw new IllegalArgumentException("Cant find Y axis for coordsys " + getName()); return result; }
public CoverageCoordSys(CoverageCoordSys from) { this.name = from.getName(); this.axisNames = from.getAxisNames(); this.transformNames = from.getTransformNames(); this.type = from.getCoverageType(); }
public Coverage(Coverage from, CoverageCoordSys coordSysSubset) { this.name = from.getName(); this.dataType = from.getDataType(); this.atts = from.atts; this.units = from.getUnitsString(); this.description = from.getDescription(); this.coordSysName = (coordSysSubset != null) ? coordSysSubset.getName() : from.coordSysName; this.reader = from.reader; this.user = from.user; }
private List<CoordSysSet> wireObjectsTogether(List<Coverage> coverages) { for (CoverageCoordAxis axis : coordAxes) axisMap.put(axis.getName(), axis); for (CoverageCoordAxis axis : coordAxes) axis.setDataset(this); // wire dependencies Map<String, CoordSysSet> map = new HashMap<>(); for (Coverage coverage : coverages) { coverageMap.put(coverage.getName(), coverage); CoordSysSet gset = map.get(coverage.getCoordSysName()); // duplicates get eliminated here if (gset == null) { CoverageCoordSys ccsys = findCoordSys(coverage.getCoordSysName()); if (ccsys == null) { throw new IllegalStateException("Cant find "+coverage.getCoordSysName()); } gset = new CoordSysSet(ccsys); // must use findByName because objects arent wired up yet map.put(coverage.getCoordSysName(), gset); gset.getCoordSys().setDataset(this); // wire dataset into coordSys } gset.addCoverage(coverage); coverage.setCoordSys(gset.getCoordSys()); // wire coordSys into coverage } // sort the coordsys sets List<CoordSysSet> csets = new ArrayList<>(map.values()); Collections.sort(csets, (o1, o2) -> o1.getCoordSys().getName().compareTo(o2.getCoordSys().getName())); return csets; }
for (GribCollectionImmutable.VariableIndex v : vars) { CoverageCoordSys sys = makeCoordSys(v, transforms, coord2axisMap); coordSysSet.put(sys.getName(), sys); // duplicates get eliminated here
CdmrFeatureProto.CoordSys.Builder encodeCoordSys(CoverageCoordSys gcs) { CdmrFeatureProto.CoordSys.Builder builder = CdmrFeatureProto.CoordSys.newBuilder(); builder.setName(gcs.getName()); builder.setCoverageType(convertCoverageType(gcs.getCoverageType())); for (String axis : gcs.getAxisNames()) builder.addAxisNames(axis); for (String gct : gcs.getTransformNames()) builder.addTransformNames(gct); return builder; }
private Element writeCoverageSet(CoverageCoordSys cs, List<Coverage> grids, ProjectionRect rect) { Element csElem = new Element("gridSet"); csElem.setAttribute("name", cs.getName());
public CdmrFeatureProto.GeoReferencedArray.Builder encodeGeoReferencedArray(GeoReferencedArray geoArray, boolean deflate) { CdmrFeatureProto.GeoReferencedArray.Builder builder = CdmrFeatureProto.GeoReferencedArray.newBuilder(); builder.setCoverageName(geoArray.getCoverageName()); builder.setDataType(NcStream.convertDataType(geoArray.getDataType())); builder.setVersion(3); // set to >= 3 for proto3 builder.setBigend(ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN); int shape[] = geoArray.getData().getShape(); for (int aShape : shape) builder.addShape(aShape); CoverageCoordSys csys = geoArray.getCoordSysForData(); for (String axisName : csys.getAxisNames()) // geoArray.getAxisNames()) // LOOK could use csys.getAxisNames(), but order may be incorrect, must match shape builder.addAxisName(axisName); builder.setCoordSysName(csys.getName()); if (deflate) { builder.setCompress(NcStreamProto.Compress.DEFLATE); long uncompressedSize = geoArray.getData().getSizeBytes(); builder.setUncompressedSize(uncompressedSize); } else { builder.setPrimdata(NcStreamDataCol.copyArrayToByteString( geoArray.getData())); } return builder; }