Package org.geotools.kml.bindings

Source Code of org.geotools.kml.bindings.MultiGeometryTypeBindingTest

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2008, Open Source Geospatial Foundation (OSGeo)
*
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation;
*    version 2.1 of the License.
*
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*/
package org.geotools.kml.bindings;

import javax.xml.namespace.QName;

import org.geotools.kml.KML;
import org.geotools.kml.KMLTestSupport;
import org.geotools.xml.Binding;
import org.w3c.dom.Document;

import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryCollection;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LineString;
import com.vividsolutions.jts.geom.LinearRing;
import com.vividsolutions.jts.geom.MultiLineString;
import com.vividsolutions.jts.geom.MultiPoint;
import com.vividsolutions.jts.geom.MultiPolygon;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.geom.Polygon;

/**
*
*
* @source $URL$
*/
public class MultiGeometryTypeBindingTest extends KMLTestSupport {

    public void testType() {
        assertEquals(GeometryCollection.class, binding(KML.MultiGeometryType).getType());
    }

    public void testExecutionMode() {
        assertEquals(Binding.OVERRIDE, binding(KML.MultiGeometryType).getExecutionMode());
    }

    public void testParseMultiPoint() throws Exception {
        String xml = "<MultiGeometry>"
            "<Point><coordinates>0,0</coordinates></Point>" +
            "<Point><coordinates>1,1</coordinates></Point>" +
            "</MultiGeometry>";

        buildDocument(xml);

        MultiPoint mp = (MultiPoint) parse();
        assertEquals( 2, mp.getNumPoints() );
    }
   
    public void testEncodeMultiPoint() throws Exception {
        GeometryFactory gf = new GeometryFactory();
        MultiPoint mp = gf.createMultiPoint(
            new Coordinate[]{ new Coordinate( 0, 0 ), new Coordinate(1,1) }
        );
        Document dom = encode( mp, KML.MultiGeometry );
        assertEquals( 2, getElementsByQName(dom, KML.Point ).getLength() );
    }
   
    public void testParseMultiLineString() throws Exception {
        String xml = "<MultiGeometry>"
            "<LineString><coordinates>0,0 1,1</coordinates></LineString>" +
            "<LineString><coordinates>2,2 3,3</coordinates></LineString>" +
            "</MultiGeometry>";

        buildDocument(xml);

        MultiLineString ml = (MultiLineString) parse();
        assertEquals( 2, ml.getNumGeometries() );
    }
   
    public void testEncodeMultiLineString() throws Exception {
        GeometryFactory gf = new GeometryFactory();
        MultiLineString ml = gf.createMultiLineString(
            new LineString[]{
                gf.createLineString( new Coordinate[] { new Coordinate( 0, 0), new Coordinate( 1, 1) } ),
                gf.createLineString( new Coordinate[] { new Coordinate( 2, 2), new Coordinate( 3, 3) } )
            }
        );
        Document dom = encode( ml, KML.MultiGeometry );
        assertEquals( 2, getElementsByQName(dom, KML.LineString ).getLength() );
    }
   
    public void testParseMultiPolygon() throws Exception {
        String xml = "<MultiGeometry>"
            "<Polygon>" +
            "<outerBoundaryIs><LinearRing><coordinates>0,0 1,1 2,2 0,0</coordinates></LinearRing></outerBoundaryIs></Polygon>" +
            "<Polygon>" +
            "<outerBoundaryIs><LinearRing><coordinates>0,0 1,1 2,2 0,0</coordinates></LinearRing></outerBoundaryIs></Polygon>" +
            "</MultiGeometry>";

        buildDocument(xml);

        MultiPolygon ml = (MultiPolygon) parse();
        assertEquals( 2, ml.getNumGeometries() );
    }
   
    public void testEncodeMultiPolygon() throws Exception {
        GeometryFactory gf = new GeometryFactory();
        Polygon p = gf.createPolygon(
            gf.createLinearRing( new Coordinate[] {
                new Coordinate(0,0), new Coordinate(1,1), new Coordinate(2,2),
                new Coordinate(0,0)
            }), null
        );
       
        MultiPolygon mp = gf.createMultiPolygon(new Polygon[]{p,p});
       
        Document dom = encode( mp, KML.MultiGeometry );
        assertEquals( 2, getElementsByQName(dom, KML.Polygon ).getLength() );
    }
   
    public void testParseMultiGeometry() throws Exception {
        String xml = "<MultiGeometry>"
        "<Point><coordinates>0,0</coordinates></Point>" +
        "<LineString><coordinates>0,0 1,1</coordinates></LineString>" +
        "<Polygon>" +
        "<outerBoundaryIs><LinearRing><coordinates>0,0 1,1 2,2 0,0</coordinates></LinearRing></outerBoundaryIs></Polygon>" +
        "</MultiGeometry>";
        buildDocument(xml);
       
        GeometryCollection gc = (GeometryCollection) parse();
        assertEquals( 3, gc.getNumGeometries() );
        assertTrue( gc.getGeometryN(0) instanceof Point );
        assertTrue( gc.getGeometryN(1) instanceof LineString );
        assertTrue( gc.getGeometryN(2) instanceof Polygon );
    }
   
    public void testEncodeMultiGeometry() throws Exception {
        GeometryFactory gf = new GeometryFactory();
        GeometryCollection gc = gf.createGeometryCollection(
            new Geometry[]{
                gf.createPoint( new Coordinate(0,0)),
                gf.createLineString( new Coordinate[]{new Coordinate(0,0), new Coordinate(1,1)}),
                gf.createPolygon(
                    gf.createLinearRing( new Coordinate[] {
                        new Coordinate(0,0), new Coordinate(1,1), new Coordinate(2,2),
                        new Coordinate(0,0)
                    }), null
                )   
            }
        );
       
        Document dom = encode(gc, KML.MultiGeometry );
        assertNotNull( getElementByQName(dom, KML.Point ) );
        assertNotNull( getElementByQName(dom, KML.LineString ) );
        assertNotNull( getElementByQName(dom, KML.Polygon ) );
        
    }
}
TOP

Related Classes of org.geotools.kml.bindings.MultiGeometryTypeBindingTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.