private GribCollectionProto.Variable writeVariableProto(TimePartition.VariableIndexPartitioned v) throws IOException { GribCollectionProto.Variable.Builder b = GribCollectionProto.Variable.newBuilder(); b.setDiscipline(v.discipline); b.setCategory(v.category); b.setParameter(v.parameter); b.setLevelType(v.levelType); b.setIsLayer(v.isLayer); b.setIntervalType(v.intvType); if (v.intvName != null) b.setIntvName(v.intvName); b.setCdmHash(v.cdmHash); b.setRecordsPos(0); b.setRecordsLen(0); b.setTimeIdx(v.partTimeCoordIdx); // note if (v.vertIdx >= 0) b.setVertIdx(v.vertIdx); if (v.ensIdx >= 0) b.setEnsIdx(v.ensIdx); if (v.ensDerivedType >= 0) b.setEnsDerivedType(v.ensDerivedType); // derived type (table 4.7) if (v.probabilityName != null) b.setProbabilityName(v.probabilityName); if (v.probType >= 0) b.setProbabilityType(v.probType); for (int idx : v.groupno) b.addGroupno(idx); for (int idx : v.varno) b.addVarno(idx); for (int idx : v.flag) b.addFlag(idx); return b.build(); }
private GribCollectionProto.Variable writeVariableProto( Grib2Rectilyser rect, Grib2Rectilyser.VariableBag vb) throws IOException { GribCollectionProto.Variable.Builder b = GribCollectionProto.Variable.newBuilder(); b.setDiscipline(vb.first.getDiscipline()); Grib2Pds pds = vb.first.getPDS(); b.setCategory(pds.getParameterCategory()); b.setParameter(pds.getParameterNumber()); b.setLevelType(pds.getLevelType1()); b.setIsLayer(Grib2Utils.isLayer(vb.first)); b.setIntervalType(pds.getStatisticalProcessType()); b.setCdmHash(vb.cdmHash); b.setRecordsPos(vb.pos); b.setRecordsLen(vb.length); b.setTimeIdx(vb.timeCoordIndex); if (vb.vertCoordIndex >= 0) b.setVertIdx(vb.vertCoordIndex); if (vb.ensCoordIndex >= 0) b.setEnsIdx(vb.ensCoordIndex); if (pds.isEnsembleDerived()) { Grib2Pds.PdsEnsembleDerived pdsDerived = (Grib2Pds.PdsEnsembleDerived) pds; b.setEnsDerivedType(pdsDerived.getDerivedForecastType()); // derived type (table 4.7) } if (pds.isProbability()) { Grib2Pds.PdsProbability pdsProb = (Grib2Pds.PdsProbability) pds; b.setProbabilityName(pdsProb.getProbabilityName()); b.setProbabilityType(pdsProb.getProbabilityType()); } if (pds.isInterval()) { b.setIntvName(rect.getTimeIntervalName(vb.timeCoordIndex)); } return b.build(); }