private String makeCoordinatesAttribute(GridCoordSystem gcs, String timeDimName) { Formatter sb = new Formatter(); if (gcs.getXHorizAxis() != null) sb.format("%s ", gcs.getXHorizAxis().getFullName()); if (gcs.getYHorizAxis() != null) sb.format("%s ", gcs.getYHorizAxis().getFullName()); if (gcs.getVerticalAxis() != null) sb.format("%s ", gcs.getVerticalAxis().getFullName()); sb.format("%s ", timeDimName); return sb.toString(); }
public static void main(String[] args) throws IOException { GridDataset gds = ucar.nc2.dt.grid.GridDataset.open(args[0]); ucar.nc2.dt.GridDatatype grid = gds.findGridDatatype( args[1]); ucar.nc2.dt.GridCoordSystem gcs = grid.getCoordinateSystem(); CoordinateAxis xAxis = gcs.getXHorizAxis(); CoordinateAxis yAxis = gcs.getXHorizAxis(); CoordinateAxis1D zAxis = gcs.getVerticalAxis(); // may be null if (gcs.hasTimeAxis1D()) { CoordinateAxis1D tAxis = gcs.getTimeAxis1D(); } else if (gcs.hasTimeAxis()) { CoordinateAxis tAxis = gcs.getTimeAxis(); } } }
private void makeHorizRange(GridCoordSystem gcsOrg, ProjectionRect projRect, int horizStride, List<Range> yxRanges) throws InvalidRangeException { if (gcsOrg.getXHorizAxis().getRank() > 1 || gcsOrg.getYHorizAxis().getRank() > 1) { throw new IllegalArgumentException("Coordinate systems with 2D horizontal axis are not supported"); CoordinateAxis1D xAxis = (CoordinateAxis1D) gcsOrg.getXHorizAxis(); double[] xCoords = xAxis.getCoordValues();
public static void test2() throws IOException { String filename = "C:/data/fmrc/apex_fmrc/Run_20091025_0000.nc"; GridDataset gds = GridDataset.open(filename); GeoGrid grid = gds.findGridByName("temp"); GridCoordSystem gcs = grid.getCoordinateSystem(); CoordinateAxis lonAxis = gcs.getXHorizAxis(); assert lonAxis instanceof CoordinateAxis2D; CoordinateAxis latAxis = gcs.getYHorizAxis(); assert latAxis instanceof CoordinateAxis2D; GridCoordinate2D g2d = new GridCoordinate2D((CoordinateAxis2D) latAxis, (CoordinateAxis2D) lonAxis); doOne(g2d, 40.166959,-73.954234); gds.close(); }
public static void test3() throws IOException { String filename = testfilename; GridDataset gds = GridDataset.open(filename); GeoGrid grid = gds.findGridByName("Sea_Surface_Height_Relative_to_Geoid_surface"); GridCoordSystem gcs = grid.getCoordinateSystem(); CoordinateAxis lonAxis = gcs.getXHorizAxis(); assert lonAxis instanceof CoordinateAxis2D; CoordinateAxis latAxis = gcs.getYHorizAxis(); assert latAxis instanceof CoordinateAxis2D; GridCoordinate2D g2d = new GridCoordinate2D((CoordinateAxis2D) latAxis, (CoordinateAxis2D) lonAxis); doOne(g2d, -15.554099426977835, -0.7742870290336263); gds.close(); }
public static void test2() throws IOException { String filename = "C:/data/fmrc/apex_fmrc/Run_20091025_0000.nc"; GridDataset gds = GridDataset.open(filename); GeoGrid grid = gds.findGridByName("temp"); GridCoordSystem gcs = grid.getCoordinateSystem(); CoordinateAxis lonAxis = gcs.getXHorizAxis(); assert lonAxis instanceof CoordinateAxis2D; CoordinateAxis latAxis = gcs.getYHorizAxis(); assert latAxis instanceof CoordinateAxis2D; GridCoordinate2D g2d = new GridCoordinate2D((CoordinateAxis2D) latAxis, (CoordinateAxis2D) lonAxis); doOne(g2d, 40.166959,-73.954234); gds.close(); }
private void makeHorizRange(GridCoordSystem gcsOrg, ProjectionRect projRect, int horizStride, List<Range> yxRanges) throws InvalidRangeException { if (gcsOrg.getXHorizAxis().getRank() > 1 || gcsOrg.getYHorizAxis().getRank() > 1) { throw new IllegalArgumentException("Coordinate systems with 2D horizontal axis are not supported"); CoordinateAxis1D xAxis = (CoordinateAxis1D) gcsOrg.getXHorizAxis(); double[] xCoords = xAxis.getCoordValues();
public static void test3() throws IOException { String filename = testfilename; GridDataset gds = GridDataset.open(filename); GeoGrid grid = gds.findGridByName("Sea_Surface_Height_Relative_to_Geoid_surface"); GridCoordSystem gcs = grid.getCoordinateSystem(); CoordinateAxis lonAxis = gcs.getXHorizAxis(); assert lonAxis instanceof CoordinateAxis2D; CoordinateAxis latAxis = gcs.getYHorizAxis(); assert latAxis instanceof CoordinateAxis2D; GridCoordinate2D g2d = new GridCoordinate2D((CoordinateAxis2D) latAxis, (CoordinateAxis2D) lonAxis); doOne(g2d, -15.554099426977835, -0.7742870290336263); gds.close(); }
public static void test3() throws IOException { String filename = "Q:/cdmUnitTest/ft/fmrc/rtofs/ofs.20091122/ofs_atl.t00z.F024.grb.grib2"; GridDataset gds = GridDataset.open(filename); GeoGrid grid = gds.findGridByName("Sea_Surface_Height_Relative_to_Geoid_surface"); GridCoordSystem gcs = grid.getCoordinateSystem(); CoordinateAxis lonAxis = gcs.getXHorizAxis(); assert lonAxis instanceof CoordinateAxis2D; CoordinateAxis latAxis = gcs.getYHorizAxis(); assert latAxis instanceof CoordinateAxis2D; GridCoordinate2D g2d = new GridCoordinate2D((CoordinateAxis2D) latAxis, (CoordinateAxis2D) lonAxis); doOne(g2d, -15.554099426977835, -0.7742870290336263); gds.close(); }
public static void test2() throws IOException { String filename = "C:/data/fmrc/apex_fmrc/Run_20091025_0000.nc"; GridDataset gds = GridDataset.open(filename); GeoGrid grid = gds.findGridByName("temp"); GridCoordSystem gcs = grid.getCoordinateSystem(); CoordinateAxis lonAxis = gcs.getXHorizAxis(); assert lonAxis instanceof CoordinateAxis2D; CoordinateAxis latAxis = gcs.getYHorizAxis(); assert latAxis instanceof CoordinateAxis2D; GridCoordinate2D g2d = new GridCoordinate2D((CoordinateAxis2D) latAxis, (CoordinateAxis2D) lonAxis); doOne(g2d, 40.166959,-73.954234); gds.close(); }
public static void test1() throws IOException { String filename = "D:/work/asaScience/EGM200_3.ncml"; GridDataset gds = GridDataset.open(filename); GeoGrid grid = gds.findGridByName("u_wind"); GridCoordSystem gcs = grid.getCoordinateSystem(); CoordinateAxis lonAxis = gcs.getXHorizAxis(); assert lonAxis instanceof CoordinateAxis2D; CoordinateAxis latAxis = gcs.getYHorizAxis(); assert latAxis instanceof CoordinateAxis2D; GridCoordinate2D g2d = new GridCoordinate2D((CoordinateAxis2D) latAxis, (CoordinateAxis2D) lonAxis); doOne(g2d, 35.0, -6.0); doOne(g2d, 34.667302, -5.008376); // FAIL doOne(g2d, 34.667303, -6.394240); doOne(g2d, 36.6346, -5.0084); doOne(g2d, 36.6346, -6.394240); gds.close(); }
public static void test1() throws IOException { String filename = "D:/work/asaScience/EGM200_3.ncml"; GridDataset gds = GridDataset.open(filename); GeoGrid grid = gds.findGridByName("u_wind"); GridCoordSystem gcs = grid.getCoordinateSystem(); CoordinateAxis lonAxis = gcs.getXHorizAxis(); assert lonAxis instanceof CoordinateAxis2D; CoordinateAxis latAxis = gcs.getYHorizAxis(); assert latAxis instanceof CoordinateAxis2D; GridCoordinate2D g2d = new GridCoordinate2D((CoordinateAxis2D) latAxis, (CoordinateAxis2D) lonAxis); doOne(g2d, 35.0, -6.0); doOne(g2d, 34.667302, -5.008376); // FAIL doOne(g2d, 34.667303, -6.394240); doOne(g2d, 36.6346, -5.0084); doOne(g2d, 36.6346, -6.394240); gds.close(); }
public static void test1() throws IOException { String filename = "D:/work/asaScience/EGM200_3.ncml"; GridDataset gds = GridDataset.open(filename); GeoGrid grid = gds.findGridByName("u_wind"); GridCoordSystem gcs = grid.getCoordinateSystem(); CoordinateAxis lonAxis = gcs.getXHorizAxis(); assert lonAxis instanceof CoordinateAxis2D; CoordinateAxis latAxis = gcs.getYHorizAxis(); assert latAxis instanceof CoordinateAxis2D; GridCoordinate2D g2d = new GridCoordinate2D((CoordinateAxis2D) latAxis, (CoordinateAxis2D) lonAxis); doOne(g2d, 35.0, -6.0); doOne(g2d, 34.667302, -5.008376); // FAIL doOne(g2d, 34.667303, -6.394240); doOne(g2d, 36.6346, -5.0084); doOne(g2d, 36.6346, -6.394240); gds.close(); }
public void utestAxisId() throws IOException { ucar.nc2.dt.grid.GridDataset dataset = GridDataset.open("C:/data/20100314_v_000000_l_0118800.nc"); GeoGrid grid = dataset.findGridByName("wind_speed"); assert null != grid; GridCoordSystem gcs = grid.getCoordinateSystem(); assert null != gcs; assert grid.getRank() == 3; CoordinateAxis axis = gcs.getXHorizAxis(); assert axis != null; assert axis.getShortName().equals("x") : axis.getShortName(); axis = gcs.getYHorizAxis(); assert axis != null; assert axis.getShortName().equals("y") : axis.getShortName(); dataset.close(); } }
@Test @Category(NeedsCdmUnitTest.class) public void testBBSubsetUnits() throws Exception { try (GridDataset dataset = GridDataset.open(TestDir.cdmUnitTestDir + "ncml/testBBSubsetUnits.ncml")) { logger.debug("file = {}", dataset.getLocation()); GeoGrid grid = dataset.findGridByName("pr"); assert null != grid; GridCoordSystem gcs = grid.getCoordinateSystem(); assert null != gcs; logger.debug("original bbox = {}", gcs.getBoundingBox()); logger.debug("lat/lon bbox = {}", gcs.getLatLonBoundingBox()); ucar.unidata.geoloc.LatLonRect llbb_subset = new LatLonRect(new LatLonPointImpl(38, -110), new LatLonPointImpl(42, -90)); logger.debug("subset lat/lon bbox = {}", llbb_subset); GeoGrid grid_section = grid.subset(null, null, llbb_subset, 1, 1, 1); GridCoordSystem gcs2 = grid_section.getCoordinateSystem(); assert null != gcs2; logger.debug("result lat/lon bbox = {}", gcs2.getLatLonBoundingBox()); logger.debug("result bbox = {}", gcs2.getBoundingBox()); ProjectionRect pr = gcs2.getProjection().getDefaultMapArea(); logger.debug("projection mapArea = {}", pr); assert (pr.nearlyEquals(gcs2.getBoundingBox())); CoordinateAxis xaxis = gcs.getXHorizAxis(); CoordinateAxis yaxis = gcs.getYHorizAxis(); logger.debug("(nx,ny)= {}, {}", xaxis.getSize(), yaxis.getSize()); } }
@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); } }
public void testSubset() throws Exception { ucar.nc2.dt.grid.GridDataset dataset = GridDataset.open(TestDir.cdmLocalTestDataDir+"rankTest.nc"); GeoGrid grid = dataset.findGridByName("full4"); assert null != grid; GridCoordSystem gcs = grid.getCoordinateSystem(); assert null != gcs; assert grid.getRank() == 4; doRead4(grid); GeoGrid grid_section = grid.subset(null, new Range(0,3,2), null, null); GridCoordSystem gcs_section = grid_section.getCoordinateSystem(); CoordinateAxis zaxis = gcs_section.getVerticalAxis(); assert zaxis.getSize() == 2; assert gcs_section.getXHorizAxis().equals( gcs.getXHorizAxis()); assert gcs_section.getYHorizAxis().equals( gcs.getYHorizAxis()); assert gcs_section.getTimeAxis().equals( gcs.getTimeAxis()); Array data = grid_section.readDataSlice(-1, -1, -1, -1); logger.debug(NCdumpW.toString( data, "grid_section", null)); dataset.close(); }
private void testCoordinates(String filename, double startLat, double startLon, double endLat, double endLon) throws IOException, InvalidRangeException { System.out.printf("%n***Open %s%n", filename); NetcdfDataset ncd = NetcdfDataset.openDataset(filename); GridDataset gds = new GridDataset(ncd); GridCoordSystem gsys = null; ProjectionImpl p = null; for (ucar.nc2.dt.GridDataset.Gridset g : gds.getGridsets()) { gsys = g.getGeoCoordSystem(); for (CoordinateTransform t : gsys.getCoordinateTransforms()) { if (t instanceof ProjectionCT) { p = ((ProjectionCT)t).getProjection(); break; } } } assert p != null; CoordinateAxis1D xaxis = (CoordinateAxis1D) gsys.getXHorizAxis(); CoordinateAxis1D yaxis = (CoordinateAxis1D) gsys.getYHorizAxis(); p.projToLatLon(xaxis.getCoordValue(0), yaxis.getCoordValue(0) ); LatLonPoint start1 = p.projToLatLon(xaxis.getCoordValue(0), yaxis.getCoordValue(0)); LatLonPoint start2 = p.projToLatLon(xaxis.getCoordValue((int)xaxis.getSize()-1), yaxis.getCoordValue((int)yaxis.getSize()-1)); System.out.printf( "start = %f %f%n", start1.getLatitude(), start1.getLongitude()); System.out.printf( "end = %f %f%n", start2.getLatitude(), start2.getLongitude()); assert start1.nearlyEquals(new LatLonPointImpl(startLat, startLon), 2.0E-4); assert start2.nearlyEquals(new LatLonPointImpl(endLat, endLon), 2.0E-4); ncd.close(); }
@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; } }
private void testGrid( GeoGrid grid) throws IOException, InvalidRangeException { assert null != grid; GridCoordSystem gcs = grid.getCoordinateSystem(); assert null != gcs; assert grid.getRank() == 4; Array data = grid.readDataSlice(0, -1, -1, -1); assert data.getRank() == 3; CoordinateAxis zaxis = gcs.getVerticalAxis(); assert data.getShape()[0] == zaxis.getSize() : zaxis.getSize(); CoordinateAxis yaxis = gcs.getYHorizAxis(); assert data.getShape()[1] == yaxis.getSize() : yaxis.getSize(); CoordinateAxis xaxis = gcs.getXHorizAxis(); assert data.getShape()[2] == xaxis.getSize() : xaxis.getSize(); VerticalTransform vt = gcs.getVerticalTransform(); assert vt != null; assert vt.getUnitString() != null; ucar.ma2.ArrayDouble.D3 vcoord = vt.getCoordinateArray(0); assert vcoord.getShape()[0] == zaxis.getSize() : vcoord.getShape()[0]; assert vcoord.getShape()[1] == yaxis.getSize() : vcoord.getShape()[1]; assert vcoord.getShape()[2] == xaxis.getSize() : vcoord.getShape()[2]; }