RegionsJSON.java
- package gov.usgs.earthquake.geoserve;
- import javax.json.JsonArray;
- import javax.json.JsonObject;
- import javax.json.JsonValue;
- import gov.usgs.earthquake.qdm.Point;
- import gov.usgs.earthquake.qdm.Region;
- import gov.usgs.earthquake.qdm.Regions;
- /**
- * RegionsJSON reads GeoJSON formatted ANSS Authoritative Regions.
- */
- public class RegionsJSON {
- /**
- * Parse {@link gov.usgs.earthquake.qdm.Regions} from a GeoJSON feature collection.
- *
- * @param json geojson feature collection.
- * @return Regions
- */
- public Regions parseRegions(final JsonObject json) {
- Regions regions = new Regions();
- // NEIC is always the default
- regions.defaultNetid = "us";
- JsonArray features = json.getJsonArray("features");
- for (JsonValue value : features) {
- JsonObject jsonRegion = value.asJsonObject();
- Region region = parseRegion(jsonRegion);
- regions.netids.add(region.netid);
- regions.regions.add(region);
- }
- return regions;
- }
- /**
- * Parse {@link gov.usgs.earthquake.qdm.Region} from a GeoJSON feature.
- *
- * @param json geojson feature.
- * @return region
- */
- public Region parseRegion(final JsonObject json) {
- JsonObject properties = json.getJsonObject("properties");
- String networkId = properties.getString("network");
- String regionId = properties.getString("region");
- Region region = new Region(networkId, regionId);
- JsonArray coordinates = json.getJsonObject("geometry")
- .getJsonArray("coordinates");
- for (JsonValue coord : coordinates.getJsonArray(0)) {
- JsonArray point = coord.asJsonArray();
- region.points.add(new Point(
- point.getJsonNumber(0).doubleValue(),
- point.getJsonNumber(1).doubleValue()));
- }
- return region;
- }
- }