interface to a 2.5d polygon of arbitrary complexity More...
#include "IPolygon.hpp"
Classes | |
class | IFace |
Public Types | |
typedef ConstIterator< IPoint > | const_iterator_point |
Point iterator. | |
typedef ConstIterator< IFace > | const_iterator_face |
Face iterator. | |
Public Member Functions | |
IPolygon * | clone () const override=0 |
get an object copy | |
virtual bool | isEmpty () const =0 |
check if polygon is empty | |
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 unsigned | getMaxDepth (bool ignorDegeneratedFaces=false) const =0 |
returns the maximum hierarchy depth for this poylgon More... | |
virtual AddInfoStatisticsHandle | getPointAddInfoStatistics () const =0 |
get add info statistic object for all line points | |
![]() | |
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 | |
![]() | |
virtual void | Delete () |
![]() | |
virtual bool | hasInfo () const =0 |
virtual const IAddInfo & | info () const =0 |
virtual IAddInfo & | info ()=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 | |
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
|
pure virtual |
returns the maximum hierarchy depth for this poylgon
If a polygon is empty, then 0 is returned. If the polygon consists of one part or spatially separated parts (=positive faces) only, the depth is 1. If parts have one or multiples holes (=negative face) than the depth is 2. If holes contains islands then the depth is 2 and so on.
ignorDegeneratedFaces | flag if degenerated faces should be considered or not |