/** * Tests that proper JSON output is received when no {@link Metacard#GEOGRAPHY} is found. * * @throws CatalogTransformerException * @throws IOException * @throws ParseException */ @Test public void testNoGeo() throws CatalogTransformerException, IOException, ParseException { Date now = new Date(); MetacardImpl metacard = new MetacardImpl(); setupBasicMetacard(now, metacard); GeoJsonMetacardTransformer transformer = new GeoJsonMetacardTransformer(); BinaryContent content = transformer.transform(metacard, null); assertEquals( content.getMimeTypeValue(), GeoJsonMetacardTransformer.DEFAULT_MIME_TYPE.getBaseType()); String jsonText = new String(content.getByteArray()); LOGGER.debug(jsonText); Object object = PARSER.parse(jsonText); JSONObject obj2 = (JSONObject) object; assertThat(obj2.get("geometry"), nullValue()); verifyBasicMetacardJson(now, obj2); }
@Test public void testWithGeometryCollection() throws CatalogTransformerException, IOException, ParseException { Date now = new Date(); MetacardImpl metacard = new MetacardImpl(); metacard.setLocation("GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))"); setupBasicMetacard(now, metacard); GeoJsonMetacardTransformer transformer = new GeoJsonMetacardTransformer(); BinaryContent content = transformer.transform(metacard, null); assertEquals( content.getMimeTypeValue(), GeoJsonMetacardTransformer.DEFAULT_MIME_TYPE.getBaseType()); String jsonText = new String(content.getByteArray()); LOGGER.debug(jsonText); Object object = PARSER.parse(jsonText); JSONObject obj2 = (JSONObject) object; Map geometryMap = (Map) obj2.get("geometry"); assertThat(geometryMap.get(CompositeGeometry.TYPE_KEY).toString(), is(GeometryCollection.TYPE)); assertThat(geometryMap.get(CompositeGeometry.GEOMETRIES_KEY), notNullValue()); verifyBasicMetacardJson(now, obj2); }
/** * Tests that a POINT Geography can be returned in JSON * * @throws CatalogTransformerException * @throws IOException * @throws ParseException */ @Test public void testwithPointGeo() throws CatalogTransformerException, IOException, ParseException { Date now = new Date(); MetacardImpl metacard = new MetacardImpl(); metacard.setLocation(DEFAULT_LOCATION); setupBasicMetacard(now, metacard); GeoJsonMetacardTransformer transformer = new GeoJsonMetacardTransformer(); BinaryContent content = transformer.transform(metacard, null); assertEquals( content.getMimeTypeValue(), GeoJsonMetacardTransformer.DEFAULT_MIME_TYPE.getBaseType()); String jsonText = new String(content.getByteArray()); LOGGER.debug(jsonText); Object object = PARSER.parse(jsonText); JSONObject obj2 = (JSONObject) object; Map geometryMap = (Map) obj2.get("geometry"); assertThat(geometryMap.get(CompositeGeometry.TYPE_KEY).toString(), is(Point.TYPE)); List<Double> coords = (List<Double>) geometryMap.get(CompositeGeometry.COORDINATES_KEY); assertThat(coords.size(), is(2)); assertThat(coords.get(0), equalTo(1.0)); assertThat(coords.get(1), equalTo(0.0)); verifyBasicMetacardJson(now, obj2); }
@Test public void testwithPolygonGeoWithHole() throws CatalogTransformerException, IOException, ParseException { Date now = new Date(); MetacardImpl metacard = new MetacardImpl(); metacard.setLocation( "POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10),(20 30, 35 35, 30 20, 20 30))"); setupBasicMetacard(now, metacard); GeoJsonMetacardTransformer transformer = new GeoJsonMetacardTransformer(); BinaryContent content = transformer.transform(metacard, null); assertEquals( content.getMimeTypeValue(), GeoJsonMetacardTransformer.DEFAULT_MIME_TYPE.getBaseType()); String jsonText = new String(content.getByteArray()); LOGGER.debug(jsonText); Object object = PARSER.parse(jsonText); JSONObject obj2 = (JSONObject) object; Map geometryMap = (Map) obj2.get("geometry"); assertThat(geometryMap.get(CompositeGeometry.TYPE_KEY).toString(), is(Polygon.TYPE)); List<List> listOfRings = (List<List>) geometryMap.get(CompositeGeometry.COORDINATES_KEY); assertThat(listOfRings.size(), is(2)); List<List> exteriorRing = listOfRings.get(0); List<List> interiorRing = listOfRings.get(1); testPopularPolygon(exteriorRing); List<Double> interiorlist1 = interiorRing.get(0); List<Double> interiorlist2 = interiorRing.get(1); List<Double> interiorlist3 = interiorRing.get(2); List<Double> interiorlist4 = interiorRing.get(3); assertThat(interiorlist1.get(0), equalTo(20.0)); assertThat(interiorlist1.get(1), equalTo(30.0)); assertThat(interiorlist2.get(0), equalTo(35.0)); assertThat(interiorlist2.get(1), equalTo(35.0)); assertThat(interiorlist3.get(0), equalTo(30.0)); assertThat(interiorlist3.get(1), equalTo(20.0)); assertThat(interiorlist4.get(0), equalTo(20.0)); assertThat(interiorlist4.get(1), equalTo(30.0)); verifyBasicMetacardJson(now, obj2); }
@Test public void testwithMultiLineStringGeo() throws CatalogTransformerException, IOException, ParseException { Date now = new Date(); MetacardImpl metacard = new MetacardImpl(); metacard.setLocation("MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))"); setupBasicMetacard(now, metacard); GeoJsonMetacardTransformer transformer = new GeoJsonMetacardTransformer(); BinaryContent content = transformer.transform(metacard, null); assertEquals( content.getMimeTypeValue(), GeoJsonMetacardTransformer.DEFAULT_MIME_TYPE.getBaseType()); String jsonText = new String(content.getByteArray()); LOGGER.debug(jsonText); Object object = PARSER.parse(jsonText); JSONObject obj2 = (JSONObject) object; Map geometryMap = (Map) obj2.get("geometry"); assertThat(geometryMap.get(CompositeGeometry.TYPE_KEY).toString(), is(MultiLineString.TYPE)); List<List<List<Double>>> coordsList = (List<List<List<Double>>>) geometryMap.get(CompositeGeometry.COORDINATES_KEY); assertThat(coordsList.size(), is(2)); List<List<Double>> list1 = coordsList.get(0); List<List<Double>> list2 = coordsList.get(1); assertThat(list1.get(0).get(0), equalTo(10.0)); assertThat(list1.get(0).get(1), equalTo(10.0)); assertThat(list1.get(1).get(0), equalTo(20.0)); assertThat(list1.get(1).get(1), equalTo(20.0)); assertThat(list1.get(2).get(0), equalTo(10.0)); assertThat(list1.get(2).get(1), equalTo(40.0)); assertThat(list2.get(0).get(0), equalTo(40.0)); assertThat(list2.get(0).get(1), equalTo(40.0)); assertThat(list2.get(1).get(0), equalTo(30.0)); assertThat(list2.get(1).get(1), equalTo(30.0)); assertThat(list2.get(2).get(0), equalTo(40.0)); assertThat(list2.get(2).get(1), equalTo(20.0)); assertThat(list2.get(3).get(0), equalTo(30.0)); assertThat(list2.get(3).get(1), equalTo(10.0)); verifyBasicMetacardJson(now, obj2); }
@Test public void testWithMultiPolygonGeo() throws CatalogTransformerException, IOException, ParseException { Date now = new Date(); MetacardImpl metacard = new MetacardImpl(); metacard.setLocation( "MULTIPOLYGON (((30 10, 10 20, 20 40, 40 40, 30 10)),((15 5, 40 10, 10 20, 5 10, 15 5)))"); setupBasicMetacard(now, metacard); GeoJsonMetacardTransformer transformer = new GeoJsonMetacardTransformer(); BinaryContent content = transformer.transform(metacard, null); assertEquals( content.getMimeTypeValue(), GeoJsonMetacardTransformer.DEFAULT_MIME_TYPE.getBaseType()); String jsonText = new String(content.getByteArray()); LOGGER.debug(jsonText); Object object = PARSER.parse(jsonText); JSONObject obj2 = (JSONObject) object; Map geometryMap = (Map) obj2.get("geometry"); assertThat(geometryMap.get(CompositeGeometry.TYPE_KEY).toString(), is(MultiPolygon.TYPE)); List<List> listOfPolygons = (List<List>) geometryMap.get(CompositeGeometry.COORDINATES_KEY); assertThat(listOfPolygons.size(), is(2)); List<List> polygon1 = listOfPolygons.get(0); List<List> polygon2 = listOfPolygons.get(1); List<List> polygon1FirstRing = polygon1.get(0); List<List> polygon2FirstRing = polygon2.get(0); testPopularPolygon(polygon1FirstRing); testSecondPolygon(polygon2FirstRing); verifyBasicMetacardJson(now, obj2); }