/** * Get a {@link Variable} by name. * * @param varName the name of the {@link Variable} to pick. * @return the variable or <code>null</code>. */ public Variable getVariableByName(final String varName) { final List<Variable> varList = dataset.getVariables(); for (Variable var : varList) { if (var.getFullName().equals(varName)) return var; } return null; }
/** Look for a Coordinate Reference System */ private CoordinateReferenceSystem lookForCrs( CoordinateReferenceSystem crs, Attribute gridMappingAttribute, Variable var) throws FactoryException { if (gridMappingAttribute != null) { String gridMappingName = gridMappingAttribute.getStringValue(); if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine("The variable refers to gridMapping: " + gridMappingName); } Variable mapping = dataset.findVariable(null, gridMappingName); if (mapping != null) { CoordinateReferenceSystem localCrs = NetCDFProjection.parseProjection(mapping); if (localCrs != null) { // lookup for a custom EPSG if any crs = NetCDFProjection.lookupForCustomEpsg(localCrs); } } else if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.warning( "The specified variable " + var.getFullName() + " declares a gridMapping = " + gridMappingName + " but that mapping doesn't exist."); } } return crs; } }
return false; return isVariableAccepted(var.getFullName(), CheckType.NONE); } else if (checkType == CheckType.ONLYGEOGRIDS) { List<Dimension> dimensions = var.getDimensions(); return false; return isVariableAccepted(var.getFullName(), CheckType.NONE); } else { return isVariableAccepted(var.getFullName(), checkType);
@Override public String toString() { return "ParsedSectionSpec{" + "v=" + v.getFullName() + ", section=" + section + ", child=" + child + '}'; } }
protected VarProcess findCoordinateAxis(String name) { if (name == null) return null; for (VarProcess vp : varList) { if (name.equals(vp.v.getFullName()) && (vp.isCoordinateVariable || vp.isCoordinateAxis)) return vp; } return null; }
protected VarProcess findCoordinateAxis(String name) { if (name == null) return null; for (VarProcess vp : varList) { if (name.equals(vp.v.getFullName()) && (vp.isCoordinateVariable || vp.isCoordinateAxis)) return vp; } return null; }
/** * Set the Structure to wrap. * * @param orgVar original Variable, must be a Structure */ public void setOriginalVariable(ucar.nc2.Variable orgVar) { if (!(orgVar instanceof Structure)) throw new IllegalArgumentException("StructureDS must wrap a Structure; name=" + orgVar.getFullName()); this.orgVar = (Structure) orgVar; }
/** Add a CoordinateSystem to the dataset. */ public void addCoordinateSystem( CoordinateSystem cs){ if (cs == null) throw new RuntimeException("Attempted to add null CoordinateSystem to var " + forVar.getFullName()); if (coordSys == null) coordSys = new ArrayList<CoordinateSystem>(5); coordSys.add(cs); }
public void writeNonRecordData(Variable v, DataOutputStream stream, Array data) throws IOException { Vinfo vinfo = vinfoMap.get(v); if (debugWriteData) System.out.println("Write " + v.getFullName() + " at filePos= " + filePos + " vinfo.offset= " + vinfo.offset); if (filePos != vinfo.offset) throw new IllegalStateException(); filePos += writeData(v, stream, data); if (vinfo.pad > 0) { byte[] dummy = new byte[vinfo.pad]; stream.write(dummy); filePos += vinfo.pad; } }
public void writeNonRecordData(Variable v, DataOutputStream stream, Array data) throws IOException { Vinfo vinfo = vinfoMap.get(v); if (debugWriteData) System.out.println("Write " + v.getFullName() + " at filePos= " + filePos + " vinfo.offset= " + vinfo.offset); if (filePos != vinfo.offset) throw new IllegalStateException(); filePos += writeData(v, stream, data); if (vinfo.pad > 0) { byte[] dummy = new byte[vinfo.pad]; stream.write(dummy); filePos += vinfo.pad; } }
private String makeTimeRange( Date start, Date end) { double startValue = timeUnit.makeValue(start); double endValue = timeUnit.makeValue(end); return timeVar.getFullName()+">="+startValue+"&"+ // LOOK timeVar.getFullName()+"<="+endValue; }
private void dumpVariables(List<Variable> vars, PrintStream out) { for (Variable v : vars) { out.print(" " + v.getFullName() + " " + v.getClass().getName()); // +" "+Integer.toHexString(v.hashCode())); if (v instanceof CoordinateAxis) out.println(" " + ((CoordinateAxis) v).getAxisType()); else out.println(); if (v instanceof Structure) dumpVariables(((Structure) v).getVariables(), out); } }
public Array readData(ucar.nc2.Variable v2, Section section) throws IOException, InvalidRangeException { H5header.Vinfo vinfo = (H5header.Vinfo) v2.getSPobject(); if (debugRead) System.out.printf("%s read %s%n", v2.getFullName(), section); return readData(v2, vinfo.dataPos, section); }
private void addMembersToStructure(Group g, Structure s, Vinfo parentVinfo, MessageDatatype mdt) throws IOException { for (StructureMember m : mdt.members) { Variable v = makeVariableMember(g, s, m.name, m.offset, m.mdt); if (v != null) { s.addMemberVariable(v); if (debug1) debugOut.println(" made Member Variable " + v.getFullName() + "\n" + v); } } }
public Array readData(ucar.nc2.Variable v2, Section section) throws IOException, InvalidRangeException { H5header.Vinfo vinfo = (H5header.Vinfo) v2.getSPobject(); if (debugRead) System.out.printf("%s read %s%n", v2.getFullName(), section); return readData(v2, vinfo.dataPos, section); }
public CoordinateTransform makeCoordinateTransform(NetcdfDataset ds, Variable ctv) { CoordinateTransform rs = new VerticalCT("sigma-" + ctv.getFullName(), conventionName, VerticalCT.Type.Sigma, this); rs.addParameter(new Parameter("formula", "pressure(x,y,z) = ptop + sigma(z)*(surfacePressure(x,y)-ptop)")); if (!addParameter2(rs, AtmosSigma.PS, ds, ctv, "PS_var", false)) return null; if (!addParameter2(rs, AtmosSigma.SIGMA, ds, ctv, "B_var", false)) return null; if (!addParameter2(rs, AtmosSigma.PTOP, ds, ctv, "P0_var", false)) return null; parseInfo.format("CSMConvention made SigmaCT %s\n", ctv.getFullName()); return rs; }
public CoordinateTransform makeCoordinateTransform(NetcdfDataset ds, Variable ctv) { CoordinateTransform rs = new VerticalCT(ctv.getFullName(), getTransformName(), VerticalCT.Type.HybridSigmaPressure, this); rs.addParameter(new Parameter("formula", "pressure(x,y,z) = a(z)*p0 + b(z)*surfacePressure(x,y)")); if (!addParameter2(rs, HybridSigmaPressure.PS, ds, ctv, "PS_var", false)) return null; if (!addParameter2(rs, HybridSigmaPressure.A, ds, ctv, "A_var", false)) return null; if (!addParameter2(rs, HybridSigmaPressure.B, ds, ctv, "B_var", false)) return null; if (!addParameter2(rs, HybridSigmaPressure.P0, ds, ctv, "P0_var", false)) return null; parseInfo.format("CSMConvention made SigmaPressureCT %s\n",ctv.getFullName()); return rs; }
public CoordinateTransform makeCoordinateTransform(NetcdfDataset ds, Variable ctv) { CoordinateTransform rs = new VerticalCT(ctv.getFullName(), getTransformName(), VerticalCT.Type.HybridSigmaPressure, this); rs.addParameter(new Parameter("formula", "pressure(x,y,z) = a(z)*p0 + b(z)*surfacePressure(x,y)")); if (!addParameter2(rs, HybridSigmaPressure.PS, ds, ctv, "PS_var", false)) return null; if (!addParameter2(rs, HybridSigmaPressure.A, ds, ctv, "A_var", false)) return null; if (!addParameter2(rs, HybridSigmaPressure.B, ds, ctv, "B_var", false)) return null; if (!addParameter2(rs, HybridSigmaPressure.P0, ds, ctv, "P0_var", false)) return null; parseInfo.format("CSMConvention made SigmaPressureCT %s%n",ctv.getFullName()); return rs; }
private void compareVariableData(Variable var1, Variable var2, boolean showCompare, boolean justOne) throws IOException { Array data1 = var1.read(); Array data2 = var2.read(); if (showCompare) f.format(" compareArrays %s unlimited=%s size=%d%n", var1.getNameAndDimensions(), var1.isUnlimited(), data1.getSize()); compareData(var1.getFullName(), data1, data2, justOne); if (showCompare) f.format(" ok%n"); }
void addVariableAsMember(NetcdfDataset ds, String scalarVariableName) throws IOException { if (scalarVariableName == null) return; Variable v = ds.findVariable(scalarVariableName); if (v == null) return; StructureMembers.Member m = this.members.addMember(v.getFullName(), null, null, v.getDataType(), v.getShape()); setMemberData(m, v.read()); } }