Package org.geotools.graph.build.polygon

Source Code of org.geotools.graph.build.polygon.PolygonGraphGeneratorTest

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2002-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.graph.build.polygon;

import java.util.StringTokenizer;

import junit.framework.TestCase;

import org.geotools.graph.build.basic.BasicGraphBuilder;
import org.geotools.graph.structure.Graph;
import org.geotools.graph.structure.Node;

import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Polygon;

/**
*
*
* @source $URL$
*/
public class PolygonGraphGeneratorTest extends TestCase {

  static GeometryFactory gf = new GeometryFactory();
  PolygonGraphGenerator gg;
 
  protected void setUp() throws Exception {
    super.setUp();
    PolygonGraphGenerator.PolygonRelationship rel =
      new PolygonGraphGenerator.PolygonRelationship() {

        public boolean related(Polygon p1, Polygon p2) {
          return p1.intersects(p2);
        }

        public boolean equal(Polygon p1, Polygon p2) {
          return p1.equalsTopo(p2);
        }
     
    };
   
    gg = new PolygonGraphGenerator(new BasicGraphBuilder(),rel);
  }
 
  public void testAdd() {
    Polygon p1 = createPolygon("0 0,1 1,2 2,0 0");
    Polygon p2 = createPolygon("3 3,4 4,5 5,3 3");
    Polygon p3 = createPolygon("6 6,7 7,8 8,6 6");
   
    Node n1 = (Node) gg.add(p1);
    Node n2 = (Node) gg.add(p2);
    Node n3 = (Node) gg.add(p3);

    assertNotNull(n1);
    assertEquals(n1.getObject(),p1);

    assertNotNull(n2);
    assertEquals(n2.getObject(),p2);
   
    assertNotNull(n3);
    assertEquals(n3.getObject(),p3);
   
    Graph g = gg.getGraph();
    assertEquals(3,g.getNodes().size());
    assertEquals(0,g.getEdges().size());
  }
 
  public void testRelationships() {
    Polygon p1 = createPolygon("0 0,5 0,5 5,0 5,0 0");
    Polygon p2 = createPolygon("4 4,9 4,9 9,4 9,4 4");
    Polygon p3 = createPolygon("2 2,7 2,7 -3,2 -3,2 2");
   
    Node n1 = (Node) gg.add(p1);
    Node n2 = (Node) gg.add(p2);
    Node n3 = (Node) gg.add(p3);

    assertNotNull(n1.getEdge(n2));
    assertNotNull(n2.getEdge(n1));
    assertNotNull(n1.getEdge(n3));
    assertNotNull(n2.getEdge(n1));
   
    assertNull(n2.getEdge(n3));
    assertNull(n2.getEdge(n2));
   
    Graph g = gg.getGraph();
    assertEquals(3,g.getNodes().size());
    assertEquals(2,g.getEdges().size());
  }
 
  protected Polygon createPolygon(String coordinates) {
    StringTokenizer tokens = new StringTokenizer(coordinates,",");
    Coordinate[] c = new Coordinate[tokens.countTokens()];
   
    int i = 0;
    while(tokens.hasMoreTokens()) {
      String token = tokens.nextToken();
      String[] oordinates = token.split(" ");
      c[i++] = new Coordinate(
        Double.parseDouble(oordinates[0]),
        Double.parseDouble(oordinates[1])
      );
    }
   
    return gf.createPolygon(gf.createLinearRing(c), null);
  }
}
TOP

Related Classes of org.geotools.graph.build.polygon.PolygonGraphGeneratorTest

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.