/** * Get a 1DArray for the type and length * * @param type DataType * @param len length * @return the array */ private Array get1DArray(DataType type, int len) { Array varArray = null; if (type.equals(DataType.FLOAT)) { varArray = new ArrayFloat.D1(len); } else if (type.equals(DataType.DOUBLE)) { varArray = new ArrayDouble.D1(len); } else if (type.equals(DataType.INT)) { varArray = new ArrayInt.D1(len); } return varArray; }
/** * Make a station variable * * @param varname variable name * @param firstDim station dimension * @return corresponding variable */ protected Variable makeStationVariable(String varname, Dimension firstDim) { String longName = varname; String unit = null; DataType type = DataType.CHAR; List<Dimension> dims = new ArrayList<Dimension>(); List<Attribute> attrs = new ArrayList<Attribute>(); if (firstDim != null) { dims.add(firstDim); } if (varname.equals(GempakStation.STID)) { longName = "Station identifier"; dims.add(DIM_LEN8); } else if (varname.equals(GempakStation.STNM)) { longName = "WMO station id"; type = DataType.INT; } else if (varname.equals(GempakStation.SLAT)) { longName = "latitude"; unit = "degrees_north"; type = DataType.FLOAT; attrs.add(new Attribute("standard_name", "latitude")); } else if (varname.equals(GempakStation.SLON)) { longName = "longitude"; unit = "degrees_east"; type = DataType.FLOAT; attrs.add(new Attribute("standard_name", "longitude")); } else if (varname.equals(GempakStation.SELV)) { longName = "altitude"; unit = "meter"; type = DataType.FLOAT; attrs.add(new Attribute(CF.POSITIVE, CF.POSITIVE_UP)); attrs.add(new Attribute("standard_name", "station_altitude")); } else if (varname.equals(GempakStation.STAT)) { longName = "state or province"; dims.add(DIM_LEN2); } else if (varname.equals(GempakStation.COUN)) { longName = "country code"; dims.add(DIM_LEN2); } else if (varname.equals(GempakStation.STD2)) { longName = "Extended station id"; dims.add(DIM_LEN4); } else if (varname.equals(GempakStation.SPRI)) { longName = "Station priority"; type = DataType.INT; } else if (varname.equals(GempakStation.SWFO)) { longName = "WFO code"; dims.add(DIM_LEN4); } else if (varname.equals(GempakStation.WFO2)) { longName = "Second WFO code"; dims.add(DIM_LEN4); } Variable v = new Variable(ncfile, null, null, varname); v.setDataType(type); v.addAttribute(new Attribute("long_name", longName)); if (unit != null) { v.addAttribute(new Attribute(CDM.UNITS, unit)); } if (type.equals(DataType.FLOAT)) { v.addAttribute(new Attribute("missing_value", RMISS)); } else if (type.equals(DataType.INT)) { v.addAttribute(new Attribute("missing_value", IMISS)); } if (!attrs.isEmpty()) { for (Attribute attr : attrs) { v.addAttribute(attr); } } if (!dims.isEmpty()) { v.setDimensions(dims); } else { v.setDimensions((String) null); } return v; }