diff --git a/vortex-api/src/main/java/mil/army/usace/hec/vortex/io/DssDataWriter.java b/vortex-api/src/main/java/mil/army/usace/hec/vortex/io/DssDataWriter.java index 9fb245e7..717fb45a 100644 --- a/vortex-api/src/main/java/mil/army/usace/hec/vortex/io/DssDataWriter.java +++ b/vortex-api/src/main/java/mil/army/usace/hec/vortex/io/DssDataWriter.java @@ -84,10 +84,12 @@ public void write() { options.put("partF", grid.description()); } - if (!cPart.equals("PRECIPITATION") - && options.getOrDefault("dataType", "").isEmpty() - && !grid.interval().equals(Duration.ZERO)) { - options.put("dataType", "PER-AVER"); + if (!cPart.equals("PRECIPITATION") && options.get("dataType") == null) { + if (!Duration.ZERO.equals(grid.interval())) + options.put("dataType", "PER-AVER"); + + if (grid.interval() == null || Duration.ZERO.equals(grid.interval())) + options.put("dataType", "INST-VAL"); } if (cPart.equals("PRECIPITATION") && !grid.interval().isZero() diff --git a/vortex-api/src/test/java/mil/army/usace/hec/vortex/io/BatchImporterTest.java b/vortex-api/src/test/java/mil/army/usace/hec/vortex/io/BatchImporterTest.java index 6c972e7e..b81d88b4 100644 --- a/vortex-api/src/test/java/mil/army/usace/hec/vortex/io/BatchImporterTest.java +++ b/vortex-api/src/test/java/mil/army/usace/hec/vortex/io/BatchImporterTest.java @@ -381,4 +381,62 @@ void irregularSpatialGrid() { Logger.getAnonymousLogger().log(Level.SEVERE, e, e::getMessage); } } + + @Test + void tifToDss() { + URL inUrl = Objects.requireNonNull(getClass().getResource("/tif_to_dss/hms_cn_grid.tif")); + + String inFile = new File(inUrl.getFile()).toString(); + + List inFiles = new ArrayList<>(); + inFiles.add(inFile); + + Path pathToDestination = Paths.get(System.getProperty("java.io.tmpdir"), "hms_cn_grid.dss"); + + try { + HecDataManager.close(pathToDestination.toString(), false); + Files.deleteIfExists(pathToDestination); + } catch (IOException e) { + Logger.getAnonymousLogger().log(Level.SEVERE, e, e::getMessage); + } + + List variables = new ArrayList<>(); + variables.add("hms_cn_grid"); + + BatchImporter importer = BatchImporter.builder() + .inFiles(inFiles) + .variables(variables) + .destination(pathToDestination.toString()) + .build(); + + importer.process(); + + int[] status = new int[1]; + GriddedData griddedData = new GriddedData(); + griddedData.setDSSFileName(pathToDestination.toString()); + griddedData.setPathname("///////"); + GridData gridData = new GridData(); + griddedData.retrieveGriddedData(true, gridData, status); + if (status[0] < 0) { + Assertions.fail(); + } + + GridInfo gridInfo = gridData.getGridInfo(); + Assertions.assertEquals("", gridInfo.getStartTime()); + Assertions.assertEquals("", gridInfo.getEndTime()); + Assertions.assertEquals("UNSPECIF", gridInfo.getDataUnits()); + Assertions.assertEquals(DssDataType.INST_VAL.value(), gridInfo.getDataType()); + Assertions.assertEquals(98, gridInfo.getMaxValue()); + Assertions.assertEquals(21, gridInfo.getMinValue()); + Assertions.assertEquals(70.09265, gridInfo.getMeanValue(), 1E-5); + + griddedData.done(); + + try { + HecDataManager.close(pathToDestination.toString(), false); + Files.deleteIfExists(pathToDestination); + } catch (IOException e) { + Logger.getAnonymousLogger().log(Level.SEVERE, e, e::getMessage); + } + } } \ No newline at end of file diff --git a/vortex-api/src/test/resources/tif_to_dss/hms_cn_grid.tif b/vortex-api/src/test/resources/tif_to_dss/hms_cn_grid.tif new file mode 100644 index 00000000..538e5825 Binary files /dev/null and b/vortex-api/src/test/resources/tif_to_dss/hms_cn_grid.tif differ