Search in sources :

Example 1 with Alias

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

the class KmlReader method readResourceMap.

private ResourceMap readResourceMap() throws XMLStreamException, URISyntaxException, KmlException {
    // AbstractObject
    List<SimpleTypeContainer> objectSimpleExtensions = new ArrayList<>();
    IdAttributes idAttributes = readIdAttributes();
    // ResourceMap
    List<Alias> aliases = new ArrayList<>();
    List<SimpleTypeContainer> resourceMapSimpleExtensions = new ArrayList<>();
    List<Object> resourceMapObjectExtensions = new ArrayList<>();
    boucle: while (reader.hasNext()) {
        switch(reader.next()) {
            case XMLStreamConstants.START_ELEMENT:
                {
                    final String eName = reader.getLocalName();
                    final String eUri = reader.getNamespaceURI();
                    // KML
                    if (equalsNamespace(eUri)) {
                        if (TAG_ALIAS.equals(eName)) {
                            aliases.add(readAlias());
                        }
                    } else // EXTENSIONS
                    {
                        KmlExtensionReader r;
                        if ((r = this.getComplexExtensionReader(TAG_RESOURCE_MAP, eUri, eName)) != null) {
                            Entry<Object, Extensions.Names> result = r.readExtensionElement(URI_KML, TAG_RESOURCE_MAP, eUri, eName);
                            Object ext = result.getKey();
                            Extensions.Names extensionLevel = result.getValue();
                            if (Extensions.Names.RESOURCE_MAP.equals(extensionLevel)) {
                                resourceMapObjectExtensions.add(ext);
                            }
                        } else if ((r = getSimpleExtensionReader(TAG_RESOURCE_MAP, eUri, eName)) != null) {
                            Entry<Object, Extensions.Names> result = r.readExtensionElement(URI_KML, TAG_RESOURCE_MAP, eUri, eName);
                            Object ext = result.getKey();
                            Extensions.Names extensionLevel = result.getValue();
                            if (Extensions.Names.OBJECT.equals(extensionLevel)) {
                                objectSimpleExtensions.add((SimpleTypeContainer) ext);
                            } else if (Extensions.Names.RESOURCE_MAP.equals(extensionLevel)) {
                                resourceMapSimpleExtensions.add((SimpleTypeContainer) ext);
                            }
                        }
                    }
                    break;
                }
            case XMLStreamConstants.END_ELEMENT:
                {
                    if (TAG_RESOURCE_MAP.equals(reader.getLocalName()) && containsNamespace(reader.getNamespaceURI())) {
                        break boucle;
                    }
                    break;
                }
        }
    }
    return KmlReader.KML_FACTORY.createResourceMap(objectSimpleExtensions, idAttributes, aliases, resourceMapSimpleExtensions, resourceMapObjectExtensions);
}
Also used : ArrayList(java.util.ArrayList) LineString(org.geotoolkit.data.kml.model.LineString) SimpleTypeContainer(org.geotoolkit.data.kml.xsd.SimpleTypeContainer) Extensions(org.geotoolkit.data.kml.model.Extensions) IdAttributes(org.geotoolkit.data.kml.model.IdAttributes) Entry(java.util.Map.Entry) Alias(org.geotoolkit.data.kml.model.Alias)

Example 2 with Alias

use of org.geotoolkit.data.kml.model.Alias 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 Alias

use of org.geotoolkit.data.kml.model.Alias 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)

Example 4 with Alias

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

the class KmlWriter method writeResourceMap.

private void writeResourceMap(ResourceMap value) throws XMLStreamException, KmlException {
    writer.writeStartElement(URI_KML, TAG_RESOURCE_MAP);
    writeCommonAbstractObject(value);
    for (Alias alias : value.getAliases()) {
        writeAlias(alias);
    }
    writeStandardExtensionLevel(value.extensions(), Names.RESOURCE_MAP);
    writer.writeEndElement();
}
Also used : Alias(org.geotoolkit.data.kml.model.Alias)

Aggregations

Alias (org.geotoolkit.data.kml.model.Alias)4 File (java.io.File)2 URI (java.net.URI)2 IdAttributes (org.geotoolkit.data.kml.model.IdAttributes)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 Model (org.geotoolkit.data.kml.model.Model)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 Entry (java.util.Map.Entry)1 Extensions (org.geotoolkit.data.kml.model.Extensions)1 LineString (org.geotoolkit.data.kml.model.LineString)1 KmlReader (org.geotoolkit.data.kml.xml.KmlReader)1 KmlWriter (org.geotoolkit.data.kml.xml.KmlWriter)1 SimpleTypeContainer (org.geotoolkit.data.kml.xsd.SimpleTypeContainer)1