interface to a 2.5d polygon of arbitrary complexity More...

#include "IPolygon.hpp"

+ Inheritance diagram for IPolygon:

Classes

class  IFace

Public Types

typedef ConstIterator< IPointconst_iterator_point
 Point iterator.
typedef ConstIterator< IFaceconst_iterator_face
 Face iterator.

Public Member Functions

virtual int sizePoint () const =0
 number of all points within the polygon
virtual int sizeFace () const =0
 number of all faces within the polygon
virtual int sizePart () const =0
 number of parts (level-0 faces) of the polygons
virtual const_iterator_point beginPoint () const =0
virtual const_iterator_point endPoint () const =0
virtual const_iterator_face beginFace () const =0
virtual const_iterator_face endFace () const =0
virtual const_iterator_face beginPart () const =0
virtual const_iterator_face endPart () const =0
virtual double getArea () const =0
 returns the 2d area of the polygon
virtual AddInfoStatisticsHandle getPointAddInfoStatistics () const =0
 get add info statistic object for all line points
- Public Member Functions inherited from IGeometry
virtual GeometryType::Type type () const =0
 get geometry type (kind of runtime type information)
virtual void setScopSemantic (int scopSem)=0
 sets the special topographic semantic of an geometry objects (not supported by all geometry types yet)
virtual int getScopSemantic () const =0
 returns the special topographic semantic of an geometry object
virtual IGeometryclone () const =0
 get an object copy
- Public Member Functions inherited from ObjectBase
virtual void Delete ()
- Public Member Functions inherited from IAddInfoContainer
virtual bool hasInfo () const =0
virtual const IAddInfoinfo () const =0
virtual IAddInfoinfo ()=0
virtual AddInfoHandle getAddInfo () const =0
virtual void setAddInfo (const AddInfoHandle &)=0
virtual void setAddInfoView (const AddInfoLayoutHandle &layout, bool readOnly)=0
 applies a certain layout view onto the current addinfo object
virtual void restoreAddInfoFullLayout ()=0
 removes any view layout and sets the true storage layout as (internal) layout
virtual void cloneAddInfoView (const AddInfoLayoutHandle &layout, bool readOnly) const =0
 internal creates a new addinfo object with the provide view layout that refers to the same storage object
virtual void cloneAddInfoView (const AddInfoLayoutHandle &viewLayout, const AddInfoLayoutHandle &dataLayout) const =0
 internal creates a new addinfo object with the provide view layout and secures that the storage object contains the dataLayout
virtual void cloneAddInfoFullLayout () const =0
 internal creates a new addinfo object using the true storage layout that referring to the same storage object
virtual bool getAsDoubleByView (const AddInfoLayoutHandle &, unsigned index, double &value) const =0
virtual bool getAsLLongByView (const AddInfoLayoutHandle &, unsigned index, long long &value) const =0
virtual void eraseLayout (const AddInfoLayoutHandle &)=0
 removes the specified attributs from current object

Detailed Description

interface to a 2.5d polygon of arbitrary complexity

The DM polygon object can handle arbitrary nested polygons (often called multi part polygons). The implementation is based on the CGAL nef polygons, a 2d polyhedron representation. Hence, positive regions (=part of the polygon) may contain an arbitrary number of negative regions (=not part of the polygon. also called holes) contains positive regions again and so on defining a hierarchy (=levels of polygons) Additionally the number of level 0 polygons (top level hierarchy) is not limited.

Such polygon objects can only be constructed by a corresponding polygon factory object. However, it has to be considered that there are some prerequisites regarding the topological correctness of the input data. see the IPolylineFactory for details

The polygon object is structured in a hierarchy and can be traversed with the corresponding part iterators. To identify positive and negative region use the IFace::positveFace member function of the corresponding part object. The part object has no nested parts if the IPart::sizePart retruns zero or the distance of the part iterators is empty.

For accessing the points of part object use the corresponding point iterator functions. Note that points of positive regions are sorted counterclockwise and points of negative regions clockwise.

For listing all polygon points in a non-hierarchical manner use the point iterator function of the polygon object itself