public String getName() { return coverage.getFullName(); } public String getLabel() { return coverage.getDescription(); }
public int compareTo(GridDatatype g) { return getFullName().compareTo(g.getFullName()); } }
public int compareTo(GridDatatype g) { return getFullName().compareTo(g.getFullName()); } }
public int compareTo(GridDatatype g) { return getFullName().compareTo(g.getFullName()); } }
private void makeGrib1Vocabulary(List<GridDatatype> grids, PrintStream out) { String stdName; out.println("\n<variables vocabulary='GRIB-1'>"); for (GridDatatype grid : grids) { Attribute att = grid.findAttributeIgnoreCase("GRIB_param_number"); stdName = (att != null) ? att.getNumericValue().toString() : null; out.print(" <variable name='"); out.print(grid.getFullName()); out.print("' vocabulary_name='"); out.print(stdName != null ? stdName : "dunno"); out.print("' units='"); out.print(grid.getUnitsString()); out.println("'/>"); } out.println("</variables>"); }
private void makeGrib1Vocabulary(List<GridDatatype> grids, PrintStream out) { String stdName; out.println("\n<variables vocabulary='GRIB-1'>"); for (GridDatatype grid : grids) { Attribute att = grid.findAttributeIgnoreCase("GRIB_param_number"); stdName = (att != null) ? att.getNumericValue().toString() : null; out.print(" <variable name='"); out.print(grid.getFullName()); out.print("' vocabulary_name='"); out.print(stdName != null ? stdName : "dunno"); out.print("' units='"); out.print(grid.getUnitsString()); out.println("'/>"); } out.println("</variables>"); }
private void makeGrib1Vocabulary(List<GridDatatype> grids, PrintWriter out) { String stdName; out.println("\n<variables vocabulary='GRIB-1'>"); for (GridDatatype grid : grids) { Attribute att = grid.findAttributeIgnoreCase("GRIB_param_number"); stdName = (att != null) ? att.getNumericValue().toString() : null; out.print(" <variable name='"); out.print(grid.getFullName()); out.print("' vocabulary_name='"); out.print(stdName != null ? stdName : "dunno"); out.print("' units='"); out.print(grid.getUnitsString()); out.println("'/>"); } out.println("</variables>"); }
public WcsDataset( GridDataset dataset, String datasetPath ) { this.datasetPath = datasetPath; int pos = datasetPath.lastIndexOf( "/" ); this.datasetName = ( pos > 0 ) ? datasetPath.substring( pos + 1 ) : datasetPath; this.dataset = dataset; this.availableCoverages = new HashMap<String, WcsCoverage>(); // ToDo WCS 1.0PlusPlus - compartmentalize coverage to hide GridDatatype vs GridDataset.Gridset ??? // ToDo WCS 1.0Plus - change FROM coverage for each parameter TO coverage for each coordinate system // This is WCS 1.0 coverage for each parameter for ( GridDatatype curGridDatatype : this.dataset.getGrids() ) { GridCoordSystem gcs = curGridDatatype.getCoordinateSystem(); if ( !gcs.isRegularSpatial() ) continue; this.availableCoverages.put( curGridDatatype.getFullName(), new WcsCoverage( curGridDatatype, this) ); } // ToDo WCS 1.0Plus - change FROM coverage for each parameter TO coverage for each coordinate system // This is WCS 1.1 style coverage for each coordinate system // for ( GridDataset.Gridset curGridSet : this.dataset.getGridsets()) // { // GridCoordSystem gcs = curGridSet.getGeoCoordSystem(); // if ( !gcs.isRegularSpatial() ) // continue; // this.availableCoverages.put( gcs.getName(), curGridSet ); // } }
public int compare(GridDatatype grid1, GridDatatype grid2) { GridCoordSystem gcs1 = grid1.getCoordinateSystem(); GridCoordSystem gcs2 = grid2.getCoordinateSystem(); CoordinateAxis time1 = gcs1.getTimeAxis(); CoordinateAxis time2 = gcs2.getTimeAxis(); int ret = compareAxis(time1, time2); if (ret != 0) return ret; CoordinateAxis vert1 = gcs1.getVerticalAxis(); CoordinateAxis vert2 = gcs2.getVerticalAxis(); ret = compareAxis(vert1, vert2); if (ret != 0) return ret; return grid1.getFullName().compareTo(grid2.getFullName()); }
public int compare(GridDatatype grid1, GridDatatype grid2) { GridCoordSystem gcs1 = grid1.getCoordinateSystem(); GridCoordSystem gcs2 = grid2.getCoordinateSystem(); CoordinateAxis time1 = gcs1.getTimeAxis(); CoordinateAxis time2 = gcs2.getTimeAxis(); int ret = compareAxis(time1, time2); if (ret != 0) return ret; CoordinateAxis vert1 = gcs1.getVerticalAxis(); CoordinateAxis vert2 = gcs2.getVerticalAxis(); ret = compareAxis(vert1, vert2); if (ret != 0) return ret; return grid1.getFullName().compareTo(grid2.getFullName()); }
public int compare(GridDatatype grid1, GridDatatype grid2) { GridCoordSystem gcs1 = grid1.getCoordinateSystem(); GridCoordSystem gcs2 = grid2.getCoordinateSystem(); CoordinateAxis time1 = gcs1.getTimeAxis(); CoordinateAxis time2 = gcs2.getTimeAxis(); int ret = compareAxis(time1, time2); if (ret != 0) return ret; CoordinateAxis vert1 = gcs1.getVerticalAxis(); CoordinateAxis vert2 = gcs2.getVerticalAxis(); ret = compareAxis(vert1, vert2); if (ret != 0) return ret; return grid1.getFullName().compareTo(grid2.getFullName()); }
public String getWcs1_0CrsId( GridDatatype gridDatatype, GridDataset gridDataset ) throws IllegalArgumentException { gridDataset.getTitle(); gridDatatype.getFullName(); StringBuilder buf = new StringBuilder(); Attribute gridMappingAtt = gridDatatype.findAttributeIgnoreCase( CF.GRID_MAPPING ); String gridMapping = gridMappingAtt.getStringValue(); Variable gridMapVar = gridDataset.getNetcdfFile().getRootGroup().findVariable(gridMapping); Attribute gridMappingNameAtt = gridMapVar.findAttributeIgnoreCase( CF.GRID_MAPPING_NAME ); String gridMappingName = gridMappingNameAtt.getStringValue(); buf.append( "EPSG:" ).append( ProjectionStandardsInfo.getProjectionByCfName( gridMappingName)); return buf.toString(); } }
public String getWcs1_0CrsId(GridDatatype gridDatatype, GridDataset gridDataset) throws IllegalArgumentException { gridDataset.getTitle(); gridDatatype.getFullName(); StringBuilder buf = new StringBuilder(); Attribute gridMappingAtt = gridDatatype.findAttributeIgnoreCase(CF.GRID_MAPPING); if (gridMappingAtt != null) { String gridMapping = gridMappingAtt.getStringValue(); Variable gridMapVar = gridDataset.getNetcdfFile().getRootGroup().findVariable(gridMapping); if (gridMapVar != null) { Attribute gridMappingNameAtt = gridMapVar.findAttributeIgnoreCase(CF.GRID_MAPPING_NAME); if (gridMappingNameAtt != null) buf.append("EPSG:").append(ProjectionStandardsInfo.getProjectionByCfName(gridMappingNameAtt.getStringValue())); } } return buf.toString(); } }
public String getWcs1_0CrsId(GridDatatype gridDatatype, GridDataset gridDataset) throws IllegalArgumentException { gridDataset.getTitle(); gridDatatype.getFullName(); StringBuilder buf = new StringBuilder(); Attribute gridMappingAtt = gridDatatype.findAttributeIgnoreCase(CF.GRID_MAPPING); if (gridMappingAtt != null) { String gridMapping = gridMappingAtt.getStringValue(); Variable gridMapVar = gridDataset.getNetcdfFile().getRootGroup().findVariable(gridMapping); if (gridMapVar != null) { Attribute gridMappingNameAtt = gridMapVar.findAttributeIgnoreCase(CF.GRID_MAPPING_NAME); if (gridMappingNameAtt != null) buf.append("EPSG:").append(ProjectionStandardsInfo.getProjectionByCfName(gridMappingNameAtt.getStringValue())); } } return buf.toString(); } }
public WcsRangeField( GridDatatype gridDatatype ) { if ( gridDatatype == null) throw new IllegalArgumentException( "Range field must be non-null."); this.gridDatatype = gridDatatype; this.name = this.gridDatatype.getFullName(); this.label = this.gridDatatype.getInfo(); this.description = this.gridDatatype.getDescription(); this.datatypeString = this.gridDatatype.getDataType().toString(); this.unitsString = this.gridDatatype.getUnitsString(); this.validMin = this.gridDatatype.getVariable().getValidMin(); this.validMax = this.gridDatatype.getVariable().getValidMax(); // ToDo GeoGrids only handle scalar range fields. (???) axes = Collections.emptyList(); }
private Element writeGrid(GridDatatype grid) { Element varElem = new Element("grid"); varElem.setAttribute("name", grid.getFullName()); String desc = grid.getDescription() != null ? grid.getDescription() : "No description"; varElem.setAttribute("desc", desc); StringBuilder buff = new StringBuilder(); List dims = grid.getDimensions(); for (int i = 0; i < dims.size(); i++) { Dimension dim = (Dimension) dims.get(i); if (i > 0) buff.append(" "); if (dim.isShared()) buff.append(dim.getShortName()); else buff.append(dim.getLength()); } if (buff.length() > 0) varElem.setAttribute("shape", buff.toString()); DataType dt = grid.getDataType(); if (dt != null) varElem.setAttribute("type", dt.toString()); //GridCoordSystem cs = grid.getCoordinateSystem(); //varElem.setAttribute("coordSys", cs.getName()); // attributes for (ucar.nc2.Attribute att : grid.getAttributes()) { varElem.addContent(ucar.nc2.ncml.NcMLWriter.writeAttribute(att, "attribute", null)); } return varElem; }
public static Count read(String filename) { long start = System.currentTimeMillis(); System.out.println("\n\nReading File " + filename); Count allCount = new Count(); try (GridDataset gds = GridDataset.open(filename)) { for (GridDatatype gdt : gds.getGrids()) { Count count = read(gdt); System.out.printf("%80s == %d/%d%n", gdt.getFullName(), count.nmiss, count.nread); allCount.add(count); } long took = System.currentTimeMillis() - start; float r = ((float) took) / allCount.nread; System.out.printf("%n%80s == %d/%d%n", "total", allCount.nmiss, allCount.nread); System.out.printf("%n that took %d secs total, %f msecs per record%n", took / 1000, r); } catch (IOException ioe) { ioe.printStackTrace(); Formatter out = new Formatter(System.out); GribCdmIndex.gribCollectionCache.showCache(out); } return allCount; }
@Test public void testGrid() { GridDatatype grid = gds.findGridDatatype("T"); assert null != grid; assert grid.getFullName().equals("T"); assert grid.getRank() == 3; assert grid.getDataType() == DataType.DOUBLE; GridCoordSystem gcsys = grid.getCoordinateSystem(); assert gcsys.getYHorizAxis() != null; assert gcsys.getXHorizAxis() != null; assert gcsys.getTimeAxis() != null; CoordinateAxis1DTime taxis = gcsys.getTimeAxis1D(); assert taxis.getDataType() == DataType.STRING : taxis.getDataType(); List names = taxis.getNames(); java.util.Date[] dates = taxis.getTimeDates(); assert dates != null; for (int i = 0; i < dates.length; i++) { Date d = dates[i]; ucar.nc2.util.NamedObject name = (ucar.nc2.util.NamedObject) names.get(i); logger.debug("{} == {}", name.getName(), d); } }
@Test public void testReadData() throws IOException { GridDatatype g = gds.findGridDatatype("IR_WV"); assert null != g; assert g.getFullName().equals("IR_WV"); assert g.getRank() == 3; assert g.getShape()[0] == ntimes; assert g.getShape()[1] == 1008; assert g.getShape()[2] == 1536; assert g.getDataType() == DataType.USHORT : g.getDataType(); GridCoordSystem gsys = g.getCoordinateSystem(); assert gsys.getXHorizAxis() != null; assert gsys.getYHorizAxis() != null; assert gsys.getTimeAxis() != null; assert gsys.getVerticalAxis() == null; assert gsys.getProjection() != null; Array data = g.readVolumeData(0); assert data.getRank() == 2; assert data.getShape()[0] == 1008; assert data.getShape()[1] == 1536; assert data.getElementType() == short.class; } }
@Test public void testEcmwfEns() throws Exception { String filename = TestDir.cdmUnitTestDir + "ft/grid/ensemble/jitka/ECME_RIZ_201201101200_00600_GB"; System.out.printf("Open %s%n", filename); try (NetcdfFile datafile = NetcdfFile.open(filename)) { NetcdfDataset netcdfDataset = new NetcdfDataset(datafile); GridDataset gridDataset = new GridDataset(netcdfDataset); String requiredName = "Total_precipitation_surface"; GridDatatype gridDatatype = gridDataset.findGridDatatype(requiredName); assertNotNull(gridDatatype); assertEquals(requiredName, gridDatatype.getFullName()); Dimension ensDimension = gridDatatype.getEnsembleDimension(); assertNotNull(ensDimension); //fails in 4.3 , null returned assertEquals(51, ensDimension.getLength()); // is 2 in 4.2, however it should be 51 (incl. control forecast) Dimension timeDimension = gridDatatype.getTimeDimension(); assertEquals(1, timeDimension.getLength()); //ok in both versions Dimension xDimension = gridDatatype.getXDimension(); assertEquals(31, xDimension.getLength()); //ok in both versions Dimension yDimension = gridDatatype.getYDimension(); assertEquals(21, yDimension.getLength()); //ok in both versions } }