diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8057fab4fca97805b696adcdfc27330701b03707..ca77c43ee01dd599bca1620d38d2cb4936451b3d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,12 +1,8 @@ variables: - DATA_CONUS_2018A: conus-2018a - DATA_URL: ${S3_BUCKET}/nshmp_2018a_v1.1-CONUS-hazards-with-preliminary-PGV-fv0.3-1x1.nc IMAGE_NAME: ${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA} JACOCO_HTML_DIR: ${REPORTS_DIR}/jacoco/test/html JUNIT_FILES: build/test-results/test/TEST-*.xml REPORTS_DIR: build/reports - # TODO: Remove hard coded url - S3_BUCKET: https://nshmp-netcdf-lp-development-rbucket-1of3d1x45yfd9.s3-us-west-2.amazonaws.com stages: - build @@ -149,19 +145,14 @@ workflow: # Stage: build #### -Build Image 2018: - before_script: - - apk add curl - - mkdir DATA - - curl -SL ${DATA_URL} -o DATA/data.nc +Build Image: extends: - .docker-build variables: DOCKER_BUILD_ARGS: | - BUILD_IMAGE=${DEVOPS_REGISTRY}usgs/java:11 - FROM_IMAGE=${DEVOPS_REGISTRY}usgs/java:11 + BUILD_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:11 + FROM_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:11 ci_job_token=${CI_JOB_TOKEN} - netcdf_file=DATA/data.nc UPSTREAM_PATH: ghsc/nshmp/nshmp-ws-static Build Project: @@ -201,7 +192,7 @@ YAML Lint: Trigger AWS Deployment: needs: - - Build Image 2018 + - Build Image rules: - <<: *development-env diff --git a/Dockerfile b/Dockerfile index 17caddf098076e3f772b3b0f6c082fd2168ae12f..18dcb4524bfd113c55ff23e8b1cf0c924b1ca0fb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,75 +5,42 @@ # -t nshmp-ws-static . #### -ARG BUILD_IMAGE=usgs/java:11 -ARG FROM_IMAGE=usgs/java:11 +ARG BUILD_IMAGE=usgs/amazoncorretto:11 +ARG FROM_IMAGE=usgs/amazoncorretto:11 -ARG project=nshmp-ws-static -ARG workdir=/app/${project} -ARG libs_dir=${workdir}/build/libs -ARG jar_file=${libs_dir}/${project}.jar - -#### -# Build war file -#### FROM ${BUILD_IMAGE} as builder ARG gitlab_token=null ARG ci_job_token=null -ARG libs_dir -ARG jar_file -ARG workdir # TODO: Token needed until nshmp-lib is public ENV GITLAB_TOKEN ${gitlab_token} ENV CI_JOB_TOKEN ${ci_job_token} -WORKDIR ${workdir} +WORKDIR /app -COPY build.gradle . -COPY .git .git -COPY gradle gradle -COPY gradle.properties . -COPY gradlew . -COPY settings.gradle . -COPY src src -COPY openapi.properties . +COPY . . -RUN ./gradlew assemble \ - && mv ${libs_dir}/*-all.jar ${jar_file} +RUN ./gradlew assemble #### # Run service #### FROM ${FROM_IMAGE} -# The NetCDF file to read in -ARG netcdf_file="src/main/resources/default.nc" - -# The NSHM to use -# Available NSHM to run: -# - CONUS_2018A -ENV NSHM "CONUS_2018A" - +# Path to the NetCDF file to use +ENV NETCDF_FILE src/main/resources/default.nc ENV CONTEXT_PATH "/" ENV JAVA_OPTS="" -ARG jar_file -ARG project -ARG workdir - -ENV PROJECT ${project} -ENV NETCDF_FILE ${netcdf_file} - -WORKDIR ${workdir} +WORKDIR /app -COPY --from=builder ${jar_file} ${project}.jar -COPY ${NETCDF_FILE} ${NETCDF_FILE} +COPY --from=builder /app/build/libs/nshmp-ws-static-all.jar nshmp-ws-static.jar ENTRYPOINT /usr/bin/java \ ${JAVA_OPTS} \ -jar \ - ${PROJECT}.jar \ + nshmp-ws-static.jar \ "-Dmicronaut.server.context-path=${CONTEXT_PATH}" \ -nshm=${NSHM} \ -netcdf=${NETCDF_FILE} diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/NshmGroup.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/NshmGroup.java deleted file mode 100644 index dea538a5a2b8d97faaab1297c40902c0d667bfd5..0000000000000000000000000000000000000000 --- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/NshmGroup.java +++ /dev/null @@ -1,45 +0,0 @@ -package gov.usgs.earthquake.nshmp.netcdf; - -import com.google.common.base.CaseFormat; - -public enum NshmGroup { - - CONUS_2018A( - "2018 Conterminous U.S. NSHM", - "/CONUS/2018/v1.1", - 2); - - private final String display; - private final String baseGroup; - private final int locationPrecision; - - private NshmGroup(String display, String baseGroup, int locationPrecision) { - this.display = display; - this.baseGroup = baseGroup; - this.locationPrecision = locationPrecision; - } - - @Override - public String toString() { - return display; - } - - public String model() { - return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_HYPHEN, name()); - } - - /** - * Returns the NetCDF target base group to read. - */ - public String baseGroup() { - return baseGroup; - } - - /** - * Returns the spacing for the locations. - */ - public int locationPrecision() { - return locationPrecision; - } - -} diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/NshmNetcdfReader.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/NshmNetcdfReader.java index fc9df599fc2b6347f75bff6dbe45dce6eec84060..98600bf0d64d6187309f8461d920b2c830ae113b 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/NshmNetcdfReader.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/NshmNetcdfReader.java @@ -46,7 +46,6 @@ public class NshmNetcdfReader { private static final Logger LOGGER = Logger.getLogger("ucar"); private final Path path; - private final NshmGroup nshmGroup; private final NetcdfCoordinates coords; static { @@ -54,8 +53,7 @@ public class NshmNetcdfReader { LOGGER.setLevel(Level.SEVERE); } - public NshmNetcdfReader(NshmGroup nshmGroup, Path path) { - this.nshmGroup = nshmGroup; + public NshmNetcdfReader(Path path) { this.path = path; if (Files.notExists(path)) { @@ -63,24 +61,12 @@ public class NshmNetcdfReader { } try (var ncd = NetcdfDataset.openDataset(path.toString())) { - // TODO: - // - Handle metadata from netCDF file get root group and - // attributes, and attributes of subgroups - // - Get netCDF dimensions - var targetGroup = ncd.findGroup(nshmGroup.baseGroup()); - coords = new NetcdfCoordinates(nshmGroup, targetGroup); + coords = new NetcdfCoordinates(ncd.getRootGroup()); } catch (IOException e) { throw new RuntimeException("Could not read Netcdf file [" + path + " ]"); } } - /** - * Returns the NSHM NetCDF group - */ - public NshmGroup nshmGroup() { - return nshmGroup; - } - /** * Returns the NetCDF dimensions and coordinate variables. */ diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingHazardsReader.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingHazardsReader.java index 20e1c38344cb1bb62723cbc7b87bb5887c8b987d..4953f9eeb796ab25afd1eb4161f51b791a2531d0 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingHazardsReader.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingHazardsReader.java @@ -125,7 +125,7 @@ public class BoundingHazardsReader { int idxLatLL) { try (NetcdfDataset ncd = NetcdfDataset.openDataset(netcdf.path().toString())) { var boundingHazardMaps = BoundingHazards.builder(); - var targetGroup = ncd.findGroup(netcdf.nshmGroup().baseGroup()); + var targetGroup = ncd.getRootGroup(); var targetOrigin = new int[] { 0, 0, idxLatLL, idxLonLL, 0 }; var targetShape = new int[] { @@ -175,7 +175,6 @@ public class BoundingHazardsReader { var imtHazardMap = StaticHazard.builder(); for (int iImt = 0; iImt < coords.imts().size(); iImt++) { var imt = coords.imts().get(iImt); - var origin = new int[] { iSiteClass, iImt, 0 }; var shape = new int[] { 1, 1, coords.nIml() }; diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfCoordinates.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfCoordinates.java index c0620aec4b51d82030eceb3e17f02c70189a14c5..079d597712fcae71bf26e49af4f6cb64cdf1c0e2 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfCoordinates.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfCoordinates.java @@ -12,6 +12,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.google.common.reflect.TypeToken; +import com.google.gson.Gson; + import gov.usgs.earthquake.nshmp.Maths; import gov.usgs.earthquake.nshmp.geo.BorderType; import gov.usgs.earthquake.nshmp.geo.Location; @@ -24,7 +27,6 @@ import gov.usgs.earthquake.nshmp.geo.json.GeoJson; import gov.usgs.earthquake.nshmp.geo.json.Properties; import gov.usgs.earthquake.nshmp.gmm.Imt; import gov.usgs.earthquake.nshmp.gmm.NehrpSiteClass; -import gov.usgs.earthquake.nshmp.netcdf.NshmGroup; import gov.usgs.earthquake.nshmp.netcdf.reader.NetcdfUtils.Key; import ucar.ma2.DataType; @@ -47,7 +49,10 @@ public class NetcdfCoordinates { private final double[] longitudes; private final double[] latitudes; - public NetcdfCoordinates(NshmGroup nshmGroup, Group targetGroup) throws IOException { + private static final String FLAG_KEY = "flag_key"; + private static final Gson GSON = new Gson(); + + public NetcdfCoordinates(Group targetGroup) throws IOException { // This bypasses the netCDF dimensions, but since we know what the // variables and their dimensions should be, this is OK(???) // TODO: probably better (proper) to access netCDF dimensions @@ -61,24 +66,37 @@ public class NetcdfCoordinates { var lats = NetcdfUtils.getDoubleArray(targetGroup, Key.LAT); var lons = NetcdfUtils.getDoubleArray(targetGroup, Key.LON); + var mapTypeToken = new TypeToken<Map<String, String>>() {}.getType(); + // get list of SiteClass enums and build vs30 map List<NehrpSiteClass> scList = new ArrayList<NehrpSiteClass>(); Map<NehrpSiteClass, Double> vsMap = new HashMap<NehrpSiteClass, Double>(); var siteClassArray = vSiteClass.read(); + Map<String, String> siteClassFlagKeys = GSON + .fromJson(vSiteClass.findAttribute(FLAG_KEY) + .getValues().toString(), mapTypeToken); + for (int i = 0; i < vSiteClass.getSize(); i++) { - String scString = siteClassArray.getObject(i).toString(); + var scInt = siteClassArray.getInt(i); + var scString = siteClassFlagKeys.get(Integer.toString(scInt)).toString(); NehrpSiteClass siteClass = NehrpSiteClass.valueOf(scString); scList.add(siteClass); vsMap.put(siteClass, vs30s[i]); } siteClasses = List.copyOf(scList); - vs30Map = Collections.unmodifiableMap(vsMap); + vs30Map = Map.copyOf(vsMap); // get list of IMT enums List<Imt> imtList = new ArrayList<Imt>(); + Map<String, String> imtFlagKeys = GSON + .fromJson(vImts.findAttribute(FLAG_KEY) + .getValues().toString(), mapTypeToken); + var imtArray = vImts.read(); for (int i = 0; i < vImts.getSize(); i++) { - imtList.add(Imt.valueOf(imtArray.getObject(i).toString())); + var imtInt = imtArray.getInt(i); + var imtString = imtFlagKeys.get(Integer.toString(imtInt)).toString(); + imtList.add(Imt.valueOf(imtString)); } imts = List.copyOf(imtList); @@ -90,11 +108,13 @@ public class NetcdfCoordinates { imls = mapImls(vImls); latitudes = Arrays.stream(lats) - .map(lat -> Maths.round(lat, nshmGroup.locationPrecision())) + // TODO: Dynamic set location precision from NetCDF + .map(lat -> Maths.round(lat, 3)) .toArray(); longitudes = Arrays.stream(lons) - .map(lon -> Maths.round(lon, nshmGroup.locationPrecision())) + // TODO: Dynamic set location precision from NetCDF + .map(lon -> Maths.round(lon, 3)) .toArray(); /* @@ -135,14 +155,14 @@ public class NetcdfCoordinates { } /** - * Returns the Imls associated with a {@code NshmGroup}. + * Returns the Imls */ public Map<Imt, double[]> imls() { return imls; } /** - * Return the Imts associated with a {@code NshmGroup}. + * Return the Imts */ public List<Imt> imts() { return List.copyOf(imts); @@ -163,21 +183,21 @@ public class NetcdfCoordinates { } /** - * Returns the number of Imls associated with a {@code NshmGroup}. + * Returns the number of Imls */ public int nIml() { return nIml; } /** - * Returns the region associated with a {@code NshmGroup} + * Returns the region */ public Region region() { return Regions.copyOf(region); } /** - * Return the site classes associated with a {@code NshmGroup}. + * Return the site classes */ public List<NehrpSiteClass> siteClasses() { return List.copyOf(siteClasses); diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfController.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfController.java index bab2dccdac8fd1d3a4c95a249839e44dae621d30..5a00fc8a2a557d07197e391ff8b2b36ec7f06eca 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfController.java @@ -4,7 +4,6 @@ import java.nio.file.Path; import gov.usgs.earthquake.nshmp.gmm.Imt; import gov.usgs.earthquake.nshmp.gmm.NehrpSiteClass; -import gov.usgs.earthquake.nshmp.netcdf.NshmGroup; import gov.usgs.earthquake.nshmp.www.NshmpMicronautServlet; import io.micronaut.context.annotation.Value; @@ -25,8 +24,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.inject.Inject; /** - * Micronaut controller for getting static hazards for a specific - * {@code NshmGroup} from a NetCDF file. + * Micronaut controller for getting static hazards form a NetCDF file. * * @see NetcdfService * @@ -39,9 +37,6 @@ public class NetcdfController { @Inject private NshmpMicronautServlet servlet; - @Value("${nshmp-ws-static.nshm-group}") - NshmGroup nshmGroup; - @Value("${nshmp-ws-static.netcdf-file}") Path path; @@ -72,7 +67,7 @@ public class NetcdfController { @QueryValue @Nullable NehrpSiteClass siteClass, @QueryValue @Nullable Imt imt) { var query = new Query(longitude, latitude, siteClass, imt); - return NetcdfService.handleDoGet(request, nshmGroup, path, query); + return NetcdfService.handleDoGet(request, path, query); } /** @@ -172,7 +167,7 @@ public class NetcdfController { schema = @Schema(type = "string"))) @Get(uri = "/border", produces = MediaType.APPLICATION_JSON) public HttpResponse<String> doGetBorder(HttpRequest<?> request) { - return NetcdfService.handleDoGetBorder(request, nshmGroup, path); + return NetcdfService.handleDoGetBorder(request, path); } /** @@ -189,7 +184,7 @@ public class NetcdfController { @Schema(required = true) @QueryValue @Nullable Double longitude, @Schema(required = true) @QueryValue @Nullable Double latitude) { var query = new Query(longitude, latitude, null, null); - return NetcdfService.handleDoGetBounding(request, nshmGroup, path, query); + return NetcdfService.handleDoGetBounding(request, path, query); } /** diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java index d1ebeff41be24f4a82a10666388aabc9337a4db0..4f229cd69d297ffe361c90a998ae27595b282a6b 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java @@ -14,7 +14,6 @@ import gov.usgs.earthquake.nshmp.geo.json.Feature; import gov.usgs.earthquake.nshmp.geo.json.GeoJson; import gov.usgs.earthquake.nshmp.gmm.Imt; import gov.usgs.earthquake.nshmp.gmm.NehrpSiteClass; -import gov.usgs.earthquake.nshmp.netcdf.NshmGroup; import gov.usgs.earthquake.nshmp.netcdf.NshmNetcdfReader; import gov.usgs.earthquake.nshmp.netcdf.reader.BoundingHazards; import gov.usgs.earthquake.nshmp.netcdf.reader.StaticHazard; @@ -40,27 +39,26 @@ public class NetcdfService { private static NshmNetcdfReader netcdf; - private static String SERVICE_NAME = "Netcdf NSHM Service for the %s"; - private static String SERVICE_DESCRIPTION = "Get static hazard curves for the %s"; + private static String SERVICE_NAME = "Netcdf NSHM Service for the"; + private static String SERVICE_DESCRIPTION = "Get static hazard curves for"; private static final Logger LOGGER = Logger.getLogger(NetcdfService.class.getName()); static HttpResponse<String> handleDoGet( HttpRequest<?> request, - NshmGroup nshmGroup, Path path, Query query) { - SERVICE_NAME = String.format(SERVICE_NAME, nshmGroup.toString()); + SERVICE_NAME = String.format(SERVICE_NAME); try { - setNetcdf(nshmGroup, path); + setNetcdf(path); var url = request.getUri().toString(); LOGGER.info(SERVICE_NAME + " - Request: " + url); LOGGER.fine(SERVICE_NAME + " - Query:\n" + GSON.toJson(query)); if (query.longitude == null && query.latitude == null) { - return metadata(request, nshmGroup, path); + return metadata(request, path); } - var service = getService(nshmGroup, path, query); + var service = getService(path, query); Response<?, ?> svcResponse = processRequest(request, netcdf, service, query); var response = GSON.toJson(svcResponse); LOGGER.fine(SERVICE_NAME + " - Result:\n" + response); @@ -73,17 +71,15 @@ public class NetcdfService { static HttpResponse<String> handleDoGetBounding( HttpRequest<?> request, - NshmGroup nshmGroup, Path path, Query query) { - SERVICE_NAME = String.format(SERVICE_NAME, nshmGroup.toString()); + SERVICE_NAME = String.format(SERVICE_NAME); try { - setNetcdf(nshmGroup, path); - // LOGGER.info(SERVICE_NAME + " - Request: " + urlHelper.url); + setNetcdf(path); LOGGER.fine(SERVICE_NAME + " - Query:\n" + GSON.toJson(query)); if (query.longitude == null && query.latitude == null) { - return metadata(request, nshmGroup, path); + return metadata(request, path); } Response<?, ?> svcResponse = processRequest(request, netcdf, Service.BOUNDING, query); var response = GSON.toJson(svcResponse); @@ -98,11 +94,10 @@ public class NetcdfService { static HttpResponse<String> handleDoGetBorder( HttpRequest<?> request, - NshmGroup nshmGroup, Path path) { - SERVICE_NAME = String.format(SERVICE_NAME, nshmGroup.toString()); + SERVICE_NAME = String.format(SERVICE_NAME); try { - setNetcdf(nshmGroup, path); + setNetcdf(path); var geojson = GeoJson.builder(); var border = netcdf.coordinates().region().border(); @@ -122,11 +117,11 @@ public class NetcdfService { } } - static HttpResponse<String> metadata(HttpRequest<?> request, NshmGroup nshmGroup, Path path) { + static HttpResponse<String> metadata(HttpRequest<?> request, Path path) { try { - setNetcdf(nshmGroup, path); + setNetcdf(path); String netcdfFile = path == null ? "" : path.toString(); - var metadata = new Metadata(request, nshmGroup, netcdfFile); + var metadata = new Metadata(request, netcdfFile); var url = request.getUri().toString(); var svcResponse = new Response<>(Status.USAGE, SERVICE_NAME, url, metadata, url); @@ -139,7 +134,7 @@ public class NetcdfService { } } - static Service getService(NshmGroup nshmGroup, Path path, Query query) { + static Service getService(Path path, Query query) { if (query.siteClass != null && query.imt != null) { return Service.CURVES_BY_SITE_CLASS_IMT; } else if (query.siteClass != null && query.imt == null) { @@ -181,7 +176,7 @@ public class NetcdfService { WsUtils.checkValue(Key.LATITUDE, request.site.latitude); WsUtils.checkValue(Key.LONGITUDE, request.site.longitude); var bounding = netcdf.boundingHazards(request.site); - var boundingAsList = toLists(netcdf.nshmGroup(), request.site, bounding); + var boundingAsList = toLists(request.site, bounding); return new Response<>(Status.SUCCESS, SERVICE_NAME, request, boundingAsList, url); } @@ -191,7 +186,7 @@ public class NetcdfService { WsUtils.checkValue(Key.LATITUDE, request.site.latitude); WsUtils.checkValue(Key.LONGITUDE, request.site.longitude); var curves = netcdf.hazard(request.site); - var curvesAsList = toList(netcdf.nshmGroup(), request.site, curves); + var curvesAsList = toList(request.site, curves); return new Response<>(Status.SUCCESS, SERVICE_NAME, request, curvesAsList, url); } @@ -202,7 +197,7 @@ public class NetcdfService { WsUtils.checkValue(Key.LONGITUDE, request.site.longitude); WsUtils.checkValue(Key.SITE_CLASS, request.siteClass); var curves = netcdf.hazard(request.site, request.siteClass); - var curvesAsList = toList(netcdf.nshmGroup(), request, curves); + var curvesAsList = toList(request, curves); return new Response<>(Status.SUCCESS, SERVICE_NAME, request, curvesAsList, url); } @@ -216,43 +211,40 @@ public class NetcdfService { var site = request.site; var metadata = new ResponseMetadata( - netcdf.nshmGroup(), site.longitude, site.latitude, request.siteClass, request.imt); + site.longitude, site.latitude, request.siteClass, request.imt); var curve = netcdf.hazard(request.site, request.siteClass, request.imt); var responseData = new ResponseData(metadata, curve); return new Response<>(Status.SUCCESS, SERVICE_NAME, request, responseData, url); } static List<List<List<ResponseData>>> toLists( - NshmGroup nshmGroup, Location site, BoundingHazards bounding) { return bounding.entrySet().stream() - .map(entry -> toList(nshmGroup, site, entry.getValue())) + .map(entry -> toList(site, entry.getValue())) .collect(Collectors.toList()); } static List<List<ResponseData>> toList( - NshmGroup nshmGroup, Location site, StaticHazards curves) { return curves.entrySet().stream() .map(entry -> { var request = new RequestDataCurves(site.longitude, site.latitude, entry.getKey()); - return toList(nshmGroup, request, entry.getValue()); + return toList(request, entry.getValue()); }) .collect(Collectors.toList()); } static List<ResponseData> toList( - NshmGroup nshmGroup, RequestDataCurves request, StaticHazard curves) { return curves.entrySet().stream() .map((entry) -> { var site = request.site; var metadata = new ResponseMetadata( - nshmGroup, site.longitude, site.latitude, request.siteClass, entry.getKey()); + site.longitude, site.latitude, request.siteClass, entry.getKey()); return new ResponseData(metadata, entry.getValue()); }) .collect(Collectors.toList()); @@ -287,16 +279,13 @@ public class NetcdfService { static class ResponseMetadata extends RequestDataCurve { final String xLabel; final String yLabel; - final NshmGroup nshm; ResponseMetadata( - NshmGroup nshmGroup, double longitude, double latitude, NehrpSiteClass siteClass, Imt imt) { super(longitude, latitude, siteClass, imt); - nshm = nshmGroup; xLabel = "Ground Motion (g)"; yLabel = "Annual Frequency of Exceedence"; } @@ -318,9 +307,9 @@ public class NetcdfService { final String[] syntax; final Parameters parameters; - Metadata(HttpRequest<?> request, NshmGroup nshmGroup, String netcdfFile) { + Metadata(HttpRequest<?> request, String netcdfFile) { var url = request.getUri().toString(); - description = String.format(SERVICE_DESCRIPTION, nshmGroup.toString()); + description = String.format(SERVICE_DESCRIPTION); syntax = new String[] { url + "/{longitude:number}/{latitude:number}", url + "?longitude={number}&latitude={number}", @@ -336,14 +325,12 @@ public class NetcdfService { static class Parameters { final String netcdfFile; - final NshmGroup nshm; final Bounds bounds; final List<NehrpSiteClass> siteClasses; final List<Imt> imts; Parameters(String netcdfFile) { this.netcdfFile = netcdfFile; - nshm = netcdf.nshmGroup(); var coordinates = netcdf.coordinates(); bounds = coordinates.region().bounds(); siteClasses = coordinates.siteClasses(); @@ -352,9 +339,9 @@ public class NetcdfService { } - private static void setNetcdf(NshmGroup nshmGroup, Path path) { + private static void setNetcdf(Path path) { if (netcdf == null) { - netcdf = new NshmNetcdfReader(nshmGroup, path); + netcdf = new NshmNetcdfReader(path); } } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfWsUtils.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfWsUtils.java index b9208daff307ef713fde77b327fc24864fe79af7..fa3d3eb73ea9640ec9a8e565c730a484650b1bf2 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfWsUtils.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfWsUtils.java @@ -10,7 +10,6 @@ import com.google.gson.GsonBuilder; import gov.usgs.earthquake.nshmp.gmm.Imt; import gov.usgs.earthquake.nshmp.gmm.NehrpSiteClass; -import gov.usgs.earthquake.nshmp.netcdf.NshmGroup; import gov.usgs.earthquake.nshmp.www.Response; import gov.usgs.earthquake.nshmp.www.WsUtils.EnumSerializer; import gov.usgs.earthquake.nshmp.www.WsUtils.NaNSerializer; @@ -27,7 +26,6 @@ public class NetcdfWsUtils { static { GSON = new GsonBuilder() .registerTypeAdapter(Imt.class, new EnumSerializer<Imt>()) - .registerTypeAdapter(NshmGroup.class, new EnumSerializer<NshmGroup>()) .registerTypeAdapter(NehrpSiteClass.class, new EnumSerializer<NehrpSiteClass>()) .registerTypeAdapter(Double.class, new NaNSerializer()) .disableHtmlEscaping() diff --git a/src/main/resources/2018A_CONUS_PGV.zip b/src/main/resources/2018A_CONUS_PGV.zip deleted file mode 100644 index c7dcf5542503e964c7223c90f9b84edca575f572..0000000000000000000000000000000000000000 Binary files a/src/main/resources/2018A_CONUS_PGV.zip and /dev/null differ diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 24a15687398711ea6ada3a3c156bab1c2ec3b958..db526f3a7c18686e5fe3f42abf3a45eada8fa589 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -12,4 +12,4 @@ micronaut: nshmp-ws-static: netcdf-file: ${netcdf:src/main/resources/default.nc} - nshm-group: ${nshm:CONUS_2018A} + nshm-group: ${nshm:EXAMPLE} diff --git a/src/main/resources/catalog.yml b/src/main/resources/catalog.yml deleted file mode 100644 index 55ee48d18f02de1c4e2f7a2f2de41edba08ec452..0000000000000000000000000000000000000000 --- a/src/main/resources/catalog.yml +++ /dev/null @@ -1,83 +0,0 @@ -catalogs: - # Database for 2018b - - - nshm: 'NSHM_2018B' - description: '2018b NSHMP data release for WUS Basins (0.01 degree grid).' - items: - - - id: '5d31f90ce4b01d82ce86ea7b' - files: - - '0p01 Degree WUS Basin Map Data.zip' - url: 'https://www.sciencebase.gov/catalog/item/5d31f90ce4b01d82ce86ea7b' - - # Database for 2018a - - - nshm: 'NSHM_2018A' - description: '2018a NSHMP data release for CONUS (0.05 degree grid).' - map_file: 'map-conus-0p05.geojson' - items: - - - id: '5d31f90ce4b01d82ce86ea7b' - files: - - '0p05 Degree CONUS Site Class Boundary AB Map Data.zip' - - '0p05 Degree CONUS Site Class B Map Data.zip' - - '0p05 Degree CONUS Site Class Boundary BC Map Data.zip' - - '0p05 Degree CONUS Site Class C Map Data.zip' - - '0p05 Degree CONUS Site Class Boundary CD Map Data.zip' - - '0p05 Degree CONUS Site Class D Map Data.zip' - - '0p05 Degree CONUS Site Class Boundary DE Map Data.zip' - - '0p05 Degree CONUS Site Class E Map Data.zip' - science_base_version: 'v1.1, revised 2020-02-18' - url: 'https://www.sciencebase.gov/catalog/item/5d31f90ce4b01d82ce86ea7b' - - - id: 'LOCAL' - files: - - 'src/main/resources/2018A_CONUS_PGV.zip' - science_base_version: 'N/A' - url: 'N/A' - - # Database for 2018 - - - nshm: 'NSHM_2018' - description: '2018 NSHMP data release for CONUS hazard curves.' - items: - - - id: '5d559795e4b01d82ce8e3fef' - files: 'ALL' - url: 'https://www.sciencebase.gov/catalog/item/5d559795e4b01d82ce8e3fef' - - # Database for 2014a - - - nshm: 'NSHM_2014A' - description: '2014 NSHMP data release for additional T and site classes.' - items: - - - id: '5acf74c1e4b0e2c2dd1bf1fa' - files: - - 'Gridded Ground Motion Data.zip' - - 'Gridded Hazard Curve Data Version 1.1.zip' - url: 'https://www.sciencebase.gov/catalog/item/5acf74c1e4b0e2c2dd1bf1fa' - - # Database for 2014 - - - nshm: 'NSHM_2014' - description: '2014 NSHMP data release.' - items: - - - id: '5db9be62e4b06957974eb5ca' - files: - - 'Gridded Ground Motion Data.zip' - - 'Gridded Hazard Curve Data.zip' - url: 'https://www.sciencebase.gov/catalog/item/5db9be62e4b06957974eb5ca' - - # Database for 2008 - - - nshm: 'NSHM_2008' - description: '2008 NSHMP data release.' - items: - - - id: '5db892f2e4b0b0c58b5a51b6' - files: - - 'Gridded Ground Motion Data.zip' - - 'Gridded Hazard Curve Data.zip' - url: 'https://www.sciencebase.gov/catalog/item/5db892f2e4b0b0c58b5a51b6' diff --git a/src/main/resources/default.nc b/src/main/resources/default.nc index 20eaa6b5a1b4a7804eb545b230707f82769a1b27..3199b654b5f9a1679f668787db3810870b0a2769 100644 Binary files a/src/main/resources/default.nc and b/src/main/resources/default.nc differ diff --git a/src/test/java/gov/usgs/earthquake/nshmp/netcdf/NshmGroupTests.java b/src/test/java/gov/usgs/earthquake/nshmp/netcdf/NshmGroupTests.java deleted file mode 100644 index 73107684a86b8294ec3eabb42386326a666741ab..0000000000000000000000000000000000000000 --- a/src/test/java/gov/usgs/earthquake/nshmp/netcdf/NshmGroupTests.java +++ /dev/null @@ -1,16 +0,0 @@ -package gov.usgs.earthquake.nshmp.netcdf; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import org.junit.jupiter.api.Test; - -class NshmGroupTests { - - @Test - final void testCONUS_2018() { - assertEquals(NshmGroup.CONUS_2018A.toString(), "2018 Conterminous U.S. NSHM"); - assertEquals(NshmGroup.CONUS_2018A.baseGroup(), "/CONUS/2018/v1.1"); - assertEquals(NshmGroup.CONUS_2018A.locationPrecision(), 2); - } - -} diff --git a/src/test/java/gov/usgs/earthquake/nshmp/netcdf/NshmNetcdfReaderTests.java b/src/test/java/gov/usgs/earthquake/nshmp/netcdf/NshmNetcdfReaderTests.java index 93996184e9cda76c8e9e5a1b33a2a34b770afa16..0148c8cce851f21547d86835b382db73b7e529b7 100644 --- a/src/test/java/gov/usgs/earthquake/nshmp/netcdf/NshmNetcdfReaderTests.java +++ b/src/test/java/gov/usgs/earthquake/nshmp/netcdf/NshmNetcdfReaderTests.java @@ -124,7 +124,7 @@ public class NshmNetcdfReaderTests { static BoundingHazards BOUNDING_HAZARDS; public static final NshmNetcdfReader NETCDF = - new NshmNetcdfReader(NshmGroup.CONUS_2018A, NETCDF_PATH); + new NshmNetcdfReader(NETCDF_PATH); static { var builder = BoundingHazards.builder(); @@ -187,12 +187,6 @@ public class NshmNetcdfReaderTests { (locationB.latitude - locationA.latitude); } - @Test - final void nshmGroupTests() { - assertEquals(NshmGroup.CONUS_2018A, NETCDF.nshmGroup()); - assertTrue(NshmGroup.CONUS_2018A.equals(NETCDF.nshmGroup())); - } - @Test final void pathTests() { assertEquals(NETCDF_PATH, NETCDF.path()); @@ -242,11 +236,11 @@ public class NshmNetcdfReaderTests { @Test final void invalidNetcdfFileTest() { assertThrows(IllegalArgumentException.class, () -> { - new NshmNetcdfReader(NshmGroup.CONUS_2018A, Paths.get("fileDoesNotExist")); + new NshmNetcdfReader(Paths.get("fileDoesNotExist")); }); assertThrows(RuntimeException.class, () -> { - new NshmNetcdfReader(NshmGroup.CONUS_2018A, NETCDF_INVALID_FILE); + new NshmNetcdfReader(NETCDF_INVALID_FILE); }); }