Class Geometry

  • All Implemented Interfaces:
    java.io.Serializable
    Direct Known Subclasses:
    Envelope, MultiVertexGeometry, Point, Segment

    public abstract class Geometry
    extends java.lang.Object
    implements java.io.Serializable
    Common properties and methods shared by all geometric objects. Geometries are objects that define a spatial location and and associated geometric shape.
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      Geometry()  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected abstract void _assignVertexDescriptionImpl​(VertexDescription src)  
      (package private) static Geometry _clone​(Geometry src)  
      protected java.lang.Object _getImpl()  
      (package private) void _touch()  
      void addAttribute​(int semantics)
      Adds a new attribute to the Geometry.
      void addID()
      Adds the ID attribute to this Geometry
      void addM()
      Adds the M attribute to this Geometry
      (package private) void addZ()
      Adds the Z attribute to this Geometry
      abstract void applyTransformation​(Transformation2D transform)
      Applies 2D affine transformation in XY plane.
      (package private) abstract void applyTransformation​(Transformation3D transform)
      Applies 3D affine transformation.
      void assignVertexDescription​(VertexDescription src)
      Assigns the new VertexDescription by adding or dropping attributes.
      double calculateArea2D()
      Calculates the area of the geometry.
      double calculateLength2D()
      Calculates the length of the geometry.
      Geometry copy()
      Creates a copy of the geometry.
      abstract void copyTo​(Geometry dst)
      Copies this geometry to another geometry of the same type.
      abstract Geometry createInstance()
      Creates an instance of an empty geometry of the same type.
      void dropAllAttributes()
      Drops all attributes from the Geometry with exception of POSITON.
      void dropAttribute​(int semantics)
      Drops an attribute from the Geometry.
      abstract long estimateMemorySize()
      Returns an estimate of this object size in bytes.
      protected static long estimateMemorySize​(double[] attributes)  
      abstract Geometry getBoundary()
      Returns boundary of this geometry.
      VertexDescription getDescription()
      Returns the VertexDescription of this geometry.
      abstract int getDimension()
      Returns the topological dimension of the geometry object based on the geometry's type.
      static int getDimensionFromType​(int type)
      Returns this geometry's dimension.
      int getStateFlag()
      The stateFlag value changes with changes applied to this geometry.
      abstract Geometry.Type getType()
      Returns the geometry type.
      boolean hasAttribute​(int semantics)
      A shortcut for getDescription().hasAttribute()
      boolean hasID()
      Returns true if this Geometry has an ID attribute
      boolean hasM()
      Returns true if this Geometry has an M attribute
      boolean hasZ()
      Returns true if this Geometry has the Z attribute
      static boolean isArea​(int type)
      Indicates if the integer value of the enumeration is an area (dimension 2).
      abstract boolean isEmpty()
      IsEmpty returns TRUE when the Geometry object does not contain geometric information beyond its original initialization state.
      static boolean isLinear​(int type)
      Indicates if the integer value of the enumeration is linear (dimension 1).
      static boolean isMultiPath​(int type)
      Indicates if the integer value of the enumeration is a multipath (ie, line or area).
      static boolean isMultiVertex​(int type)
      Indicates if the integer value of the enumeration is a multivertex (ie, multipoint, line, or area).
      static boolean isPoint​(int type)
      Indicates if the integer value of the enumeration is a point type (dimension 0).
      static boolean isSegment​(int type)
      Indicates if the integer value of the enumeration is a segment.
      void mergeVertexDescription​(VertexDescription src)
      Merges the new VertexDescription by adding missing attributes from the src.
      abstract void queryEnvelope​(Envelope env)
      Returns the axis aligned bounding box of the geometry.
      abstract void queryEnvelope2D​(Envelope2D env)
      Returns tight bbox of the Geometry in X, Y plane.
      (package private) abstract void queryEnvelope3D​(Envelope3D env)
      Returns tight bbox of the Geometry in 3D.
      abstract Envelope1D queryInterval​(int semantics, int ordinate)
      Returns the min and max attribute values at the ordinate of the Geometry.
      void queryLooseEnvelope2D​(Envelope2D env)
      Returns the conservative bbox of the Geometry in X, Y plane.
      (package private) void queryLooseEnvelope3D​(Envelope3D env)
      Returns tight conservative box of the Geometry in 3D.
      abstract void replaceNaNs​(int semantics, double value)
      Replaces NaNs in the attribute with the given value.
      abstract void setEmpty()
      Returns the geometry to its original initialization state by releasing all data referenced by the geometry.
      java.lang.String toString()
      The output of this method can be only used for debugging.
      static int vertex_count​(Geometry geom)
      Returns count of geometry vertices: 1 for Point, 4 for Envelope, get_point_count for MultiVertexGeometry types, 2 for segment types Returns 0 if geometry is empty.
      (package private) java.lang.Object writeReplace()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • Geometry

        Geometry()
    • Method Detail

      • getType

        public abstract Geometry.Type getType()
        Returns the geometry type.
        Returns:
        Returns the geometry type.
      • getDimension

        public abstract int getDimension()
        Returns the topological dimension of the geometry object based on the geometry's type.

        Returns 0 for point and multipoint.

        Returns 1 for lines and polylines.

        Returns 2 for polygons and envelopes

        Returns 3 for objects with volume

        Returns:
        Returns the integer value of the dimension of geometry.
      • estimateMemorySize

        public abstract long estimateMemorySize()
        Returns an estimate of this object size in bytes.

        This estimate doesn't include the size of the VertexDescription object because instances of VertexDescription are shared among geometry objects.

        Returns:
        Returns an estimate of this object size in bytes.
      • estimateMemorySize

        protected static long estimateMemorySize​(double[] attributes)
      • getDescription

        public VertexDescription getDescription()
        Returns the VertexDescription of this geometry.
        Returns:
        VertexDescription
      • assignVertexDescription

        public void assignVertexDescription​(VertexDescription src)
        Assigns the new VertexDescription by adding or dropping attributes. The Geometry will have the src description as a result.
        Parameters:
        src - VertexDescription to assign.
      • _assignVertexDescriptionImpl

        protected abstract void _assignVertexDescriptionImpl​(VertexDescription src)
      • mergeVertexDescription

        public void mergeVertexDescription​(VertexDescription src)
        Merges the new VertexDescription by adding missing attributes from the src. The Geometry will have a union of the current and the src descriptions.
        Parameters:
        src - VertexDescription to merge.
      • hasAttribute

        public boolean hasAttribute​(int semantics)
        A shortcut for getDescription().hasAttribute()
        Parameters:
        semantics - The VertexDescription.Semantics to check.
        Returns:
        Return true if the attribute is present.
      • addAttribute

        public void addAttribute​(int semantics)
        Adds a new attribute to the Geometry.
        Parameters:
        semantics - The VertexDescription.Semantics to add.
      • dropAttribute

        public void dropAttribute​(int semantics)
        Drops an attribute from the Geometry. Dropping the attribute is equivalent to setting the attribute to the default value for each vertex, However, it is faster and the result Geometry has smaller memory footprint and smaller size when persisted.
        Parameters:
        semantics - The VertexDescription.Semantics to drop.
      • dropAllAttributes

        public void dropAllAttributes()
        Drops all attributes from the Geometry with exception of POSITON.
      • queryInterval

        public abstract Envelope1D queryInterval​(int semantics,
                                                 int ordinate)
        Returns the min and max attribute values at the ordinate of the Geometry.
        Parameters:
        semantics - The semantics of the interval.
        ordinate - The ordinate of the interval.
        Returns:
        The interval.
      • queryEnvelope

        public abstract void queryEnvelope​(Envelope env)
        Returns the axis aligned bounding box of the geometry.
        Parameters:
        env - The envelope to return the result in.
      • queryEnvelope2D

        public abstract void queryEnvelope2D​(Envelope2D env)
        Returns tight bbox of the Geometry in X, Y plane.
        Parameters:
        env - The envelope to return the result in.
      • queryEnvelope3D

        abstract void queryEnvelope3D​(Envelope3D env)
        Returns tight bbox of the Geometry in 3D.
        Parameters:
        env - The envelope to return the result in.
      • queryLooseEnvelope2D

        public void queryLooseEnvelope2D​(Envelope2D env)
        Returns the conservative bbox of the Geometry in X, Y plane. This is a faster method than QueryEnvelope2D. However, the bbox could be larger than the tight box.
        Parameters:
        env - The envelope to return the result in.
      • queryLooseEnvelope3D

        void queryLooseEnvelope3D​(Envelope3D env)
        Returns tight conservative box of the Geometry in 3D. This is a faster method than the QueryEnvelope3D. However, the box could be larger than the tight box.
        Parameters:
        env - The envelope to return the result in.
      • isEmpty

        public abstract boolean isEmpty()
        IsEmpty returns TRUE when the Geometry object does not contain geometric information beyond its original initialization state.
        Returns:
        boolean Returns TRUE if this geometry is empty.
      • setEmpty

        public abstract void setEmpty()
        Returns the geometry to its original initialization state by releasing all data referenced by the geometry.
      • applyTransformation

        public abstract void applyTransformation​(Transformation2D transform)
        Applies 2D affine transformation in XY plane.
        Parameters:
        transform - The affine transformation to be applied to this geometry.
      • applyTransformation

        abstract void applyTransformation​(Transformation3D transform)
        Applies 3D affine transformation. Adds Z attribute if it is missing.
        Parameters:
        transform - The affine transformation to be applied to this geometry.
      • createInstance

        public abstract Geometry createInstance()
        Creates an instance of an empty geometry of the same type.
        Returns:
        The new instance.
      • copyTo

        public abstract void copyTo​(Geometry dst)
        Copies this geometry to another geometry of the same type. The result geometry is an exact copy.
        Parameters:
        dst - The geometry instance to copy to.
        Throws:
        GeometryException - invalid_argument if the geometry is of different type.
      • calculateArea2D

        public double calculateArea2D()
        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.
        Returns:
        A double value representing the 2D area of the geometry.
      • calculateLength2D

        public double calculateLength2D()
        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 on the GeometryEngine
        Returns:
        A double value representing the 2D length of the geometry.
      • _getImpl

        protected java.lang.Object _getImpl()
      • addZ

        void addZ()
        Adds the Z attribute to this Geometry
      • hasZ

        public boolean hasZ()
        Returns true if this Geometry has the Z attribute
        Returns:
        true if this Geometry has the Z attribute
      • addM

        public void addM()
        Adds the M attribute to this Geometry
      • hasM

        public boolean hasM()
        Returns true if this Geometry has an M attribute
        Returns:
        true if this Geometry has an M attribute
      • addID

        public void addID()
        Adds the ID attribute to this Geometry
      • hasID

        public boolean hasID()
        Returns true if this Geometry has an ID attribute
        Returns:
        true if this Geometry has an ID attribute
      • getDimensionFromType

        public static int getDimensionFromType​(int type)
        Returns this geometry's dimension.

        Returns 0 for point and multipoint.

        Returns 1 for lines and polylines.

        Returns 2 for polygons and envelopes

        Returns 3 for objects with volume

        Parameters:
        type - The integer value from geometry enumeration. You can use the method Geometry.Type.value() to get at the integer value.
        Returns:
        The integer dimension of this geometry.
      • isPoint

        public static boolean isPoint​(int type)
        Indicates if the integer value of the enumeration is a point type (dimension 0).
        Parameters:
        type - The integer value from geometry enumeration. You can use the method Geometry.Type.value() to get at the integer value.
        Returns:
        TRUE if the geometry is a point (a Point or a Multipoint).
      • isLinear

        public static boolean isLinear​(int type)
        Indicates if the integer value of the enumeration is linear (dimension 1).
        Parameters:
        type - The integer value from geometry enumeration. You can use the method Geometry.Type.value() to get at the integer value.
        Returns:
        TRUE if the geometry is a line.
      • isArea

        public static boolean isArea​(int type)
        Indicates if the integer value of the enumeration is an area (dimension 2).
        Parameters:
        type - The integer value from geometry enumeration. You can use the method Geometry.Type.value() to get at the integer value.
        Returns:
        TRUE if the geometry is a polygon.
      • isSegment

        public static boolean isSegment​(int type)
        Indicates if the integer value of the enumeration is a segment.
        Parameters:
        type - The integer value from geometry enumeration. You can use the method Geometry.Type.value() to get at the integer value.
        Returns:
        TRUE if the geometry is a segment.
      • isMultiVertex

        public static boolean isMultiVertex​(int type)
        Indicates if the integer value of the enumeration is a multivertex (ie, multipoint, line, or area).
        Parameters:
        type - The integer value from geometry enumeration. You can use the method Geometry.Type.value() to get at the integer value.
        Returns:
        TRUE if the geometry has multiple vertices.
      • isMultiPath

        public static boolean isMultiPath​(int type)
        Indicates if the integer value of the enumeration is a multipath (ie, line or area).
        Parameters:
        type - The integer value from geometry enumeration. You can use the method Geometry.Type.value() to get at the integer value.
        Returns:
        TRUE if the geometry is a multipath.
      • copy

        public Geometry copy()
        Creates a copy of the geometry.
        Returns:
        Returns a copy of this geometry.
      • getBoundary

        public abstract Geometry getBoundary()
        Returns boundary of this geometry. Polygon and Envelope boundary is a Polyline. For Polyline and Line, the boundary is a Multi_point consisting of path end points. For Multi_point and Point null is returned.
        Returns:
        The boundary geometry.
      • replaceNaNs

        public abstract void replaceNaNs​(int semantics,
                                         double value)
        Replaces NaNs in the attribute with the given value. If the geometry is not empty, it adds the attribute if geometry does not have it yet, and replaces the values. If the geometry is empty, it adds the attribute and does not set any values.
        Parameters:
        semantics - The semantics for which to replace the NaNs.
        value - The value to replace NaNs with.
      • getStateFlag

        public int getStateFlag()
        The stateFlag value changes with changes applied to this geometry. This allows the user to keep track of the geometry's state.
        Returns:
        The state of the geometry.
      • _touch

        void _touch()
      • writeReplace

        java.lang.Object writeReplace()
                               throws java.io.ObjectStreamException
        Throws:
        java.io.ObjectStreamException
      • toString

        public java.lang.String toString()
        The output of this method can be only used for debugging. It is subject to change without notice.
        Overrides:
        toString in class java.lang.Object
      • vertex_count

        public static int vertex_count​(Geometry geom)
        Returns count of geometry vertices: 1 for Point, 4 for Envelope, get_point_count for MultiVertexGeometry types, 2 for segment types Returns 0 if geometry is empty.
        Parameters:
        geom - The geometry to get the vertex count for.
        Returns:
        The vertex count.