Search in sources :

Example 1 with Model

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

the class GxReader method readTrack.

/**
 * @return
 * @throws XMLStreamException
 * @throws KmlException
 * @throws URISyntaxException
 */
public Track readTrack() throws XMLStreamException, KmlException, URISyntaxException {
    AltitudeMode altitudeMode = DEF_ALTITUDE_MODE;
    List<Calendar> whens = new ArrayList<Calendar>();
    List<Coordinate> coordinates = new ArrayList<Coordinate>();
    List<Angles> anglesList = new ArrayList<Angles>();
    Model model = null;
    ExtendedData extendedData = null;
    boucle: while (reader.hasNext()) {
        switch(reader.next()) {
            case XMLStreamConstants.START_ELEMENT:
                final String eName = reader.getLocalName();
                final String eUri = reader.getNamespaceURI();
                if (URI_GX.equals(eUri)) {
                    if (TAG_ALTITUDE_MODE.equals(eName)) {
                        altitudeMode = this.readAltitudeMode();
                    } else if (TAG_COORD.equals(eName)) {
                        coordinates.add(this.readCoord());
                    } else if (TAG_ANGLES.equals(eName)) {
                        anglesList.add(this.readAngles());
                    }
                } else if (this.kmlReader.getVersionUri().equals(eUri)) {
                    if (KmlConstants.TAG_ALTITUDE_MODE.equals(eName)) {
                        altitudeMode = kmlReader.readAltitudeMode();
                    } else if (KmlConstants.TAG_WHEN.equals(eName)) {
                        whens.add(kmlReader.readCalendar());
                    } else if (KmlConstants.TAG_MODEL.equals(eName)) {
                        model = kmlReader.readModel();
                    } else if (KmlConstants.TAG_EXTENDED_DATA.equals(eName)) {
                        extendedData = kmlReader.readExtendedData();
                    }
                }
                break;
            case XMLStreamConstants.END_ELEMENT:
                if (TAG_TRACK.equals(reader.getLocalName()) && URI_GX.contains(reader.getNamespaceURI())) {
                    break boucle;
                }
                break;
        }
    }
    CoordinateSequence coord = KML_FACTORY.createCoordinates(coordinates);
    return GX_FACTORY.createTrack(altitudeMode, whens, coord, anglesList, model, extendedData);
}
Also used : CoordinateSequence(org.locationtech.jts.geom.CoordinateSequence) ExtendedData(org.geotoolkit.data.kml.model.ExtendedData) Coordinate(org.locationtech.jts.geom.Coordinate) Calendar(java.util.Calendar) ArrayList(java.util.ArrayList) Model(org.geotoolkit.data.kml.model.Model) Angles(org.geotoolkit.data.gx.model.Angles) EnumAltitudeMode(org.geotoolkit.data.gx.model.EnumAltitudeMode) AltitudeMode(org.geotoolkit.data.kml.model.AltitudeMode)

Example 2 with Model

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

the class ModelTest method modelReadTest.

@Test
public void modelReadTest() throws IOException, XMLStreamException, URISyntaxException, KmlException {
    final KmlReader reader = new KmlReader();
    reader.setInput(new File(pathToTestFile));
    final Kml kmlObjects = reader.read();
    reader.dispose();
    final Feature placemark = kmlObjects.getAbstractFeature();
    assertEquals("Colorado", placemark.getPropertyValue(KmlConstants.TAG_NAME));
    final Model model = (Model) placemark.getPropertyValue(KmlConstants.TAG_GEOMETRY);
    assertEquals("khModel543", model.getIdAttributes().getId());
    assertEquals(EnumAltitudeMode.RELATIVE_TO_GROUND, model.getAltitudeMode());
    final Location location = model.getLocation();
    assertEquals(39.55375305703105, location.getLongitude(), DELTA);
    assertEquals(-18.9813220168456, location.getLatitude(), DELTA);
    assertEquals(1223, location.getAltitude(), DELTA);
    final Orientation orientation = model.getOrientation();
    assertEquals(45, orientation.getHeading(), DELTA);
    assertEquals(10, orientation.getTilt(), DELTA);
    assertEquals(0.5, orientation.getRoll(), DELTA);
    final Scale scale = model.getScale();
    assertEquals(4, scale.getX(), DELTA);
    assertEquals(2, scale.getY(), DELTA);
    assertEquals(3, scale.getZ(), DELTA);
    final Link link = model.getLink();
    assertEquals("house.dae", link.getHref());
    assertEquals(RefreshMode.ON_EXPIRE, link.getRefreshMode());
    final ResourceMap resourceMap = model.getRessourceMap();
    assertEquals(3, resourceMap.getAliases().size());
    final Alias alias0 = resourceMap.getAliases().get(0);
    assertEquals(new URI("../files/CU-Macky---Center-StairsnoCulling.jpg"), alias0.getTargetHref());
    assertEquals(new URI("CU-Macky---Center-StairsnoCulling.jpg"), alias0.getSourceHref());
    final Alias alias1 = resourceMap.getAliases().get(1);
    assertEquals(new URI("../files/CU-Macky-4sideturretnoCulling.jpg"), alias1.getTargetHref());
    assertEquals(new URI("CU-Macky-4sideturretnoCulling.jpg"), alias1.getSourceHref());
    final Alias alias2 = resourceMap.getAliases().get(2);
    assertEquals(new URI("../files/CU-Macky-Back-NorthnoCulling.jpg"), alias2.getTargetHref());
    assertEquals(new URI("CU-Macky-Back-NorthnoCulling.jpg"), alias2.getSourceHref());
}
Also used : ResourceMap(org.geotoolkit.data.kml.model.ResourceMap) Alias(org.geotoolkit.data.kml.model.Alias) Model(org.geotoolkit.data.kml.model.Model) KmlReader(org.geotoolkit.data.kml.xml.KmlReader) Scale(org.geotoolkit.data.kml.model.Scale) Kml(org.geotoolkit.data.kml.model.Kml) Orientation(org.geotoolkit.data.kml.model.Orientation) File(java.io.File) Feature(org.opengis.feature.Feature) URI(java.net.URI) Link(org.geotoolkit.data.kml.model.Link) Location(org.geotoolkit.data.kml.model.Location) Test(org.junit.Test)

Example 3 with Model

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

the class ModelTest method modelWriteTest.

@Test
public void modelWriteTest() throws KmlException, IOException, XMLStreamException, ParserConfigurationException, SAXException, URISyntaxException {
    final KmlFactory kmlFactory = DefaultKmlFactory.getInstance();
    final Alias alias0 = kmlFactory.createAlias();
    alias0.setTargetHref(new URI("../files/CU-Macky---Center-StairsnoCulling.jpg"));
    alias0.setSourceHref(new URI("CU-Macky---Center-StairsnoCulling.jpg"));
    final Alias alias1 = kmlFactory.createAlias();
    alias1.setTargetHref(new URI("../files/CU-Macky-4sideturretnoCulling.jpg"));
    alias1.setSourceHref(new URI("CU-Macky-4sideturretnoCulling.jpg"));
    final Alias alias2 = kmlFactory.createAlias();
    alias2.setTargetHref(new URI("../files/CU-Macky-Back-NorthnoCulling.jpg"));
    alias2.setSourceHref(new URI("CU-Macky-Back-NorthnoCulling.jpg"));
    final ResourceMap resourceMap = kmlFactory.createResourceMap();
    resourceMap.setAliases(Arrays.asList(alias0, alias1, alias2));
    final Link link = kmlFactory.createLink();
    link.setHref("house.dae");
    link.setRefreshMode(RefreshMode.ON_EXPIRE);
    final Scale scale = kmlFactory.createScale();
    scale.setX(4);
    scale.setY(2);
    scale.setZ(3);
    final Orientation orientation = kmlFactory.createOrientation();
    orientation.setHeading(45);
    orientation.setTilt(10);
    orientation.setRoll(0.5);
    final Location location = kmlFactory.createLocation();
    location.setLongitude(39.55375305703105);
    location.setLatitude(-18.9813220168456);
    location.setAltitude(1223);
    final Model model = kmlFactory.createModel();
    final IdAttributes idAttributes = kmlFactory.createIdAttributes("khModel543", null);
    model.setIdAttributes(idAttributes);
    model.setAltitudeMode(EnumAltitudeMode.RELATIVE_TO_GROUND);
    model.setLocation(location);
    model.setOrientation(orientation);
    model.setScale(scale);
    model.setLink(link);
    model.setRessourceMap(resourceMap);
    final Feature placemark = kmlFactory.createPlacemark();
    placemark.setPropertyValue(KmlConstants.TAG_NAME, "Colorado");
    placemark.setPropertyValue(KmlConstants.TAG_GEOMETRY, model);
    final Kml kml = kmlFactory.createKml(null, placemark, null, null);
    final File temp = File.createTempFile("testModel", ".kml");
    temp.deleteOnExit();
    final KmlWriter writer = new KmlWriter();
    writer.setOutput(temp);
    writer.write(kml);
    writer.dispose();
    DomCompare.compare(new File(pathToTestFile), temp);
}
Also used : KmlWriter(org.geotoolkit.data.kml.xml.KmlWriter) Scale(org.geotoolkit.data.kml.model.Scale) Kml(org.geotoolkit.data.kml.model.Kml) Orientation(org.geotoolkit.data.kml.model.Orientation) URI(java.net.URI) Feature(org.opengis.feature.Feature) IdAttributes(org.geotoolkit.data.kml.model.IdAttributes) ResourceMap(org.geotoolkit.data.kml.model.ResourceMap) Alias(org.geotoolkit.data.kml.model.Alias) Model(org.geotoolkit.data.kml.model.Model) File(java.io.File) Link(org.geotoolkit.data.kml.model.Link) Location(org.geotoolkit.data.kml.model.Location) Test(org.junit.Test)

Aggregations

Model (org.geotoolkit.data.kml.model.Model)3 File (java.io.File)2 URI (java.net.URI)2 Alias (org.geotoolkit.data.kml.model.Alias)2 Kml (org.geotoolkit.data.kml.model.Kml)2 Link (org.geotoolkit.data.kml.model.Link)2 Location (org.geotoolkit.data.kml.model.Location)2 Orientation (org.geotoolkit.data.kml.model.Orientation)2 ResourceMap (org.geotoolkit.data.kml.model.ResourceMap)2 Scale (org.geotoolkit.data.kml.model.Scale)2 Test (org.junit.Test)2 Feature (org.opengis.feature.Feature)2 ArrayList (java.util.ArrayList)1 Calendar (java.util.Calendar)1 Angles (org.geotoolkit.data.gx.model.Angles)1 EnumAltitudeMode (org.geotoolkit.data.gx.model.EnumAltitudeMode)1 AltitudeMode (org.geotoolkit.data.kml.model.AltitudeMode)1 ExtendedData (org.geotoolkit.data.kml.model.ExtendedData)1 IdAttributes (org.geotoolkit.data.kml.model.IdAttributes)1 KmlReader (org.geotoolkit.data.kml.xml.KmlReader)1