com.esri.core.geometry
Class MultiPath

java.lang.Object
  extended by com.esri.core.geometry.Geometry
      extended by com.esri.core.geometry.MultiPath
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
Polygon, Polyline

public abstract class MultiPath
extends Geometry
implements Serializable

The MulitPath class is a base class for polygons and polylines.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class com.esri.core.geometry.Geometry
Geometry.Type
 
Constructor Summary
MultiPath()
           
 
Method Summary
 void add(MultiPath src, boolean bReversePaths)
          Appends all paths from another multipath.
 void addEnvelope(Envelope envSrc, boolean bReverse)
          Adds a rectangular closed path to this multipath.
 void addPath(MultiPath src, int srcPathIndex, boolean bForward)
          Copies a path from another multipath.
 void addSegment(Segment segment, boolean bStartNewPath)
          Adds a new segment to this multipath.
 void applyTransformation(Transformation2D transform)
          Applies 2D affine transformation in XY plane.
 double calculateArea2D()
          Calculates the area of the geometry.
 double calculateLength2D()
          Calculates the length of the geometry.
 void closeAllPaths()
          Closes all open paths by adding an implicit line segment from the end point to the start point.
 void closePathWithLine()
          Closes the last path of this multipath with a line segment.
 void copyTo(Geometry dst)
          Copies this geometry to another geometry of the same type.
 int getPathCount()
          Returns the number of paths in this multipath.
 int getPathEnd(int pathIndex)
          Returns the index immediately following the last index of the path.
 int getPathIndexFromPointIndex(int pointIndex)
          Returns the path index from the point index.
 int getPathSize(int pathIndex)
          Returns the number of vertices in a path.
 int getPathStart(int pathIndex)
          Returns the start index of the path.
 Point getPoint(int index)
           
 void getPoint(int arg0, Point arg1)
           
 int getPointCount()
           
 int getSegmentCount()
          Returns total segment count in the MultiPath.
 int getSegmentCount(int pathIndex)
          Returns the segment count in the given multipath path.
 int getStateFlag()
          Returns the state of the geometry.
 int hashCode()
          Returns the hash code for the multipath.
 void insertPath(int pathIndex, MultiPath src, int srcPathIndex, boolean bForward)
          Inserts a path from another multipath.
 void insertPoint(int pathIndex, int beforePointIndex, Point pt)
          Inserts a point.
 void insertPoints(int pathIndex, int beforePointIndex, MultiPath src, int srcPathIndex, int srcPointIndexFrom, int srcPointCount, boolean bForward)
          Inserts vertices from the given multipath into this multipath.
 boolean isClosedPath(int pathIndex)
          Indicates if the given path is closed (represents a ring).
 boolean isEmpty()
          Indicates if the geometry object contains geometric information.
 void lineTo(double x, double y)
          Adds a line segment from the last point to the given end coordinates.
 void lineTo(Point endPoint)
          Adds a Line Segment to the given end point.
 void queryEnvelope(Envelope env)
          Gets the axis aligned bounding box of the geometry.
 SegmentIterator querySegmentIterator()
          Returns a SegmentIterator that is set right before the beginning of the multipath.
 SegmentIterator querySegmentIteratorAtVertex(int startVertexIndex)
          Returns a SegmentIterator that is set to a specific vertex of the MultiPath.
 void removePath(int pathIndex)
          Removes the path at the given index.
 void removePoint(int pathIndex, int pointIndex)
          Removes a point at a given index.
 void reverseAllPaths()
          Reverses the order of the vertices in each path.
 void reversePath(int pathIndex)
          Reverses the order of vertices in the path.
 void setEmpty()
          Sets the geometry to its original initialization state by releasing all data referenced by the geometry.
 void setPoint(int index, Point point)
           
 void startPath(double x, double y)
          Starts a new path at given coordinates.
 void startPath(Point point)
          Starts a new path at a point.
 
Methods inherited from class com.esri.core.geometry.Geometry
copy, getDimension, getDimensionFromType, getType, isArea, isLinear, isMultiPath, isMultiVertex, isPoint, isSegment
 
Methods inherited from class java.lang.Object
equals, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MultiPath

public MultiPath()
Method Detail

getPointCount

public int getPointCount()

getPoint

public Point getPoint(int index)

setPoint

public void setPoint(int index,
                     Point point)

isEmpty

public boolean isEmpty()
Description copied from class: Geometry
Indicates if the geometry object contains geometric information. IsEmpty returns true when the geometry object does not contain geometric information beyond its original initialization state.

Specified by:
isEmpty in class Geometry
Returns:
boolean Returns true if this geometry is empty.

calculateArea2D

public double calculateArea2D()
Description copied from class: Geometry
Calculates the area of the geometry. If the spatial reference is a Geographic Coordinate System (WGS84) then the 2D area calculation is defined in angular units.

Overrides:
calculateArea2D in class Geometry
Returns:
A double value representing the 2D area of the geometry.

calculateLength2D

public double calculateLength2D()
Description copied from class: Geometry
Calculates the length of the geometry. If the spatial reference is a Geographic Coordinate System (a system where coordinates are defined using angular units such as longitude and latitude) then the 2D distance calculation is returned in angular units. In cases where length must be calculated on a Geographic Coordinate System consider the using the geodeticLength method in GeometryEngine.

Overrides:
calculateLength2D in class Geometry
Returns:
A double value representing the 2D length of the geometry.

queryEnvelope

public void queryEnvelope(Envelope env)
Description copied from class: Geometry
Gets the axis aligned bounding box of the geometry.

Specified by:
queryEnvelope in class Geometry
Parameters:
env - The envelope to return the result in.

copyTo

public void copyTo(Geometry dst)
Description copied from class: Geometry
Copies this geometry to another geometry of the same type. The result geometry is an exact copy.

Specified by:
copyTo in class Geometry

getSegmentCount

public int getSegmentCount()
Returns total segment count in the MultiPath.


getSegmentCount

public int getSegmentCount(int pathIndex)
Returns the segment count in the given multipath path.

Parameters:
pathIndex - The path to determine the segment.
Returns:
The segment of the multipath.

add

public void add(MultiPath src,
                boolean bReversePaths)
Appends all paths from another multipath.

Parameters:
src - The multipath to append to this multipath.
bReversePaths - TRUE if the multipath is added should be added with its paths reversed.

addPath

public void addPath(MultiPath src,
                    int srcPathIndex,
                    boolean bForward)
Copies a path from another multipath.

Parameters:
src - The multipath to copy from.
srcPathIndex - The index of the path in the the source MultiPath.
bForward - When FALSE, the points are inserted in reverse order.

addSegment

public void addSegment(Segment segment,
                       boolean bStartNewPath)
Adds a new segment to this multipath.

Parameters:
segment - The segment to be added to this mulitpath.
bStartNewPath - TRUE if a new path will be added.

reverseAllPaths

public void reverseAllPaths()
Reverses the order of the vertices in each path.


reversePath

public void reversePath(int pathIndex)
Reverses the order of vertices in the path.

Parameters:
pathIndex - The start index of the path to reverse the order.

removePath

public void removePath(int pathIndex)
Removes the path at the given index.

Parameters:
pathIndex - The start index to remove the path.

insertPath

public void insertPath(int pathIndex,
                       MultiPath src,
                       int srcPathIndex,
                       boolean bForward)
Inserts a path from another multipath.

Parameters:
pathIndex - The start index of the multipath to insert.
src - The multipath to insert into this multipath. Can be the same as the multipath being modified.
srcPathIndex - The start index to insert the path into the multipath.
bForward - When FALSE, the points are inserted in reverse order.

insertPoints

public void insertPoints(int pathIndex,
                         int beforePointIndex,
                         MultiPath src,
                         int srcPathIndex,
                         int srcPointIndexFrom,
                         int srcPointCount,
                         boolean bForward)
Inserts vertices from the given multipath into this multipath. All added vertices are connected by linear segments with each other and with the existing vertices.

Parameters:
pathIndex - The path index in this multipath to insert points to. Must correspond to an existing path.
beforePointIndex - The point index before all other vertices to insert in the given path of this multipath. This value must be between 0 and GetPathSize(pathIndex), or -1 to insert points at the end of the given path.
src - The source multipath.
srcPathIndex - The source path index to copy points from.
srcPointIndexFrom - The start point in the source path to start copying from.
srcPointCount - The count of points to add.
bForward - When FALSE, the points are inserted in reverse order.

insertPoint

public void insertPoint(int pathIndex,
                        int beforePointIndex,
                        Point pt)
Inserts a point.

Parameters:
pathIndex - The path index in this class to insert the point to. Must correspond to an existing path.
beforePointIndex - The point index in the given path of this multipath. This value must be between 0 and GetPathSize(pathIndex), or -1 to insert the point at the end of the given path.
pt - The point to be inserted.

removePoint

public void removePoint(int pathIndex,
                        int pointIndex)
Removes a point at a given index.

Parameters:
pathIndex - The path from whom to remove the point.
pointIndex - The index of the point to be removed.

getPathCount

public int getPathCount()
Returns the number of paths in this multipath.

Returns:
The number of paths in this multipath.

getPathSize

public int getPathSize(int pathIndex)
Returns the number of vertices in a path.

Parameters:
pathIndex - The index of the path to return the number of vertices from.
Returns:
The number of vertices in a path.

getPathStart

public int getPathStart(int pathIndex)
Returns the start index of the path.

Parameters:
pathIndex - The index of the path to return the start index from.
Returns:
The start index of the path.

getPathEnd

public int getPathEnd(int pathIndex)
Returns the index immediately following the last index of the path.

Parameters:
pathIndex - The index of the path to return the end index from.
Returns:
Integer index after last index of path

getPathIndexFromPointIndex

public int getPathIndexFromPointIndex(int pointIndex)
Returns the path index from the point index. This is O(log N) operation.

Parameters:
pointIndex - The index of the point.
Returns:
The index of the path.

startPath

public void startPath(double x,
                      double y)
Starts a new path at given coordinates.

Parameters:
x - The X coordinate of the start point.
y - The Y coordinate of the start point.

startPath

public void startPath(Point point)
Starts a new path at a point.

Parameters:
point - The point to start the path from.

lineTo

public void lineTo(double x,
                   double y)
Adds a line segment from the last point to the given end coordinates.

Parameters:
x - The X coordinate to the end point.
y - The Y coordinate to the end point.

lineTo

public void lineTo(Point endPoint)
Adds a Line Segment to the given end point.

Parameters:
endPoint - The end point to which the newly added line segment should point.

closePathWithLine

public void closePathWithLine()
Closes the last path of this multipath with a line segment. The closing segment is a segment that connects the last and the first points of the path. This is a virtual segment. The first point is not duplicated to close the path. Call this method only for polylines. For polygons this method is implicitly called for the Polygon class.


closeAllPaths

public void closeAllPaths()
Closes all open paths by adding an implicit line segment from the end point to the start point. Call this method only for polylines.For polygons this method is implicitly called for the Polygon class.


isClosedPath

public boolean isClosedPath(int pathIndex)
Indicates if the given path is closed (represents a ring). A closed path has a virtual segment that connects the last and the first points of the path. The first point is not duplicated to close the path. Polygons always have all paths closed.

Parameters:
pathIndex - The index of the path to check to be closed.
Returns:
TRUE if the given path is closed (represents a Ring).

addEnvelope

public void addEnvelope(Envelope envSrc,
                        boolean bReverse)
Adds a rectangular closed path to this multipath.

Parameters:
envSrc - Is the envelope to add to this mulitpath.
bReverse - Adds the path reversed (counter-clockwise).

querySegmentIterator

public SegmentIterator querySegmentIterator()
Returns a SegmentIterator that is set right before the beginning of the multipath. Calling nextPath() will set the iterator to the first path of this multipath.

Returns:
The SegmentIterator for this mulitpath.

querySegmentIteratorAtVertex

public SegmentIterator querySegmentIteratorAtVertex(int startVertexIndex)
Returns a SegmentIterator that is set to a specific vertex of the MultiPath. The call to nextSegment() will return the segment that starts at the vertex. Calling PreviousSegment () will return the segment that starts at the previous vertex.

Parameters:
startVertexIndex - The start index of the SegementIterator.
Returns:
The SegmentIterator for this mulitpath at the specified vertex.

setEmpty

public void setEmpty()
Description copied from class: Geometry
Sets the geometry to its original initialization state by releasing all data referenced by the geometry.

Specified by:
setEmpty in class Geometry

applyTransformation

public void applyTransformation(Transformation2D transform)
Description copied from class: Geometry
Applies 2D affine transformation in XY plane.

Specified by:
applyTransformation in class Geometry
Parameters:
transform - The affine transformation to be applied to this geometry.

hashCode

public int hashCode()
Returns the hash code for the multipath.

Overrides:
hashCode in class Object

getStateFlag

public int getStateFlag()
Description copied from class: Geometry
Returns the state of the geometry. The stateFlag value changes with changes applied to this geometry. This allows the user to keep track of the geometry's state.

Overrides:
getStateFlag in class Geometry
Returns:
The state of the geometry.

getPoint

public void getPoint(int arg0,
                     Point arg1)


Copyright © 2012. All Rights Reserved.