Java源码示例:ucar.nc2.NetcdfFiles
示例1
@Test
public void testMicrosoftBlobS3() throws IOException {
// https://nexradsa.blob.core.windows.net/nexrad-l2/1997/07/07/KHPX/KHPX19970707_000827.gz
String host = "nexradsa.blob.core.windows.net";
String bucket = "nexrad-l2";
String key = "1991/07/20/KTLX/KTLX19910720_160529.gz";
String s3Uri = "cdms3://" + host + "/" + bucket + "?" + key;
try (NetcdfFile ncfile = NetcdfFiles.open(s3Uri)) {
assertThat(ncfile.findDimension("scanR")).isNotNull();
assertThat(ncfile.findDimension("gateR")).isNotNull();
assertThat(ncfile.findDimension("radialR")).isNotNull();
Variable reflectivity = ncfile.findVariable("Reflectivity");
Assert.assertNotNull(reflectivity);
// read array
Array array = reflectivity.read();
assertThat(array.getRank()).isEqualTo(3);
assertThat(array.getShape()).isEqualTo(new int[] {1, 366, 460});
}
}
示例2
@Test
public void compareWithBuilder()
throws IOException, InstantiationException, IllegalAccessException, ClassNotFoundException {
logger.info("TestBuilders on {}%n", filename);
SPFactory.setServiceProvider("ucar.nc2.iosp.netcdf3.N3raf");
try (NetcdfFile org = NetcdfFile.open(filename)) {
SPFactory.setServiceProvider("ucar.nc2.internal.iosp.netcdf3.N3iospNew");
try (NetcdfFile withBuilder = NetcdfFiles.open(filename)) {
Formatter f = new Formatter();
CompareNetcdf2 compare = new CompareNetcdf2(f, false, false, true);
if (!compare.compare(org, withBuilder)) {
System.out.printf("Compare %s%n%s%n", filename, f);
fail();
}
}
} finally {
SPFactory.setServiceProvider("ucar.nc2.iosp.netcdf3.N3raf");
}
}
示例3
private String findUniqueName(Structure.Builder<?> struct, String want, String def) {
if (want == null) {
return def + tempNo++;
}
String vwant = NetcdfFiles.makeValidCdmObjectName(want);
Optional<Variable.Builder<?>> oldV = struct.findMemberVariable(vwant);
if (!oldV.isPresent()) {
return vwant;
}
int seq = 2;
while (true) {
String wantSeq = vwant + "-" + seq;
oldV = struct.findMemberVariable(wantSeq);
if (!oldV.isPresent()) {
return wantSeq;
}
seq++;
}
}
示例4
/**
* Test GridCoordSystem.getLatLon()
*
* @throws IOException if ...
* @throws InvalidRangeException if ...
*/
@Test
public void checkGridCoordSystem_getLatLon() throws IOException, InvalidRangeException {
int[] origin = new int[] {j, i};
int[] shape = new int[] {1, 1};
NetcdfFile ncf = NetcdfFiles.open(datasetLocation);
Variable latVar = ncf.findVariable("lat");
Array latArray = latVar.read(origin, shape);
Variable lonVar = ncf.findVariable("lon");
Array lonArray = lonVar.read(origin, shape);
double latVal = latArray.getDouble(latArray.getIndex());
double lonVal = lonArray.getDouble(lonArray.getIndex());
GridDataset gd = GridDataset.open(datasetLocation);
GeoGrid gg = gd.findGridByName("hs");
GridCoordSystem gridCoordSys = gg.getCoordinateSystem();
// gridCoordSys.getXHorizAxis().;
// gridCoordSys.getYHorizAxis();
LatLonPoint llPnt = gridCoordSys.getLatLon(170, 62);
Assert.assertEquals(lat, llPnt.getLatitude(), 0.001);
Assert.assertEquals(lon, llPnt.getLongitude(), 0.001);
}
示例5
@Test
public void testTimeAxisEval() throws IOException {
/**
* The following tests BugFixes.evalTimeAxes, called by ucar.nc2.dt.grid.GridCoordSys.isGridCoordSys
*/
String testFileFullPath = TestDir.cdmUnitTestDir + "ft/grid/echoTops_runtime.nc";
GridDataset runtimeDataset = new GridDataset(new NetcdfDataset(NetcdfFiles.open(testFileFullPath)));
if (runtimeDataset.getGrids().isEmpty()) {
throw new RuntimeException("Runtime data file did not generate a dataset with grids");
}
if (runtimeDataset.getGrids().get(0).getCoordinateSystem().getRunTimeAxis() == null) {
throw new RuntimeException("Runtime data file did not generate a dataset with a RunTime axis");
}
System.out.println("BugFixesTest - completed.");
}
示例6
private boolean doCompare(String location, boolean showCompare, boolean showEach, boolean compareData)
throws IOException {
try (NetcdfFile ncfile = NetcdfFiles.open(location); NetcdfFile jni = openJni(location)) {
jni.setLocation(location + " (jni)");
// System.out.printf("Compare %s to %s%n", ncfile.getIosp().getClass().getName(),
// jni.getIosp().getClass().getName());
Formatter f = new Formatter();
CompareNetcdf2 tc = new CompareNetcdf2(f, showCompare, showEach, compareData);
boolean ok = tc.compare(ncfile, jni, new CompareNetcdf2.Netcdf4ObjectFilter());
System.out.printf(" %s compare %s ok = %s%n", ok ? "" : "***", location, ok);
if (!ok || (showCompare && showCompareResults))
System.out.printf("%s%n=====================================%n", f);
return ok;
}
}
示例7
private boolean scanBufrFile(String filename)
throws IOException, IllegalAccessException, InstantiationException, ClassNotFoundException {
int count = 0;
try (RandomAccessFile raf = new RandomAccessFile(filename, "r")) {
MessageScanner scan = new MessageScanner(raf);
while (scan.hasNext()) {
Message m = scan.next();
if (m == null)
continue;
byte[] mbytes = scan.getMessageBytes(m);
try (NetcdfFile ncfile = NetcdfFiles.openInMemory("test", mbytes, "ucar.nc2.iosp.bufr.BufrIosp2")) {
NetcdfDataset ncd = new NetcdfDataset(ncfile);
}
}
}
return true;
}
示例8
@Test
public void testThinGridAtEndofFile() throws IOException {
final String testfile = "../grib/src/test/data/thinGrid.grib1";
try (NetcdfFile nc = NetcdfFiles.open(testfile)) {
Variable var = nc.findVariable("Temperature_isobaric");
Array data = var.read();
Assert.assertEquals(73 * 73, data.getSize());
float first = data.getFloat(0);
float last = data.getFloat((73 * 73) - 1);
Assert.assertEquals(291.0, first, 1e-6);
Assert.assertEquals(278.0, last, 1e-6);
}
}
示例9
private void compareBuilder() {
if (ds == null)
return;
String fileLocation = ds.getLocation();
try (NetcdfFile org = NetcdfFile.open(fileLocation)) {
try (NetcdfFile withBuilder = NetcdfFiles.open(fileLocation)) {
Formatter f = new Formatter();
CompareNetcdf2 compare = new CompareNetcdf2(f, false, false, true);
boolean ok = compare.compare(org, withBuilder, new CoordsObjFilter());
infoTA.setText(f.toString());
infoTA.gotoTop();
infoWindow.setTitle("Compare Old (file1) with Builder (file 2)");
infoWindow.show();
}
} catch (Throwable ioe) {
StringWriter sw = new StringWriter(10000);
ioe.printStackTrace(new PrintWriter(sw));
infoTA.setText(sw.toString());
infoTA.gotoTop();
infoWindow.show();
}
}
示例10
private Map<Integer, GridMatch> getGridsOld(MFile ff, Formatter f) throws IOException {
Map<Integer, GridMatch> grids = new HashMap<>(100);
try (NetcdfFile ncfile = NetcdfFiles.open(ff.getPath(), "ucar.nc2.iosp.grib.GribServiceProvider", -1, null, null)) {
NetcdfDataset ncd = new NetcdfDataset(ncfile);
GridDataset grid = new GridDataset(ncd);
for (GridDatatype dt : grid.getGrids()) {
GridMatch gm = new GridMatch(grid, dt, false);
GridMatch dup = grids.get(gm.hashCode());
if (dup != null)
f.format(" DUP OLD (%d == %d) = %s (%s) and DUP %s (%s)%n", gm.hashCode(), dup.hashCode(),
gm.grid.getFullName(), gm.show(), dup.grid.getFullName(), dup.show());
else
grids.put(gm.hashCode(), gm);
}
} catch (Throwable t) {
t.printStackTrace();
}
return grids;
}
示例11
/**
* AWS S3
*
* https://aws.amazon.com/s3/
*
* @throws IOException Error accessing object store
*/
@Test
public void awsFullReadFile() throws IOException {
System.setProperty(AWS_REGION_PROP_NAME, AWS_G16_REGION);
try (NetcdfFile ncfile = NetcdfFiles.open(AWS_G16_S3_URI_FULL)) {
testFullReadGoes16S3(ncfile);
} finally {
System.clearProperty(AWS_REGION_PROP_NAME);
}
}
示例12
@Test
public void awsPartialReadFileDefaultRegionProp() throws IOException, InvalidRangeException {
System.setProperty(AWS_REGION_PROP_NAME, AWS_G16_REGION);
try (NetcdfFile ncfile = NetcdfFiles.open(AWS_G16_S3_URI_FULL)) {
testPartialReadGoes16S3(ncfile);
} finally {
System.clearProperty(AWS_REGION_PROP_NAME);
}
}
示例13
@Test
public void awsPartialReadFileSimple() throws IOException, InvalidRangeException {
System.setProperty(AWS_REGION_PROP_NAME, AWS_G16_REGION);
try (NetcdfFile ncfile = NetcdfFiles.open(AWS_G16_S3_URI_SIMPLE)) {
testPartialReadGoes16S3(ncfile);
} finally {
System.clearProperty(AWS_REGION_PROP_NAME);
}
}
示例14
@Test
public void awsProfileSharedCredsGoodDefault() throws IOException {
System.setProperty(AWS_SHARED_CREDENTIALS_FILE_PROP, credentialsFileGoodDefault);
try (NetcdfFile ncfile = NetcdfFiles.open(AWS_G16_S3_URI_FULL)) {
assertThat(ncfile).isNotNull();
} finally {
System.clearProperty(AWS_SHARED_CREDENTIALS_FILE_PROP);
}
}
示例15
@Test(expected = software.amazon.awssdk.services.s3.model.S3Exception.class)
public void awsProfileSharedCredsBadDefault() throws IOException {
// point to a shared credentials file with a bad default region (i.e. GOES-16 does not exist in the Asia Pacific
// (Mumbai) region
System.setProperty(AWS_SHARED_CREDENTIALS_FILE_PROP, credentialsFileBadDefault);
try (NetcdfFile ncfile = NetcdfFiles.open(AWS_G16_S3_URI_FULL)) {
assertThat(ncfile).isNotNull();
} finally {
System.clearProperty(AWS_SHARED_CREDENTIALS_FILE_PROP);
}
}
示例16
@Test
public void awsProfileSharedCredsBadDefaultGoodProfileName() throws IOException {
// point to a shared credentials file with a bad default region (i.e. GOES-16 does not exist in the Asia Pacific
// (Mumbai) region) but use a profile with a good region
System.setProperty(AWS_SHARED_CREDENTIALS_FILE_PROP, credentialsFileBadDefault);
String cdmS3Uri = String.format("cdms3://%[email protected]/noaa-goes16?", GOOD_PROFILE_NAME) + COMMON_G16_KEY;
try (NetcdfFile ncfile = NetcdfFiles.open(cdmS3Uri)) {
assertThat(ncfile).isNotNull();
} finally {
System.clearProperty(AWS_SHARED_CREDENTIALS_FILE_PROP);
}
}
示例17
@Test(expected = software.amazon.awssdk.services.s3.model.S3Exception.class)
public void awsProfileSharedCredsGoodDefaultBadProfileName() throws IOException {
// point to a shared credentials file with a good default region but use a profile that uses a bad region (one
// without goes16 data)
System.setProperty(AWS_SHARED_CREDENTIALS_FILE_PROP, credentialsFileBadDefault);
String cdmS3Uri = String.format("cdms3://%[email protected]/noaa-goes16?", BAD_PROFILE_NAME) + COMMON_G16_KEY;
try (NetcdfFile ncfile = NetcdfFiles.open(cdmS3Uri)) {
assertThat(ncfile).isNotNull();
} finally {
System.clearProperty(AWS_SHARED_CREDENTIALS_FILE_PROP);
}
}
示例18
@Test
public void awsSharedCredsPrecedence() throws IOException {
// Test that the region set in the custom shared credentials file takes precedence
System.setProperty(AWS_REGION_PROP_NAME, Region.AP_SOUTH_1.id());
System.setProperty(AWS_SHARED_CREDENTIALS_FILE_PROP, credentialsFileBadDefault);
String cdmS3Uri = String.format("cdms3://%[email protected]/noaa-goes16?", GOOD_PROFILE_NAME) + COMMON_G16_KEY;
try (NetcdfFile ncfile = NetcdfFiles.open(cdmS3Uri)) {
assertThat(ncfile).isNotNull();
} finally {
System.clearProperty(AWS_SHARED_CREDENTIALS_FILE_PROP);
System.clearProperty(AWS_REGION_PROP_NAME);
}
}
示例19
/**
* Open data file
*
* @param fileName File name
*/
public void openData(String fileName) {
try {
boolean canOpen = NetcdfFiles.canOpen(fileName);
if (canOpen) {
this.openNetCDFData(fileName);
} else if (ARLDataInfo.canOpen(fileName)) {
this.openARLData(fileName);
}
} catch (IOException ex) {
Logger.getLogger(MeteoDataInfo.class.getName()).log(Level.SEVERE, null, ex);
}
}
示例20
public void shoudGetVerticalStridedSubset() throws Exception {
mockMvc.perform(requestBuilder).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(new ResultMatcher() {
public void match(MvcResult result) throws Exception {
// Open the binary response in memory
NetcdfFile nf;
ucar.nc2.dt.grid.GridDataset gdsDataset;
if (TestDir.cdmUseBuilders) {
nf = NetcdfFiles.openInMemory("test_data.ncs", result.getResponse().getContentAsByteArray());
gdsDataset =
new ucar.nc2.dt.grid.GridDataset(NetcdfDatasets.enhance(nf, NetcdfDataset.getDefaultEnhanceMode(), null));
} else {
nf = NetcdfFile.openInMemory("test_data.ncs", result.getResponse().getContentAsByteArray());
gdsDataset = new ucar.nc2.dt.grid.GridDataset(new NetcdfDataset(nf));
}
assertTrue(gdsDataset.getCalendarDateRange().isPoint());
List<VariableSimpleIF> vars = gdsDataset.getDataVariables();
int[][] shapes = new int[vars.size()][];
int cont = 0;
for (VariableSimpleIF var : vars) {
// int[] shape =var.getShape();
shapes[cont] = var.getShape();
cont++;
// String dimensions =var.getDimensions().toString();
// int rank =var.getRank();
}
assertArrayEquals(expectedShapes, shapes);
}
});
// assertEquals(expectedValue, Integer.valueOf( gdsDataset.getDataVariables().size()));
}
示例21
@Test
public void compareStores() throws IOException {
System.setProperty(AWS_REGION_PROP_NAME, AWS_G16_REGION);
try (NetcdfFile osdc = NetcdfFiles.open(OSDC_G16_S3_URI);
NetcdfFile gcs = NetcdfFiles.open(GCS_G16_S3_URI);
NetcdfFile aws = NetcdfFiles.open(AWS_G16_S3_URI_FULL)) {
Formatter f = new Formatter();
CompareNetcdf2 comparer = new CompareNetcdf2(f, false, false, true);
Assert.assertTrue(comparer.compare(aws, gcs));
Assert.assertTrue(comparer.compare(aws, osdc));
Assert.assertTrue(comparer.compare(osdc, gcs));
} finally {
System.clearProperty(AWS_REGION_PROP_NAME);
}
}
示例22
@Test
@Category(NeedsUcarNetwork.class)
public void ncarPartialReadFile() throws IOException, InvalidRangeException {
try (NetcdfFile ncfile = NetcdfFiles.open(NCAR_G16_S3_URI)) {
testPartialReadGoes16S3(ncfile);
}
}
示例23
@Test
@Category(NeedsUcarNetwork.class)
public void testActiveScaleWithCredsS3() throws IOException {
String host = "stratus.ucar.edu";
String bucket = "unidata-netcdf-zarr-testing";
String key = "netcdf-java/test/GFS_Global_0p25deg_20200326_1200_apparent_temperature.nc4";
String s3Uri = "cdms3://" + NCAR_PROFILE_NAME + "@" + host + "/" + bucket + "?" + key;
try (NetcdfFile ncfile = NetcdfFiles.open(s3Uri)) {
Attribute conv = ncfile.findGlobalAttributeIgnoreCase("Conventions");
assertThat(conv).isNotNull();
assertThat(conv.getStringValue()).ignoringCase().isEqualTo("CF-1.6");
}
}
示例24
@Test
@Category(NeedsUcarNetwork.class)
public void testActiveScaleS3() throws IOException {
// do not need credentials to run this one, just access to the internal ucar network.
String host = "stratus.ucar.edu";
String bucket = "rda-data";
String key = "ds262.0/CERFACS/uo_Omon_NEMO3-2_FRCCORE2_f_r1i1p1_199801-200712.nc";
String s3Uri = "cdms3://" + host + "/" + bucket + "?" + key;
try (NetcdfFile ncfile = NetcdfFiles.open(s3Uri)) {
Attribute conv = ncfile.findGlobalAttributeIgnoreCase("Conventions");
assertThat(conv).isNotNull();
assertThat(conv.getStringValue()).ignoringCase().isEqualTo("CF-1.4");
}
}
示例25
@Test
public void testCompressedObjectRead() throws IOException {
String region = Region.US_EAST_1.toString();
String bucket = "noaa-nexrad-level2";
String key = "1991/07/20/KTLX/KTLX19910720_160529.gz";
String s3uri = "cdms3:" + bucket + "?" + key;
System.setProperty("aws.region", region);
try (NetcdfFile ncfile = NetcdfFiles.open(s3uri)) {
assertThat(ncfile.findDimension("scanR")).isNotNull();
assertThat(ncfile.findDimension("gateR")).isNotNull();
assertThat(ncfile.findDimension("radialR")).isNotNull();
Variable reflectivity = ncfile.findVariable("Reflectivity");
Assert.assertNotNull(reflectivity);
// read array
Array array = reflectivity.read();
assertThat(array.getRank()).isEqualTo(3);
assertThat(array.getShape()).isEqualTo(new int[] {1, 366, 460});
} finally {
System.clearProperty("aws.region");
}
}
示例26
public static NetcdfFile open(String filename) throws IOException {
logger.debug("**** Open {}", filename);
NetcdfFile ncfile;
if (cdmUseBuilders || isLocationObjectStore(filename)) {
ncfile = NetcdfFiles.open(filename, null);
} else {
ncfile = NetcdfFile.open(filename, null);
}
logger.debug("open {}", ncfile);
return ncfile;
}
示例27
void toStringStart(Indent indent, boolean strict, @Nullable String nameOverride) {
String name = (nameOverride != null) ? nameOverride : ncfile.getLocation();
if (strict) {
if (name.endsWith(".nc"))
name = name.substring(0, name.length() - 3);
if (name.endsWith(".cdl"))
name = name.substring(0, name.length() - 4);
name = NetcdfFiles.makeValidCDLName(name);
}
out.format("%snetcdf %s {%n", indent, name);
indent.incr();
writeCDL(ncfile.getRootGroup(), indent);
indent.decr();
}
示例28
private void writeCDL(Dimension dim, Indent indent) {
String name = strict ? NetcdfFiles.makeValidCDLName(dim.getShortName()) : dim.getShortName();
out.format("%s%s", indent, name);
if (dim.isUnlimited())
out.format(" = UNLIMITED; // (%d currently)", dim.getLength());
else if (dim.isVariableLength())
out.format(" = UNKNOWN;");
else
out.format(" = %d;", dim.getLength());
}
示例29
private boolean compareWithBuilder(String filename) throws IOException {
logger.info("TestBuilders on {}%n", filename);
try (NetcdfFile org = NetcdfFile.open(filename)) {
try (NetcdfFile withBuilder = NetcdfFiles.open(filename)) {
Formatter f = new Formatter();
CompareNetcdf2 compare = new CompareNetcdf2(f, false, false, true);
if (!compare.compare(org, withBuilder, null)) {
System.out.printf("Compare %s%n%s%n", filename, f);
fail();
return false;
}
}
}
return true;
}
示例30
private void showNew(String filename) throws IOException {
try (NetcdfFile withBuilder = NetcdfFiles.open(filename)) {
// Variable v = withBuilder.findVariable("catchments_x");
// Array data = v.read();
System.out.printf("withBuilder = %s%n", withBuilder);
}
}