Search in sources :

Example 1 with Change

use of org.geotoolkit.data.kml.model.Change in project geotoolkit by Geomatys.

the class ChangeTest method changeReadTest.

@Test
public void changeReadTest() throws IOException, XMLStreamException, KmlException, URISyntaxException {
    final KmlReader reader = new KmlReader();
    reader.setInput(new File(pathToTestFile));
    final Kml kmlObjects = reader.read();
    reader.dispose();
    final NetworkLinkControl networkLinkControl = kmlObjects.getNetworkLinkControl();
    final Update update = networkLinkControl.getUpdate();
    final URI targetHref = update.getTargetHref();
    assertEquals("http://www/~sam/January14Data/Point.kml", targetHref.toString());
    assertEquals(1, update.getUpdates().size());
    Change change = (Change) update.getUpdates().get(0);
    assertEquals(1, change.getObjects().size());
    Point point = (Point) change.getObjects().get(0);
    point.getIdAttributes();
    assertEquals("point123", point.getIdAttributes().getTargetId());
    CoordinateSequence coordinates = point.getCoordinateSequence();
    assertEquals(1, point.getCoordinateSequence().size());
    Coordinate coordinate = point.getCoordinateSequence().getCoordinate(0);
    assertEquals(-95.48, coordinate.x, DELTA);
    assertEquals(40.43, coordinate.y, DELTA);
    assertEquals(0, coordinate.z, DELTA);
}
Also used : CoordinateSequence(org.locationtech.jts.geom.CoordinateSequence) Coordinate(org.locationtech.jts.geom.Coordinate) KmlReader(org.geotoolkit.data.kml.xml.KmlReader) Kml(org.geotoolkit.data.kml.model.Kml) Change(org.geotoolkit.data.kml.model.Change) Point(org.geotoolkit.data.kml.model.Point) Update(org.geotoolkit.data.kml.model.Update) File(java.io.File) URI(java.net.URI) NetworkLinkControl(org.geotoolkit.data.kml.model.NetworkLinkControl) Test(org.junit.Test)

Example 2 with Change

use of org.geotoolkit.data.kml.model.Change in project geotoolkit by Geomatys.

the class ChangeTest method changeWriteTest.

@Test
public void changeWriteTest() throws KmlException, IOException, XMLStreamException, ParserConfigurationException, SAXException, URISyntaxException {
    final KmlFactory kmlFactory = DefaultKmlFactory.getInstance();
    final Coordinate coordinate = kmlFactory.createCoordinate(-95.48, 40.43, 0);
    final CoordinateSequence coordinates = kmlFactory.createCoordinates(Arrays.asList(coordinate));
    final Point point = kmlFactory.createPoint(coordinates);
    point.setIdAttributes(kmlFactory.createIdAttributes(null, "point123"));
    final Change change = kmlFactory.createChange(Arrays.asList((Object) point));
    final Update update = kmlFactory.createUpdate();
    update.setUpdates(Arrays.asList((Object) change));
    update.setTargetHref(new URI("http://www/~sam/January14Data/Point.kml"));
    final NetworkLinkControl networkLinkControl = kmlFactory.createNetworkLinkControl();
    networkLinkControl.setUpdate(update);
    final Kml kml = kmlFactory.createKml(networkLinkControl, null, null, null);
    final File temp = File.createTempFile("testChange", ".kml");
    temp.deleteOnExit();
    final KmlWriter writer = new KmlWriter();
    writer.setOutput(temp);
    writer.write(kml);
    writer.dispose();
    DomCompare.compare(new File(pathToTestFile), temp);
}
Also used : CoordinateSequence(org.locationtech.jts.geom.CoordinateSequence) Coordinate(org.locationtech.jts.geom.Coordinate) KmlWriter(org.geotoolkit.data.kml.xml.KmlWriter) Point(org.geotoolkit.data.kml.model.Point) Change(org.geotoolkit.data.kml.model.Change) Kml(org.geotoolkit.data.kml.model.Kml) Update(org.geotoolkit.data.kml.model.Update) URI(java.net.URI) File(java.io.File) NetworkLinkControl(org.geotoolkit.data.kml.model.NetworkLinkControl) Test(org.junit.Test)

Example 3 with Change

use of org.geotoolkit.data.kml.model.Change in project geotoolkit by Geomatys.

the class AnimatedUpdateSimpleTest method animatedUpdateReadSimpleTest.

@Test
public void animatedUpdateReadSimpleTest() throws IOException, XMLStreamException, URISyntaxException, KmlException {
    final Feature document;
    {
        final KmlReader reader = new KmlReader();
        final GxReader gxReader = new GxReader(reader);
        reader.setInput(new File(pathToTestFile));
        reader.addExtensionReader(gxReader);
        final Kml kmlObjects = reader.read();
        reader.dispose();
        document = kmlObjects.getAbstractFeature();
    }
    assertEquals(KmlModelConstants.TYPE_DOCUMENT, document.getType());
    assertEquals("gx:AnimatedUpdate example", document.getPropertyValue(KmlConstants.TAG_NAME));
    assertEquals(Boolean.TRUE, document.getPropertyValue(KmlConstants.TAG_OPEN));
    final Feature tour = (Feature) document.getProperty(KmlConstants.TAG_FEATURES).getValue();
    assertEquals(GxModelConstants.TYPE_TOUR, tour.getType());
    assertEquals("Play me!", tour.getPropertyValue(KmlConstants.TAG_NAME));
    Iterator<?> i = ((Iterable<?>) tour.getPropertyValue(KmlConstants.ATT_PLAYLIST)).iterator();
    assertTrue("Expected at least one element.", i.hasNext());
    final PlayList playList = (PlayList) i.next();
    assertEquals(1, playList.getTourPrimitives().size());
    final AnimatedUpdate animatedUpdate = (AnimatedUpdate) playList.getTourPrimitives().get(0);
    assertEquals(6.5, animatedUpdate.getDuration(), DELTA);
    final Update update = animatedUpdate.getUpdate();
    assertEquals(new URI("http://moncoco.com"), update.getTargetHref());
    assertEquals(1, update.getUpdates().size());
    final Change change = (Change) update.getUpdates().get(0);
    assertEquals(1, change.getObjects().size());
    final IconStyle iconStyle = (IconStyle) change.getObjects().get(0);
    assertEquals("iconstyle1", iconStyle.getIdAttributes().getId());
    assertEquals(10.0, iconStyle.getScale(), DELTA);
    assertFalse("Expected exactly one element.", i.hasNext());
}
Also used : PlayList(org.geotoolkit.data.gx.model.PlayList) Kml(org.geotoolkit.data.kml.model.Kml) Change(org.geotoolkit.data.kml.model.Change) AnimatedUpdate(org.geotoolkit.data.gx.model.AnimatedUpdate) Update(org.geotoolkit.data.kml.model.Update) Feature(org.opengis.feature.Feature) URI(java.net.URI) IconStyle(org.geotoolkit.data.kml.model.IconStyle) AnimatedUpdate(org.geotoolkit.data.gx.model.AnimatedUpdate) KmlReader(org.geotoolkit.data.kml.xml.KmlReader) GxReader(org.geotoolkit.data.gx.xml.GxReader) File(java.io.File) Test(org.junit.Test)

Example 4 with Change

use of org.geotoolkit.data.kml.model.Change in project geotoolkit by Geomatys.

the class AnimatedUpdateSimpleTest method animatedUpdateWriteSimpleTest.

@Test
public void animatedUpdateWriteSimpleTest() throws KmlException, IOException, XMLStreamException, ParserConfigurationException, SAXException, URISyntaxException {
    final GxFactory gxFactory = DefaultGxFactory.getInstance();
    final KmlFactory kmlFactory = DefaultKmlFactory.getInstance();
    final IdAttributes styleIdAttAtributes = kmlFactory.createIdAttributes("iconstyle1", null);
    final IconStyle iconStyle = kmlFactory.createIconStyle();
    iconStyle.setIdAttributes(styleIdAttAtributes);
    iconStyle.setScale(10.0);
    final Change change = kmlFactory.createChange();
    change.setObjects(Arrays.asList((Object) iconStyle));
    final Update update = kmlFactory.createUpdate();
    update.setTargetHref(new URI("http://moncoco.com"));
    update.setUpdates(Arrays.asList((Object) change));
    final AnimatedUpdate animatedUpdate = gxFactory.createAnimatedUpdate();
    animatedUpdate.setDuration(6.5);
    animatedUpdate.setUpdate(update);
    final PlayList playList = gxFactory.createPlayList();
    playList.setTourPrimitives(Arrays.asList((AbstractTourPrimitive) animatedUpdate));
    final Feature tour = gxFactory.createTour();
    tour.setPropertyValue(KmlConstants.TAG_NAME, "Play me!");
    tour.setPropertyValue(KmlConstants.ATT_PLAYLIST, playList);
    final Feature document = kmlFactory.createDocument();
    document.setPropertyValue(KmlConstants.TAG_NAME, "gx:AnimatedUpdate example");
    document.setPropertyValue(KmlConstants.TAG_OPEN, Boolean.TRUE);
    document.setPropertyValue(KmlConstants.TAG_FEATURES, tour);
    final Kml kml = kmlFactory.createKml(null, document, null, null);
    kml.addExtensionUri(GxConstants.URI_GX, "gx");
    final File temp = File.createTempFile("testAnimatedUpdate", ".kml");
    temp.deleteOnExit();
    final KmlWriter writer = new KmlWriter();
    final GxWriter gxWriter = new GxWriter(writer);
    writer.setOutput(temp);
    writer.addExtensionWriter(GxConstants.URI_GX, gxWriter);
    writer.write(kml);
    writer.dispose();
    DomCompare.compare(new File(pathToTestFile), temp);
}
Also used : PlayList(org.geotoolkit.data.gx.model.PlayList) KmlWriter(org.geotoolkit.data.kml.xml.KmlWriter) GxWriter(org.geotoolkit.data.gx.xml.GxWriter) KmlFactory(org.geotoolkit.data.kml.KmlFactory) DefaultKmlFactory(org.geotoolkit.data.kml.DefaultKmlFactory) Change(org.geotoolkit.data.kml.model.Change) AbstractTourPrimitive(org.geotoolkit.data.gx.model.AbstractTourPrimitive) Kml(org.geotoolkit.data.kml.model.Kml) AnimatedUpdate(org.geotoolkit.data.gx.model.AnimatedUpdate) Update(org.geotoolkit.data.kml.model.Update) URI(java.net.URI) Feature(org.opengis.feature.Feature) IdAttributes(org.geotoolkit.data.kml.model.IdAttributes) IconStyle(org.geotoolkit.data.kml.model.IconStyle) AnimatedUpdate(org.geotoolkit.data.gx.model.AnimatedUpdate) File(java.io.File) Test(org.junit.Test)

Example 5 with Change

use of org.geotoolkit.data.kml.model.Change in project geotoolkit by Geomatys.

the class AnimatedUpdateTest method animatedUpdateReadTest.

@Test
public void animatedUpdateReadTest() throws IOException, XMLStreamException, URISyntaxException, KmlException {
    final Feature document;
    {
        final KmlReader reader = new KmlReader();
        final GxReader gxReader = new GxReader(reader);
        reader.setInput(new File(pathToTestFile));
        reader.addExtensionReader(gxReader);
        final Kml kmlObjects = reader.read();
        reader.dispose();
        document = kmlObjects.getAbstractFeature();
    }
    assertEquals(KmlModelConstants.TYPE_DOCUMENT, document.getType());
    assertEquals("gx:AnimatedUpdate example", document.getPropertyValue(KmlConstants.TAG_NAME));
    assertEquals(Boolean.FALSE, document.getPropertyValue(KmlConstants.TAG_OPEN));
    Iterator<?> i = ((Iterable<?>) document.getPropertyValue(KmlConstants.TAG_STYLE_SELECTOR)).iterator();
    assertTrue("Expected at least one element.", i.hasNext());
    {
        final Style style = (Style) i.next();
        assertEquals("pushpin", style.getIdAttributes().getId());
        assertEquals("mystyle", style.getIconStyle().getIdAttributes().getId());
        assertEquals("http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png", style.getIconStyle().getIcon().getHref());
        assertEquals(2.0, style.getIconStyle().getScale(), DELTA);
    }
    assertFalse("Expected exactly one element.", i.hasNext());
    i = ((Iterable<?>) document.getPropertyValue(KmlConstants.TAG_FEATURES)).iterator();
    assertTrue("Expected at least one element.", i.hasNext());
    {
        final Feature placemark = (Feature) i.next();
        assertEquals(placemark.getType(), KmlModelConstants.TYPE_PLACEMARK);
        assertEquals("mountainpin1", ((IdAttributes) placemark.getPropertyValue(KmlConstants.ATT_ID)).getId());
        assertEquals("Pin on a mountaintop", placemark.getPropertyValue(KmlConstants.TAG_NAME));
        assertEquals(new URI("#pushpin"), placemark.getPropertyValue(KmlConstants.TAG_STYLE_URL));
        Point point = (Point) placemark.getPropertyValue(KmlConstants.TAG_GEOMETRY);
        CoordinateSequence coordinates = point.getCoordinateSequence();
        assertEquals(1, coordinates.size());
        Coordinate coordinate = coordinates.getCoordinate(0);
        assertEquals(170.1435558771009, coordinate.x, DELTA);
        assertEquals(-43.60505741890396, coordinate.y, DELTA);
        assertEquals(0, coordinate.z, DELTA);
    }
    assertTrue("Expected at least 2 elements.", i.hasNext());
    final Feature tour = (Feature) i.next();
    assertEquals(GxModelConstants.TYPE_TOUR, tour.getType());
    assertEquals("Play me!", tour.getPropertyValue(KmlConstants.TAG_NAME));
    assertFalse("Expected exactly 2 elements.", i.hasNext());
    i = ((Iterable<?>) tour.getPropertyValue(KmlConstants.ATT_PLAYLIST)).iterator();
    assertTrue("Expected at least one element.", i.hasNext());
    {
        final PlayList playList = (PlayList) i.next();
        assertEquals(3, playList.getTourPrimitives().size());
        final FlyTo flyTo = (FlyTo) playList.getTourPrimitives().get(0);
        assertEquals(3, flyTo.getDuration(), DELTA);
        assertEquals(EnumFlyToMode.SMOOTH, flyTo.getFlyToMode());
        final Camera camera = (Camera) flyTo.getView();
        assertEquals(170.157, camera.getLongitude(), DELTA);
        assertEquals(-43.671, camera.getLatitude(), DELTA);
        assertEquals(9700, camera.getAltitude(), DELTA);
        assertEquals(-6.333, camera.getHeading(), DELTA);
        assertEquals(33.5, camera.getTilt(), DELTA);
        final AnimatedUpdate animatedUpdate = (AnimatedUpdate) playList.getTourPrimitives().get(1);
        assertEquals(5, animatedUpdate.getDuration(), DELTA);
        final Update update = animatedUpdate.getUpdate();
        assertEquals(new URI("http://moncoco.com"), update.getTargetHref());
        assertEquals(1, update.getUpdates().size());
        final Change change = (Change) update.getUpdates().get(0);
        assertEquals(1, change.getObjects().size());
        final IconStyle iconStyle = (IconStyle) change.getObjects().get(0);
        assertEquals("mystyle", iconStyle.getIdAttributes().getTargetId());
        assertEquals(10.0, iconStyle.getScale(), DELTA);
        final Wait wait = (Wait) playList.getTourPrimitives().get(2);
        assertEquals(5, wait.getDuration(), DELTA);
    }
    assertFalse("Expected exactly one element.", i.hasNext());
}
Also used : CoordinateSequence(org.locationtech.jts.geom.CoordinateSequence) PlayList(org.geotoolkit.data.gx.model.PlayList) FlyTo(org.geotoolkit.data.gx.model.FlyTo) Kml(org.geotoolkit.data.kml.model.Kml) Point(org.geotoolkit.data.kml.model.Point) Change(org.geotoolkit.data.kml.model.Change) AnimatedUpdate(org.geotoolkit.data.gx.model.AnimatedUpdate) Update(org.geotoolkit.data.kml.model.Update) Feature(org.opengis.feature.Feature) URI(java.net.URI) IdAttributes(org.geotoolkit.data.kml.model.IdAttributes) IconStyle(org.geotoolkit.data.kml.model.IconStyle) Coordinate(org.locationtech.jts.geom.Coordinate) AnimatedUpdate(org.geotoolkit.data.gx.model.AnimatedUpdate) IconStyle(org.geotoolkit.data.kml.model.IconStyle) Style(org.geotoolkit.data.kml.model.Style) KmlReader(org.geotoolkit.data.kml.xml.KmlReader) Camera(org.geotoolkit.data.kml.model.Camera) Wait(org.geotoolkit.data.gx.model.Wait) GxReader(org.geotoolkit.data.gx.xml.GxReader) File(java.io.File) Test(org.junit.Test)

Aggregations

Change (org.geotoolkit.data.kml.model.Change)7 File (java.io.File)6 URI (java.net.URI)6 Kml (org.geotoolkit.data.kml.model.Kml)6 Update (org.geotoolkit.data.kml.model.Update)6 Test (org.junit.Test)6 Feature (org.opengis.feature.Feature)5 AnimatedUpdate (org.geotoolkit.data.gx.model.AnimatedUpdate)4 PlayList (org.geotoolkit.data.gx.model.PlayList)4 IconStyle (org.geotoolkit.data.kml.model.IconStyle)4 Point (org.geotoolkit.data.kml.model.Point)4 Coordinate (org.locationtech.jts.geom.Coordinate)4 CoordinateSequence (org.locationtech.jts.geom.CoordinateSequence)4 IdAttributes (org.geotoolkit.data.kml.model.IdAttributes)3 KmlReader (org.geotoolkit.data.kml.xml.KmlReader)3 KmlWriter (org.geotoolkit.data.kml.xml.KmlWriter)3 FlyTo (org.geotoolkit.data.gx.model.FlyTo)2 Wait (org.geotoolkit.data.gx.model.Wait)2 GxReader (org.geotoolkit.data.gx.xml.GxReader)2 GxWriter (org.geotoolkit.data.gx.xml.GxWriter)2