org.openjump.core.geomutils
Class GeoUtils

java.lang.Object
  extended by org.openjump.core.geomutils.GeoUtils

public class GeoUtils
extends java.lang.Object

Author:
Larry

Field Summary
static int emptyBit
           
static int lineBit
           
static int pointBit
           
static int polyBit
           
 
Constructor Summary
GeoUtils()
           
 
Method Summary
static com.vividsolutions.jts.geom.Coordinate along(double d, com.vividsolutions.jts.geom.Coordinate q, com.vividsolutions.jts.geom.Coordinate r)
           
static boolean clockwise(com.vividsolutions.jts.geom.Geometry geo)
           
static com.vividsolutions.jts.geom.CoordinateList ConvexHullWrap(com.vividsolutions.jts.geom.CoordinateList coords)
           
static com.vividsolutions.jts.geom.Geometry createPlume(com.vividsolutions.jts.geom.Coordinate[] coords, double radius1, double radius2)
          Generate a plume Polygon using Coordinate[] bounded on each end by circles of radius1 and radius2.
static double distance(com.vividsolutions.jts.geom.Coordinate p1, com.vividsolutions.jts.geom.Coordinate p2)
           
static double dot(com.vividsolutions.jts.geom.Coordinate p, com.vividsolutions.jts.geom.Coordinate q)
           
static boolean geometriesEqual(com.vividsolutions.jts.geom.Geometry geo1, com.vividsolutions.jts.geom.Geometry geo2)
           
static boolean geometryIsSegmentOf(com.vividsolutions.jts.geom.Geometry geo1, com.vividsolutions.jts.geom.Geometry geo2)
           
static double getBearing180(com.vividsolutions.jts.geom.Coordinate startPt, com.vividsolutions.jts.geom.Coordinate endPt)
           
static double getBearing360(com.vividsolutions.jts.geom.Coordinate startPt, com.vividsolutions.jts.geom.Coordinate endPt)
           
static double getBearingRadians(com.vividsolutions.jts.geom.Coordinate startPt, com.vividsolutions.jts.geom.Coordinate endPt)
           
static com.vividsolutions.jts.geom.Coordinate getCenter(com.vividsolutions.jts.geom.Coordinate p1, com.vividsolutions.jts.geom.Coordinate p2, com.vividsolutions.jts.geom.Coordinate p3)
           
static com.vividsolutions.jts.geom.Coordinate getClosestPointOnLine(com.vividsolutions.jts.geom.Coordinate pt, com.vividsolutions.jts.geom.Coordinate p0, com.vividsolutions.jts.geom.Coordinate p1)
           
static com.vividsolutions.jts.geom.Coordinate getClosestPointOnSegment(com.vividsolutions.jts.geom.Coordinate pt, com.vividsolutions.jts.geom.Coordinate p0, com.vividsolutions.jts.geom.Coordinate p1)
           
static double getDistance(com.vividsolutions.jts.geom.Coordinate pt, com.vividsolutions.jts.geom.Coordinate p0, com.vividsolutions.jts.geom.Coordinate p1)
           
static com.vividsolutions.jts.geom.Coordinate[] getDistanceAngleArray(com.vividsolutions.jts.geom.LineString ring)
           
static com.vividsolutions.jts.geom.Coordinate[] getDistanceBearingArray(com.vividsolutions.jts.geom.LineString ring)
           
static double getDistanceFromPointToGeometry(com.vividsolutions.jts.geom.Coordinate coord, com.vividsolutions.jts.geom.Geometry geo)
           
static com.vividsolutions.jts.geom.Coordinate getIntersection(com.vividsolutions.jts.geom.Coordinate p1, com.vividsolutions.jts.geom.Coordinate p2, com.vividsolutions.jts.geom.Coordinate p3, com.vividsolutions.jts.geom.Coordinate p4)
           
static double interiorAngle(com.vividsolutions.jts.geom.Coordinate p1, com.vividsolutions.jts.geom.Coordinate p2, com.vividsolutions.jts.geom.Coordinate p3)
           
static com.vividsolutions.jts.geom.Coordinate intersect(com.vividsolutions.jts.geom.Coordinate P1, com.vividsolutions.jts.geom.Coordinate P2, com.vividsolutions.jts.geom.Coordinate P3, com.vividsolutions.jts.geom.Coordinate P4)
           
static com.vividsolutions.jts.geom.Coordinate intersectSegments(com.vividsolutions.jts.geom.Coordinate P1, com.vividsolutions.jts.geom.Coordinate P2, com.vividsolutions.jts.geom.Coordinate P3, com.vividsolutions.jts.geom.Coordinate P4)
           
static double mag(com.vividsolutions.jts.geom.Coordinate q)
           
static com.vividsolutions.jts.geom.LineString MakeRoundCorner(com.vividsolutions.jts.geom.Coordinate A, com.vividsolutions.jts.geom.Coordinate B, com.vividsolutions.jts.geom.Coordinate C, com.vividsolutions.jts.geom.Coordinate D, double r, boolean arcOnly)
           
static com.vividsolutions.jts.geom.Coordinate perpendicularVector(com.vividsolutions.jts.geom.Coordinate v1, com.vividsolutions.jts.geom.Coordinate v2, double dist, boolean toLeft)
           
static boolean pointToRight(com.vividsolutions.jts.geom.Coordinate pt, com.vividsolutions.jts.geom.Coordinate p1, com.vividsolutions.jts.geom.Coordinate p2)
           
static com.vividsolutions.jts.geom.Geometry reducePoints(com.vividsolutions.jts.geom.Geometry geo, double tolerance)
           
static com.vividsolutions.jts.geom.LinearRing removeRedundantPoints(com.vividsolutions.jts.geom.LineString ring)
           
static com.vividsolutions.jts.geom.Coordinate rotPt(com.vividsolutions.jts.geom.Coordinate inpt, com.vividsolutions.jts.geom.Coordinate rpt, double theta)
           
static java.util.BitSet setBit(java.util.BitSet bitSet, com.vividsolutions.jts.geom.Geometry geometry)
           
static com.vividsolutions.jts.geom.Polygon taperedBufferSegment(com.vividsolutions.jts.geom.Coordinate p0, com.vividsolutions.jts.geom.Coordinate p1, double d1, double d2)
           
static double theta(com.vividsolutions.jts.geom.Coordinate p1, com.vividsolutions.jts.geom.Coordinate p2)
           
static com.vividsolutions.jts.geom.Coordinate unitVec(com.vividsolutions.jts.geom.Coordinate q)
           
static com.vividsolutions.jts.geom.Coordinate vectorAdd(com.vividsolutions.jts.geom.Coordinate q, com.vividsolutions.jts.geom.Coordinate r)
           
static com.vividsolutions.jts.geom.Coordinate vectorBetween(com.vividsolutions.jts.geom.Coordinate q, com.vividsolutions.jts.geom.Coordinate r)
           
static com.vividsolutions.jts.geom.Coordinate vectorTimesScalar(com.vividsolutions.jts.geom.Coordinate q, double m)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

emptyBit

public static final int emptyBit
See Also:
Constant Field Values

pointBit

public static final int pointBit
See Also:
Constant Field Values

lineBit

public static final int lineBit
See Also:
Constant Field Values

polyBit

public static final int polyBit
See Also:
Constant Field Values
Constructor Detail

GeoUtils

public GeoUtils()
Method Detail

mag

public static double mag(com.vividsolutions.jts.geom.Coordinate q)

distance

public static double distance(com.vividsolutions.jts.geom.Coordinate p1,
                              com.vividsolutions.jts.geom.Coordinate p2)

unitVec

public static com.vividsolutions.jts.geom.Coordinate unitVec(com.vividsolutions.jts.geom.Coordinate q)

vectorAdd

public static com.vividsolutions.jts.geom.Coordinate vectorAdd(com.vividsolutions.jts.geom.Coordinate q,
                                                               com.vividsolutions.jts.geom.Coordinate r)

vectorBetween

public static com.vividsolutions.jts.geom.Coordinate vectorBetween(com.vividsolutions.jts.geom.Coordinate q,
                                                                   com.vividsolutions.jts.geom.Coordinate r)

vectorTimesScalar

public static com.vividsolutions.jts.geom.Coordinate vectorTimesScalar(com.vividsolutions.jts.geom.Coordinate q,
                                                                       double m)

dot

public static double dot(com.vividsolutions.jts.geom.Coordinate p,
                         com.vividsolutions.jts.geom.Coordinate q)

rotPt

public static com.vividsolutions.jts.geom.Coordinate rotPt(com.vividsolutions.jts.geom.Coordinate inpt,
                                                           com.vividsolutions.jts.geom.Coordinate rpt,
                                                           double theta)

pointToRight

public static boolean pointToRight(com.vividsolutions.jts.geom.Coordinate pt,
                                   com.vividsolutions.jts.geom.Coordinate p1,
                                   com.vividsolutions.jts.geom.Coordinate p2)

perpendicularVector

public static com.vividsolutions.jts.geom.Coordinate perpendicularVector(com.vividsolutions.jts.geom.Coordinate v1,
                                                                         com.vividsolutions.jts.geom.Coordinate v2,
                                                                         double dist,
                                                                         boolean toLeft)

getBearing180

public static double getBearing180(com.vividsolutions.jts.geom.Coordinate startPt,
                                   com.vividsolutions.jts.geom.Coordinate endPt)

getBearingRadians

public static double getBearingRadians(com.vividsolutions.jts.geom.Coordinate startPt,
                                       com.vividsolutions.jts.geom.Coordinate endPt)

getBearing360

public static double getBearing360(com.vividsolutions.jts.geom.Coordinate startPt,
                                   com.vividsolutions.jts.geom.Coordinate endPt)

theta

public static double theta(com.vividsolutions.jts.geom.Coordinate p1,
                           com.vividsolutions.jts.geom.Coordinate p2)

ConvexHullWrap

public static com.vividsolutions.jts.geom.CoordinateList ConvexHullWrap(com.vividsolutions.jts.geom.CoordinateList coords)

getDistance

public static double getDistance(com.vividsolutions.jts.geom.Coordinate pt,
                                 com.vividsolutions.jts.geom.Coordinate p0,
                                 com.vividsolutions.jts.geom.Coordinate p1)

getClosestPointOnSegment

public static com.vividsolutions.jts.geom.Coordinate getClosestPointOnSegment(com.vividsolutions.jts.geom.Coordinate pt,
                                                                              com.vividsolutions.jts.geom.Coordinate p0,
                                                                              com.vividsolutions.jts.geom.Coordinate p1)

getClosestPointOnLine

public static com.vividsolutions.jts.geom.Coordinate getClosestPointOnLine(com.vividsolutions.jts.geom.Coordinate pt,
                                                                           com.vividsolutions.jts.geom.Coordinate p0,
                                                                           com.vividsolutions.jts.geom.Coordinate p1)

along

public static com.vividsolutions.jts.geom.Coordinate along(double d,
                                                           com.vividsolutions.jts.geom.Coordinate q,
                                                           com.vividsolutions.jts.geom.Coordinate r)

interiorAngle

public static double interiorAngle(com.vividsolutions.jts.geom.Coordinate p1,
                                   com.vividsolutions.jts.geom.Coordinate p2,
                                   com.vividsolutions.jts.geom.Coordinate p3)

getDistanceBearingArray

public static com.vividsolutions.jts.geom.Coordinate[] getDistanceBearingArray(com.vividsolutions.jts.geom.LineString ring)
Parameters:
ring - - LinearRing represented as LineString to analyze
Returns:
- Coordinate[] with first point of passed LineString in [0] followed by [1-length] with x as distance and y as angle. The angle will be the will be the absolute bearing in the range 0-360. The original LineString and Coordinate points are unmodified.

getDistanceAngleArray

public static com.vividsolutions.jts.geom.Coordinate[] getDistanceAngleArray(com.vividsolutions.jts.geom.LineString ring)
Parameters:
ring - - LinearRing represented as LineString to analyze
Returns:
- Coordinate[] array of with x as distance and y as interior angles in degrees 0 to +180. The angles at each index in the array are the interior angles at the vertex position in the (closed polygon) ring. Every array position if filled. The distances are the distance at a vertex to the following point. For [n-2] the distance is computed to the [n-1] position assuming the ring is closed.

removeRedundantPoints

public static com.vividsolutions.jts.geom.LinearRing removeRedundantPoints(com.vividsolutions.jts.geom.LineString ring)
Parameters:
ring - - a LineString representing a linear ring
Returns:
- an array of Coordinate points with colinear points removed. The original LineString and Coordinate points are unmodified.

reducePoints

public static com.vividsolutions.jts.geom.Geometry reducePoints(com.vividsolutions.jts.geom.Geometry geo,
                                                                double tolerance)

clockwise

public static boolean clockwise(com.vividsolutions.jts.geom.Geometry geo)

intersect

public static com.vividsolutions.jts.geom.Coordinate intersect(com.vividsolutions.jts.geom.Coordinate P1,
                                                               com.vividsolutions.jts.geom.Coordinate P2,
                                                               com.vividsolutions.jts.geom.Coordinate P3,
                                                               com.vividsolutions.jts.geom.Coordinate P4)

getIntersection

public static com.vividsolutions.jts.geom.Coordinate getIntersection(com.vividsolutions.jts.geom.Coordinate p1,
                                                                     com.vividsolutions.jts.geom.Coordinate p2,
                                                                     com.vividsolutions.jts.geom.Coordinate p3,
                                                                     com.vividsolutions.jts.geom.Coordinate p4)

intersectSegments

public static com.vividsolutions.jts.geom.Coordinate intersectSegments(com.vividsolutions.jts.geom.Coordinate P1,
                                                                       com.vividsolutions.jts.geom.Coordinate P2,
                                                                       com.vividsolutions.jts.geom.Coordinate P3,
                                                                       com.vividsolutions.jts.geom.Coordinate P4)

getCenter

public static com.vividsolutions.jts.geom.Coordinate getCenter(com.vividsolutions.jts.geom.Coordinate p1,
                                                               com.vividsolutions.jts.geom.Coordinate p2,
                                                               com.vividsolutions.jts.geom.Coordinate p3)

setBit

public static java.util.BitSet setBit(java.util.BitSet bitSet,
                                      com.vividsolutions.jts.geom.Geometry geometry)

MakeRoundCorner

public static com.vividsolutions.jts.geom.LineString MakeRoundCorner(com.vividsolutions.jts.geom.Coordinate A,
                                                                     com.vividsolutions.jts.geom.Coordinate B,
                                                                     com.vividsolutions.jts.geom.Coordinate C,
                                                                     com.vividsolutions.jts.geom.Coordinate D,
                                                                     double r,
                                                                     boolean arcOnly)

geometriesEqual

public static boolean geometriesEqual(com.vividsolutions.jts.geom.Geometry geo1,
                                      com.vividsolutions.jts.geom.Geometry geo2)

getDistanceFromPointToGeometry

public static double getDistanceFromPointToGeometry(com.vividsolutions.jts.geom.Coordinate coord,
                                                    com.vividsolutions.jts.geom.Geometry geo)

geometryIsSegmentOf

public static boolean geometryIsSegmentOf(com.vividsolutions.jts.geom.Geometry geo1,
                                          com.vividsolutions.jts.geom.Geometry geo2)

createPlume

public static com.vividsolutions.jts.geom.Geometry createPlume(com.vividsolutions.jts.geom.Coordinate[] coords,
                                                               double radius1,
                                                               double radius2)
Generate a plume Polygon using Coordinate[] bounded on each end by circles of radius1 and radius2.

Parameters:
coords - - Coordinate[] sequence of points derived from a LineString.
radius1 - - the radius around the first point in coords.
radius2 - - the radius around the last point in coords.
Returns:
Geometry containing Polygon of plume.

taperedBufferSegment

public static com.vividsolutions.jts.geom.Polygon taperedBufferSegment(com.vividsolutions.jts.geom.Coordinate p0,
                                                                       com.vividsolutions.jts.geom.Coordinate p1,
                                                                       double d1,
                                                                       double d2)