/* * TestJTS.java * * Created on 10 January 2002, 14:32 */ package uk.ac.leeds.ccg.andyt.tests.jts; import uk.ac.leeds.ccg.andyt.grids.*; import uk.ac.leeds.ccg.andyt.converters.*; //import uk.ac.leeds.ccg.raster.*; //import uk.ac.leeds.ccg.geotools.*; import com.vividsolutions.jts.algorithm.*; import com.vividsolutions.jts.geom.*; import com.vividsolutions.jts.graph.*; import com.vividsolutions.jts.io.*; import com.vividsolutions.jts.util.*; /** * * @author andyt */ public class TestJTS { /** Creates a new instance of TestJTS */ public TestJTS() { } /** * @param args the command line arguments */ public static void main (String args[]) { double x = 0.5d; double y = 0.5d; double distance = 10.0d; GeometryFactory geometryFactory = new GeometryFactory(); com.vividsolutions.jts.geom.PrecisionModel precisionModel = geometryFactory.getPrecisionModel(); com.vividsolutions.jts.algorithm.RobustCGAlgorithms robustCGAlgorithms = new com.vividsolutions.jts.algorithm.RobustCGAlgorithms(); com.vividsolutions.jts.algorithm.RobustLineIntersector robustLineIntersector = new com.vividsolutions.jts.algorithm.RobustLineIntersector(); // Create a point com.vividsolutions.jts.geom.Point point0 = geometryFactory.createPoint(new com.vividsolutions.jts.geom.Coordinate(x,y)); System.out.println(point0.toString()); // Create a polygon com.vividsolutions.jts.geom.Coordinate[] coordinates0 = new com.vividsolutions.jts.geom.Coordinate[5]; coordinates0[0] = new com.vividsolutions.jts.geom.Coordinate(0.0d,0.0d); coordinates0[1] = new com.vividsolutions.jts.geom.Coordinate(0.0d,1.0d); coordinates0[2] = new com.vividsolutions.jts.geom.Coordinate(1.0d,1.0d); coordinates0[3] = new com.vividsolutions.jts.geom.Coordinate(1.0d,0.0d); coordinates0[4] = new com.vividsolutions.jts.geom.Coordinate(0,0d,0.0d); com.vividsolutions.jts.geom.Polygon polygon0 = new com.vividsolutions.jts.geom.Polygon(null,precisionModel,0); try { polygon0 = geometryFactory.createPolygon(geometryFactory.createLinearRing(coordinates0),null); System.out.println(polygon0.toString()); } catch (com.vividsolutions.jts.geom.TopologyException te1) { System.out.println(te1); System.exit(0); } // Test if point is in polygon System.out.println("isPointInPolygon("+robustCGAlgorithms.isPointInPolygon(point0.getCoordinate(),polygon0.getCoordinates())+")"); // Create lineStrings // 1. com.vividsolutions.jts.geom.Coordinate[] coordinates1 = new com.vividsolutions.jts.geom.Coordinate[2]; coordinates1[0] = new com.vividsolutions.jts.geom.Coordinate(x,-1.0d); coordinates1[1] = new com.vividsolutions.jts.geom.Coordinate(x,2.0d); com.vividsolutions.jts.geom.LineString lineString0 = geometryFactory.createLineString(coordinates1); // 2. com.vividsolutions.jts.geom.Coordinate[] coordinates2 = new com.vividsolutions.jts.geom.Coordinate[2]; coordinates2[0] = new com.vividsolutions.jts.geom.Coordinate(x,-1.0d); coordinates2[1] = new com.vividsolutions.jts.geom.Coordinate(x,2.0d); com.vividsolutions.jts.geom.LineString lineString1 = geometryFactory.createLineString(coordinates2); System.out.println(lineString1.toString()); // 3. com.vividsolutions.jts.geom.Coordinate[] coordinates3 = new com.vividsolutions.jts.geom.Coordinate[2]; coordinates3[0] = new com.vividsolutions.jts.geom.Coordinate(0.0d,(y + 0.01d)); coordinates3[1] = new com.vividsolutions.jts.geom.Coordinate(1.0d,(y + 0.01d)); com.vividsolutions.jts.geom.LineString lineString2 = geometryFactory.createLineString(coordinates3); System.out.println(lineString2.toString()); // 4. com.vividsolutions.jts.geom.Coordinate[] coordinates4 = new com.vividsolutions.jts.geom.Coordinate[6]; coordinates4[0] = new com.vividsolutions.jts.geom.Coordinate(0.0d,0.0d); coordinates4[1] = new com.vividsolutions.jts.geom.Coordinate(0.2d,0.2d); coordinates4[2] = new com.vividsolutions.jts.geom.Coordinate(0.2d,0.4d); coordinates4[3] = new com.vividsolutions.jts.geom.Coordinate(0.4d,0.4d); coordinates4[4] = new com.vividsolutions.jts.geom.Coordinate(0.6d,0.7d); coordinates4[5] = new com.vividsolutions.jts.geom.Coordinate(1.0d,0.0d); com.vividsolutions.jts.geom.LineString lineString3 = geometryFactory.createLineString(coordinates4); System.out.println(lineString3.toString()); // 4. com.vividsolutions.jts.geom.Coordinate[] coordinates = new com.vividsolutions.jts.geom.Coordinate[9]; coordinates[0] = new com.vividsolutions.jts.geom.Coordinate(0.0d,0.0d); coordinates[1] = new com.vividsolutions.jts.geom.Coordinate(0.2d,0.2d); coordinates[2] = new com.vividsolutions.jts.geom.Coordinate(0.2d,0.4d); coordinates[3] = new com.vividsolutions.jts.geom.Coordinate(0.4d,0.4d); coordinates[4] = new com.vividsolutions.jts.geom.Coordinate(0.6d,0.7d); coordinates[5] = new com.vividsolutions.jts.geom.Coordinate(2.0d,0.0d); coordinates[6] = new com.vividsolutions.jts.geom.Coordinate(-2.0d,0.5d); coordinates[7] = new com.vividsolutions.jts.geom.Coordinate(0.5d,0.5d); coordinates[8] = new com.vividsolutions.jts.geom.Coordinate(2.0d,2.0d); com.vividsolutions.jts.geom.LineString lineString = geometryFactory.createLineString(coordinates); System.out.println(lineString.toString()); // Test if point is on lineStrings System.out.println("isPoint1OnLine0("+robustCGAlgorithms.isOnLine(point0.getCoordinate(),lineString0.getCoordinates())+")"); System.out.println("isPoint1OnLine1("+robustCGAlgorithms.isOnLine(point0.getCoordinate(),lineString1.getCoordinates())+")"); System.out.println("isPoint1OnLine2("+robustCGAlgorithms.isOnLine(point0.getCoordinate(),lineString2.getCoordinates())+")"); System.out.println("isPoint1OnLine3("+robustCGAlgorithms.isOnLine(point0.getCoordinate(),lineString3.getCoordinates())+")"); // Compute intersection of lineStrings as a com.vividsolutions.jts.geom.Point com.vividsolutions.jts.geom.Point point1 = (com.vividsolutions.jts.geom.Point) lineString1.intersection(lineString2); System.out.println("x("+point1.getX()+"),y("+point1.getY()+")"); // Compute intersection of lineStrings as a com.vividsolutions.jts.geom.MultiPoint com.vividsolutions.jts.geom.MultiPoint multiPoint0 = (com.vividsolutions.jts.geom.MultiPoint) lineString3.intersection(lineString2); System.out.println(multiPoint0.toString()); int numberOfPoints = multiPoint0.getNumPoints(); int numberOfGeometries = multiPoint0.getNumGeometries(); System.out.println("numberOfGeometries("+numberOfGeometries+"),numberOfPoints("+numberOfPoints+")"); com.vividsolutions.jts.geom.Coordinate[] coordinates5 = multiPoint0.getCoordinates(); for (int i = 0; i < numberOfPoints; i ++) { System.out.println("x("+coordinates5[i].x+"),y("+coordinates5[i].y+")"); } // Compute intersection of lineString and polygon as a com.vividsolutions.jts.geom.LineString com.vividsolutions.jts.geom.LineString lineString4 = (com.vividsolutions.jts.geom.LineString) lineString0.intersection(polygon0); System.out.println(lineString4.toString()); // Compute intersection of lineString and polygon as a com.vividsolutions.jts.geom.LineString com.vividsolutions.jts.geom.LineString lineString5 = (com.vividsolutions.jts.geom.LineString) lineString1.intersection(polygon0); System.out.println(lineString5.toString()); // Compute intersection of lineString and polygon as a com.vividsolutions.jts.geom.LineString com.vividsolutions.jts.geom.LineString lineString6 = (com.vividsolutions.jts.geom.LineString) lineString2.intersection(polygon0); System.out.println(lineString6.toString()); // Compute intersection of lineString and polygon as a com.vividsolutions.jts.geom.LineString com.vividsolutions.jts.geom.LineString lineString7 = (com.vividsolutions.jts.geom.LineString) lineString3.intersection(polygon0); System.out.println(lineString7.toString()); // Compute intersection of lineString and polygon as a com.vividsolutions.jts.geom.MultiLineString com.vividsolutions.jts.geom.MultiLineString multiLineString0 = (com.vividsolutions.jts.geom.MultiLineString) lineString.intersection(polygon0); System.out.println(multiLineString0.toString()); numberOfPoints = multiLineString0.getNumPoints(); numberOfGeometries = multiLineString0.getNumGeometries(); System.out.println("numberOfGeometries("+numberOfGeometries+"),numberOfPoints("+numberOfPoints+")"); com.vividsolutions.jts.geom.LineString ls1; distance=0.0d; for (int i = 0; i < numberOfGeometries; i ++) { ls1 = (com.vividsolutions.jts.geom.LineString) multiLineString0.getGeometryN(i); numberOfPoints = ls1.getNumPoints(); com.vividsolutions.jts.geom.Coordinate[] c1 = ls1.getCoordinates(); for (int j = 0; j < (numberOfPoints - 1); j ++) { distance += c1[j].distance(c1[j+1]); } } System.out.println("distance("+distance+")"); } }