IPolygon Class Referenceabstract

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

IPolygonclone () const override=0
 get an object copy
 
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 () const =0
 get geometry type (kind of runtime type information)
 
virtual void setScopSemantic (ScopSemantic scopSem)=0
 sets the special topographic semantic of an geometry objects (not supported by all geometry types yet)
 
virtual ScopSemantic getScopSemantic () const =0
 returns the special topographic semantic of an geometry object
 
- 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 More...
 
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 More...
 
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 More...
 
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 getAsInt64ByView (const AddInfoLayoutHandle &, unsigned index, int64_t &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

Examples
DM_get_by_id.cpp.