NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
geometry.h
Go to the documentation of this file.
1 
9 #ifndef SDK_GEOMETRY_INTERFACE_H_
10 #define SDK_GEOMETRY_INTERFACE_H_
11 #pragma once
12 
13 #include <base/inc/platform.h>
14 #include <base/inc/base_types.h>
18 
19 namespace sdk {
20 namespace crs {
21 
22 // Classes declared in other files.
23 class IHorizontalCoordinateSystem;
24 class IProjection;
25 class IVerticalCoordinateSystem;
26 
27 } // namespace crs
28 } // namespace sdk
29 
30 #ifndef SDK_GEOMETRY_NAMESPACE
31 #define SDK_GEOMETRY_NAMESPACE SDK_NAMESPACE::geometry
32 #endif // SDK_GEOMETRY_NAMESPACE
33 
34 #ifndef SDK_GEOMETRY_BEGIN_NAMESPACE
35 #define SDK_GEOMETRY_BEGIN_NAMESPACE namespace SDK_NAMESPACE { \
36  namespace geometry {
37 #endif // SDK_GEOMETRY_BEGIN_NAMESPACE
38 
39 #ifndef SDK_GEOMETRY_END_NAMESPACE
40 #define SDK_GEOMETRY_END_NAMESPACE } }
41 #endif // SDK_GEOMETRY_END_NAMESPACE
42 
43 SDK_GEOMETRY_BEGIN_NAMESPACE
44 
45 // Classes declared in this file.
62 
65 typedef SDKUInt32 GeometryTypeFlagType;
66 
69 static const SDKUInt64 kGeometryID_Undefined = -1;
70 
73 typedef enum GeometryType {
75  kGMT_Null = 0,
88  kGMT_Grid = 6,
96  kGMT_Ring = 9,
123 } GeometryType;
124 
125 struct GeometryTypeName {
126  SDKUInt16 m_code;
127  const char* m_name;
128 };
129 
130 static const GeometryTypeName kGeometryTypeNames[] = {
131  { kGMT_Null, "Null" },
132  { kGMT_Point, "Point" },
133  { kGMT_Multipoint, "Multipoint" },
134  { kGMT_Curve, "Curve" },
135  { kGMT_Surface, "Surface" },
136  { kGMT_Triangles, "Triangles" },
137  { kGMT_Grid, "Grid" },
138  { kGMT_TriangleFan, "TriangleFan" },
139  { kGMT_CompositeCurve, "CompositeCurve" },
140  { kGMT_Ring, "Ring" },
141  { kGMT_GeometryCollection, "GeometryCollection" },
142  { kGMT_Polygon, "Polygon" },
143  { kGMT_MultiSurface, "MultiSurface" },
144  { kGMT_MultiPolygon, "MultiPolygon" },
145  { kGMT_CurveSegment, "CurveSegment" },
146  { kGMT_MultiCompositeCurve, "MultiCompositeCurve" },
147  { kGMT_MultiCurve, "MultiCurve" },
148  { kGMT_TriangleStrip, "TriangleStrip" },
149  { kGMT_Circle, "Circle" },
150  { kGMT_BezierCurve, "BezierCurve" }
151 };
152 
155 typedef enum GeometryTypeFlag {
156  kGMTF_Null = 0x0000,
157  kGMTF_Point = 0x0001,
158  kGMTF_Multipoint = 0x0002,
159  kGMTF_Curve = 0x0004,
160  kGMTF_Surface = 0x0008,
161  kGMTF_Triangles = 0x0010,
162  kGMTF_Grid = 0x0020,
163  kGMTF_TriangleFan = 0x0040,
164  kGMTF_CompositeCurve = 0x0080,
165  kGMTF_Ring = 0x0100,
166  kGMTF_GeometryCollection = 0x0200,
167  kGMTF_Polygon = 0x0000,
168  kGMTF_MultiSurface = 0x0400,
169  kGMTF_MultiPolygon = 0x0000,
170  kGMTF_CurveSegment = 0x0800,
171  kGMTF_MultiCompositeCurve = 0x1000,
172  kGMTF_MultiCurve = 0x2000,
173  kGMTF_TriangleStrip = 0x4000,
174  kGMTF_Circle = 0x8000,
175  kGMTF_BezierCurve = 0x10000,
176  kGMTF_All = 0xFFFFFFFF,
178 
180 static const SDKUInt32 kGeometryTypeToTypeFlagTable[] = {
181  kGMTF_Null,
182  kGMTF_Point,
183  kGMTF_Multipoint,
184  kGMTF_Curve,
185  kGMTF_Surface,
186  kGMTF_Triangles,
187  kGMTF_Grid,
188  kGMTF_TriangleFan,
189  kGMTF_CompositeCurve,
190  kGMTF_Ring,
191  kGMTF_GeometryCollection,
192  kGMTF_Polygon,
193  kGMTF_MultiSurface,
194  kGMTF_MultiPolygon,
195  kGMTF_CurveSegment,
196  kGMTF_MultiCompositeCurve,
197  kGMTF_MultiCurve,
198  kGMTF_TriangleStrip,
199  kGMTF_Circle,
200  kGMTF_BezierCurve,
201 };
202 
205 typedef enum GeometryDimension {
206  kGMD_NoD = 0,
207  kGMD_0D = 1,
213 
216 typedef enum PointDimension {
217  kGMPD_2 = 2,
218  kGMPD_3 = 3,
219  kGMPD_4 = 4,
221 
224 typedef enum PointType {
229  // kGMPT_PointD2D = kGMPT_GeoPoint,
234 } PointType;
235 
238 typedef enum Axis {
239  kAxis_X = 0,
240  kAxis_Y,
241  kAxis_Z,
242 } Direction;
243 
246 typedef SDKUInt8 PointDimensionType;
247 
279 
283 
289 
293 class IGeometry : public ISDKComponent {
294 public:
296  virtual SDKResult SDK_CALLTYPE GetGeometryType(
297  GeometryType& type) const throw() = 0;
298 
300  virtual SDKResult SDK_CALLTYPE GetDimension(
301  GeometryDimension& dimension) const throw() = 0;
302 
309  virtual SDKResult SDK_CALLTYPE GetEnvelope(
310  IEnvelope** envelope) const throw() = 0;
311 
315  virtual SDKResult SDK_CALLTYPE IsEmpty() const throw() = 0;
316 
321  virtual SDKResult SDK_CALLTYPE IsInfinite() const throw() = 0;
322 
330  virtual SDKResult SDK_CALLTYPE GetBoundary(
331  IGeometry** geometry) throw() = 0;
332 
341  virtual SDKResult SDK_CALLTYPE GetPointCollection(
342  IPointCollectionParameters* parameters,
343  IPointCollection** point_collection) throw() = 0;
344 
352  virtual SDKResult SDK_CALLTYPE Project(
353  sdk::crs::IProjection* projection,
354  IGeometry** projected_geometry) throw() = 0;
355 
364  virtual SDKResult SDK_CALLTYPE GetHorizontalCoordinateSystem(
365  sdk::crs::IHorizontalCoordinateSystem** coordinate_system) const throw() = 0;
366 
375  virtual SDKResult SDK_CALLTYPE GetVerticalCoordinateSystem(
376  sdk::crs::IVerticalCoordinateSystem** coordinate_system) const throw() = 0;
377 
384  virtual SDKResult SDK_CALLTYPE GetHorizontalDatum(
385  SDKUInt16& hordat) const throw() = 0;
386 
393  virtual SDKResult SDK_CALLTYPE GetGeometryFlags(
394  SDKUInt64& flags) const throw() = 0;
395 
401  virtual SDKResult SDK_CALLTYPE GetGeometryID(
402  SDKUInt64& flags) const throw() = 0;
403 
404  SDK_IMPLEMENT_IID(IGeometry)
405  SDK_END_INTERFACE(IGeometry)
406 };
407 SDK_DECLARE_IID(IGeometry)
408 
409 class IGeometryCollection : public ISDKComponent {
414 public:
416  virtual SDKResult SDK_CALLTYPE GetGeometryCount(
417  SDKUInt32& count) const throw() = 0;
418 
428  virtual SDKResult SDK_CALLTYPE GetGeometry(
429  SDKUInt32 index,
430  IGeometry** geometry) const throw() = 0;
431 
440 // virtual SDKResult SDK_CALLTYPE GetGeometries(
441 // SDKUInt32 index,
442 // SDKUInt32 count,
443 // IGeometry** geometry) const throw() = 0;
444 
445  SDK_IMPLEMENT_IID(IGeometryCollection)
446  SDK_END_INTERFACE(IGeometryCollection)
447 };
448 SDK_DECLARE_IID(IGeometryCollection)
449 
450 class IEnvelope : public ISDKComponent {
454 public:
457  virtual SDKResult SDK_CALLTYPE GetCoordinates(
458  SDKAnyType type,
459  void* xmin,
460  void* ymin,
461  void* xmax,
462  void* ymax) const throw() = 0;
463 
466  virtual SDKResult SDK_CALLTYPE GetZCoordinates(
467  SDKAnyType type,
468  void* zmin,
469  void* zmax) const throw() = 0;
470 
474  virtual SDKResult SDK_CALLTYPE IsEmpty() const throw() = 0;
475 
477  virtual SDKResult SDK_CALLTYPE GetDimension(
478  GeometryDimension& dimension) const throw() = 0;
479 
484  virtual SDKResult SDK_CALLTYPE IsInfinite() const throw() = 0;
485 
486  SDK_IMPLEMENT_IID(IEnvelope)
487  SDK_END_INTERFACE(IEnvelope)
488 };
489 SDK_DECLARE_IID(IEnvelope)
490 
493 class IPoint : public IGeometry {
494 public:
502  virtual SDKResult SDK_CALLTYPE GetCoords(
503  SDKAnyType type,
504  void* X,
505  void* Y) const throw() = 0;
506 
508  virtual SDKResult SDK_CALLTYPE GetZ(
509  SDKAnyType type,
510  void* Z) const throw() = 0;
511 
512  SDK_IMPLEMENT_IID(IPoint)
513  SDK_END_INTERFACE(IPoint)
514 };
515 SDK_DECLARE_IID(IPoint)
516 
517 class IPointCollection : public ISDKComponent {
521 public:
523  virtual SDKResult SDK_CALLTYPE GetPointCount(
524  SDKUInt32& point_count) const throw() = 0;
525 
527  virtual SDKResult SDK_CALLTYPE GetItemCount(
528  SDKUInt32& item_count) const throw() = 0;
529 
531  virtual SDKResult SDK_CALLTYPE GetItemPointCount(SDKUInt32 item,
532  SDKUInt32& point_count) const throw() = 0;
533 
535  virtual SDKResult SDK_CALLTYPE GetPointDimension(PointDimensionType&
536  point_dimension) const throw() = 0;
537 
547 // virtual SDKResult SDK_CALLTYPE GetIPoint(
548 // SDKUInt32 index,
549 // IPoint** point) const throw() = 0;
550 
559 // virtual SDKResult SDK_CALLTYPE GetIPoints(
560 // SDKUInt32 index,
561 // SDKUInt32 count,
562 // IPoint** point) const throw() = 0;
563 
573  virtual SDKResult SDK_CALLTYPE GetPoints(
574  SDKUInt32 index,
575  SDKUInt32 count,
576  PointType type,
577  void* points) const throw() = 0;
578 
590 // virtual SDKResult SDK_CALLTYPE Get3DPoints(
591 // SDKUInt32 index,
592 // SDKUInt32 count,
593 // PointType type,
594 // void* points) const throw() = 0;
595 
596  SDK_IMPLEMENT_IID(IPointCollection)
597  SDK_END_INTERFACE(IPointCollection)
598 };
599 SDK_DECLARE_IID(IPointCollection)
600 
601 class IPointCollectionRef : public ISDKComponent {
606 public:
621  virtual SDKResult SDK_CALLTYPE GetPointsRef(
622  const void** points,
623  PointDimensionType* dimension,
624  const SDKAnyType** types,
625  const SDKUInt32** counts,
626  SDKUInt32* array_count) throw() = 0;
627 
628  SDK_IMPLEMENT_IID(IPointCollectionRef)
629  SDK_END_INTERFACE(IPointCollectionRef)
630 };
631 SDK_DECLARE_IID(IPointCollectionRef)
632 
633 class IMultipoint : public IGeometry {
636 public:
637  SDK_IMPLEMENT_IID(IMultipoint)
638  SDK_END_INTERFACE(IMultipoint)
639 };
640 SDK_DECLARE_IID(IMultipoint)
641 
642 class ICurveSegment : public IGeometry {
645 public:
647  virtual SDKResult SDK_CALLTYPE GetInterpolationMethod(
648  GeometryInterpolationMethod& interpolation_method) const throw() = 0;
649 
650  SDK_IMPLEMENT_IID(ICurveSegment)
651  SDK_END_INTERFACE(ICurveSegment)
652 };
653 SDK_DECLARE_IID(ICurveSegment)
654 
655 class ICurve : public IGeometry {
658 public:
662  virtual SDKResult SDK_CALLTYPE IsClosed() const throw() = 0;
663 
664  SDK_IMPLEMENT_IID(ICurve)
665  SDK_END_INTERFACE(ICurve)
666 };
667 SDK_DECLARE_IID(ICurve)
668 
671 class ICompositeCurve : public IGeometry {
672 public:
673 
674  SDK_IMPLEMENT_IID(ICompositeCurve)
675  SDK_END_INTERFACE(ICompositeCurve)
676 };
677 SDK_DECLARE_IID(ICompositeCurve)
678 
679 class IRing : public IGeometry {
682 public:
686  virtual SDKResult SDK_CALLTYPE IsExterior() const throw() = 0;
687 
688  SDK_IMPLEMENT_IID(IRing)
689  SDK_END_INTERFACE(IRing)
690 };
691 SDK_DECLARE_IID(IRing)
692 
696 class ISurface : public IGeometry {
697 public:
700  virtual SDKResult SDK_CALLTYPE IsEnvelope() const throw() = 0;
701 
703  virtual SDKResult SDK_CALLTYPE GetExteriorRingCount(
704  SDKUInt32& count) const throw() = 0;
705 
715 // virtual SDKResult SDK_CALLTYPE GetInteriorRings(
716 // SDKUInt32 requested_number,
717 // IGeometryCollection** interior_rings) throw() = 0;
718 
719  SDK_IMPLEMENT_IID(ISurface)
720  SDK_END_INTERFACE(ISurface)
721 };
722 SDK_DECLARE_IID(ISurface)
723 
724 class IMultiSurface : public IGeometry {
727 public:
728 
729  SDK_IMPLEMENT_IID(IMultiSurface)
730  SDK_END_INTERFACE(IMultiSurface)
731 };
732 SDK_DECLARE_IID(IMultiSurface)
733 
734 class IGrid : public IGeometry {
737 public:
746  virtual SDKResult SDK_CALLTYPE GetBounds(
747  SDKUInt8 axis,
748  SDKAnyType type,
749  void* min,
750  void* max) const throw() = 0;
751 
758  virtual SDKResult SDK_CALLTYPE GetCellCount(
759  SDKUInt8 axis,
760  SDKUInt32& count) const throw() = 0;
761 
762  SDK_IMPLEMENT_IID(IGrid)
763  SDK_END_INTERFACE(IGrid)
764 };
765 SDK_DECLARE_IID(IGrid)
766 
767 class INullGeometry : public IGeometry {
770 public:
771 
772  SDK_IMPLEMENT_IID(INullGeometry)
773  SDK_END_INTERFACE(INullGeometry)
774 };
775 SDK_DECLARE_IID(INullGeometry)
776 
780 public:
782  virtual SDKResult SDK_CALLTYPE GetParameter(
784  SDKAny& value) throw() = 0;
786  virtual SDKResult SDK_CALLTYPE SetParameter(
788  const SDKAny& value) throw() = 0;
789 
790  SDK_IMPLEMENT_IID(IPointCollectionParameters)
791  SDK_END_INTERFACE(IPointCollectionParameters)
792 };
793 SDK_DECLARE_IID(IPointCollectionParameters)
794 
795 class IBezierCurve : public IGeometry {
798 public:
801  virtual void SDK_CALLTYPE SetDegree(SDKUInt8 degree) noexcept = 0;
804  virtual void SDK_CALLTYPE GetDegree(SDKUInt8& degree) const noexcept = 0;
805 
811  virtual SDKResult SDK_CALLTYPE ConstructBezierCurve(double density,
812  SDKInt32 from,
813  SDKInt32 to,
814  IGeometrySP& out_curve) const noexcept = 0;
815 
816  SDK_IMPLEMENT_IID(IBezierCurve)
817  SDK_END_INTERFACE(IBezierCurve)
818 };
819 SDK_DECLARE_IID(IBezierCurve)
820 
821 
825 // typedef enum tagCurveDensifyMethod {
826 // /// \brief The curve length increment. Output line segments will be
827 // /// no longer than this.
828 // GM_CurveDensify_ByLength = 0,
829 // /// \brief The angle increment. Line segments will become shorter as the
830 // /// curvature increases.
831 // GM_CurveDensify_ByAngle = 1,
832 // /// \brief The deviation from true curve. Line segments of varying length
833 // /// will be generated. The curve parameter specifies the maximum allowable
834 // /// distance between a line segment and the portion of the curve that it is
835 // /// approximating.
836 // GM_CurveDensify_ByDeviation = 2,
837 // } CurveDensifyMethod;
838 //
839 // /// \brief Describes the kinds of geodetic curves that can be constructed.
840 // typedef enum tagGeodeticType {
841 // /// \brief Geodesic line type. Also known as Great Circle.
842 // GM_GeodeticType_Geodesic = 0,
843 // /// \brief Loxodrome line type.
844 // GM_GeodeticType_Loxodrome = 1,
845 // } GeodeticType;
846 //
847 
848 //
849 // /// \brief Provides access to members that construct various kinds of geodetic
850 // /// curves.
851 // /// Classes that implement IConstructGeodetic: Curve
852 // ///
853 //
854 // typedef struct tagConstructGeodeticCurveParameters {
855 // double linear_unit; // Meters per unit.
856 // CurveDensifyMethod densify_method;
857 // double densify_parameter; // A densification method.
858 // } ConstructGeodeticCurveParameters; // Parameter of densification
859 //
860 // class IConstructGeodeticCurve : public ISDKComponent {
861 // public:
862 // /// \brief Constructs a geodesic circle centered on the specified point.
863 // /// \param center_point [in] Pointer to the center of the circle.
864 // /// \param radius [in] The length in units.
865 // /// \param parameters [in] Constructing parameters.
866 // /// \return SDKResult_Succeeded
867 // /// \return SDKResult_NotImplemented
868 // /// \return SDKResult_InvalidArgument
869 // virtual SDKResult SDK_CALLTYPE ConstructGeodesicCircle(
870 // PointD2D* center_point,
871 // double radius,
872 // ConstructGeodeticCurveParameters parameters) throw() = 0;
873 //
874 // /// \brief Constructs a geodesic ellipse with origin at the specified point
875 // /// and semi major axis oriented according to the specified azimuth.
876 // /// \param center_point [in] Pointer to the center of the ellipse.
877 // /// \param semi_major_axis_length [in] The length of the semi major axis.
878 // /// \param semi_minor_axis_length [in] The length of the semi minor axis.
879 // /// \param semi_major_axis_azimuth [in] The azimuth of the semi major axis.
880 // /// \param parameters [in] Constructing parameters.
881 // /// \return SDKResult_Succeeded
882 // /// \return SDKResult_NotImplemented
883 // /// \return SDKResult_InvalidArgument
884 // virtual SDKResult SDK_CALLTYPE ConstructGeodesicEllipse(
885 // PointD2D* center_point,
886 // double semi_major_axis_length,
887 // double semi_minor_axis_length,
888 // double semi_major_axis_azimuth,
889 // ConstructGeodeticCurveParameters parameters) throw() = 0;
890 //
891 // /// \brief Constructs a geodetic line with the specified length and azimuth.
892 // /// The 'by length' and 'by deviation' densification options are supported.
893 // /// \param geodetic_line_type [in] The geodetic line type.
894 // /// \param from_point [in] Pointer to the start point.
895 // /// \param length [in] The length in units.
896 // /// \param azimuth [in] The azimuth in degree.
897 // /// \param parameters [in] Constructing parameters.
898 // /// \return SDKResult_Succeeded
899 // /// \return SDKResult_NotImplemented
900 // /// \return SDKResult_InvalidArgument
901 // virtual SDKResult SDK_CALLTYPE ConstructGeodeticLineFromDistance(
902 // GeodeticType geodetic_line_type,
903 // PointD2D* from_point,
904 // double length,
905 // double azimuth,
906 // ConstructGeodeticCurveParameters parameters) throw() = 0;
907 //
908 // /// \brief Constructs a geodetic line connecting the specified points.
909 // /// \param geodetic_line_type [in] The geodetic line type.
910 // /// \param from_point [in] Pointer to the start point.
911 // /// \param from_point [in] Pointer to the end point.
912 // /// \param parameters [in] Constructing parameters.
913 // /// \return SDKResult_Succeeded
914 // /// \return SDKResult_NotImplemented
915 // /// \return SDKResult_InvalidArgument
916 // virtual SDKResult SDK_CALLTYPE ConstructGeodeticLineFromPoints(
917 // GeodeticType geodetic_line_type,
918 // PointD2D* from_point,
919 // PointD2D* to_point,
920 // ConstructGeodeticCurveParameters parameters) throw() = 0;
921 //
922 // SDK_IMPLEMENT_IID(IConstructGeodeticCurve)
923 // SDK_END_INTERFACE(IConstructGeodeticCurve)
924 // };
925 // SDK_DECLARE_IID(IConstructGeodeticCurve)
926 
927 
929 SDK_GEOMETRY_END_NAMESPACE
930 
931 #endif // SDK_GEOMETRY_INTERFACE_H_
kGMT_MultiCompositeCurve
@ kGMT_MultiCompositeCurve
A MultiCompositCurve is a two-dimensional geometric collection whose elements are composite curves.
Definition: geometry.h:113
kGMT_GeometryCollection
@ kGMT_GeometryCollection
A GeometryCollection is a geometry that is a collection of 1 or more geometries.
Definition: geometry.h:99
IGrid
Provides access to members that identify a grid.
Definition: geometry.h:736
GeometryDimension
GeometryDimension
The topological dimension of a geometry.
Definition: geometry.h:205
PointCollectionParameter_Approximation
@ PointCollectionParameter_Approximation
Approximation.
Definition: geometry.h:287
kGMT_TriangleFan
@ kGMT_TriangleFan
A surface patch of triangles defined by the first point and two consecutive points.
Definition: geometry.h:91
kGMD_1D
@ kGMD_1D
A one dimensional geometry (such as a curve).
Definition: geometry.h:208
kGM_IM_CircularArc3Points
@ kGM_IM_CircularArc3Points
CircularArc3Points is the interpolation defined by a series of 3 DirectPositions on a circular arc pa...
Definition: geometry.h:263
IPointCollection
Provides access to members that manipulate the points of a Multipoint, Curve, Ring,...
Definition: geometry.h:520
IGeometry::GetHorizontalCoordinateSystem
virtual SDKResult SDK_CALLTYPE GetHorizontalCoordinateSystem(sdk::crs::IHorizontalCoordinateSystem **coordinate_system) const =0
Returns an interface that provides access to properties of the horizontal coordinate system.
kGMT_TriangleStrip
@ kGMT_TriangleStrip
A surface patch of triangles defined by three consecutive points.
Definition: geometry.h:118
IPointCollectionParameters
Describes the members that manage the point collection parameters.
Definition: geometry.h:779
IEnvelope::GetDimension
virtual SDKResult SDK_CALLTYPE GetDimension(GeometryDimension &dimension) const =0
Returns the topological dimension of the envelope.
base_types.h
SDK base types.
kGMPT_GeoIntPoint3D
@ kGMPT_GeoIntPoint3D
3D points are in GeoInt units.
Definition: geometry.h:226
kGMT_MultiSurface
@ kGMT_MultiSurface
A MultiSurface is a two-dimensional geometric collection whose elements are surfaces.
Definition: geometry.h:106
sdk::crs::IVerticalCoordinateSystem
Provides access to members that control access to the properties of the vertical coordinate system.
Definition: crs_vertical_coordinate_system.h:85
kGMPD_2
@ kGMPD_2
2 coordinates.
Definition: geometry.h:217
kGMPT_GeoPoint
@ kGMPT_GeoPoint
2D points are in GeoPoint units.
Definition: geometry.h:227
PointDimensionType
SDKUInt8 PointDimensionType
Point dimension type.
Definition: geometry.h:246
kGMD_2D
@ kGMD_2D
A two dimensional geometry (such as a surface).
Definition: geometry.h:209
IGeometry::GetEnvelope
virtual SDKResult SDK_CALLTYPE GetEnvelope(IEnvelope **envelope) const =0
Returns the unique Envelope that binds the Geometry object. This is the smallest Envelope that Contai...
GeometryInterpolationMethodType
SDKUInt8 GeometryInterpolationMethodType
Geometry interpolation method type.
Definition: geometry.h:282
IEnvelope
Provides access to members that describe properties and behavior of geometric envelope.
Definition: geometry.h:453
ISurface
Provides access to members that identify a surface and give access to its inner and outer rings.
Definition: geometry.h:696
IBezierCurve
Provides access to members that identify third degree bezier curve.
Definition: geometry.h:797
kGM_IM_Geodesic
@ kGM_IM_Geodesic
Geodesic (geodesic) is the interpolation mechanism which shall return DirectPositions on a geodesic c...
Definition: geometry.h:269
kGMPD_4
@ kGMPD_4
4 coordinates.
Definition: geometry.h:219
kGMT_Triangles
@ kGMT_Triangles
A surface patch of triangles defined by non-overlapping sets of three consecutive points each.
Definition: geometry.h:86
kGMPT_PointD3D
@ kGMPT_PointD3D
3D points are in spatial Cartesian units.
Definition: geometry.h:233
IGeometry
Provides access to members that describe properties and behavior of all geometric objects.
Definition: geometry.h:293
kGMPD_3
@ kGMPD_3
3 coordinates.
Definition: geometry.h:218
ICurveSegment
Interface that identifies a Curve Segment.
Definition: geometry.h:644
IGeometry::GetDimension
virtual SDKResult SDK_CALLTYPE GetDimension(GeometryDimension &dimension) const =0
Returns the topological dimension of the geometry object.
IGeometry::IsEmpty
virtual SDKResult SDK_CALLTYPE IsEmpty() const =0
Indicates whether this geometry contains any points.
PointCollectionParameter
PointCollectionParameter
Specifies parameters for a point collection.
Definition: geometry.h:286
kGMPT_PointF2D
@ kGMPT_PointF2D
2D points are in spatial Cartesian units.
Definition: geometry.h:230
IGeometry::GetGeometryFlags
virtual SDKResult SDK_CALLTYPE GetGeometryFlags(SDKUInt64 &flags) const =0
Returns geometry flags.
kGMT_Null
@ kGMT_Null
Unknown type of geometry.
Definition: geometry.h:75
kGMT_Ring
@ kGMT_Ring
A Ring is an area bounded by one, closed sequence of connected curves.
Definition: geometry.h:96
IGeometryCollection
Provides access to members that can be used for accessing individual geometries of a multi-part geome...
Definition: geometry.h:413
kGMD_0D
@ kGMD_0D
A zero dimensional geometry (such as a point or multipoint).
Definition: geometry.h:207
sdk_string_handler.h
Wrappers and helper functions for SDKString.
GeometryInterpolationMethod
GeometryInterpolationMethod
Interpolation method of a Segment.
Definition: geometry.h:250
IPointCollectionRef
Provides access to members that manipulate the points references of a Multipoint, CurveSegment,...
Definition: geometry.h:605
SDKResult
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
INullGeometry
Indicator interface for a Null geometry.
Definition: geometry.h:769
kGMTF_All
@ kGMTF_All
All geometry types.
Definition: geometry.h:176
kGMTF_Null
@ kGMTF_Null
No flags.
Definition: geometry.h:156
PointType
PointType
Type of point.
Definition: geometry.h:224
IGeometry::GetGeometryType
virtual SDKResult SDK_CALLTYPE GetGeometryType(GeometryType &type) const =0
Returns the type of a geometry.
kGMD_25D
@ kGMD_25D
A 2.5D geometry (such as a surface mesh).
Definition: geometry.h:210
IGeometry::GetHorizontalDatum
virtual SDKResult SDK_CALLTYPE GetHorizontalDatum(SDKUInt16 &hordat) const =0
Returns the horizontal datum of the geometry.
IGeometry::IsInfinite
virtual SDKResult SDK_CALLTYPE IsInfinite() const =0
Indicates whether a Geometry object has infinite coordinates in any dimension.
IEnvelope::GetCoordinates
virtual SDKResult SDK_CALLTYPE GetCoordinates(SDKAnyType type, void *xmin, void *ymin, void *xmax, void *ymax) const =0
Returns coordinates formatted in the specified type.
IGeometry::GetGeometryID
virtual SDKResult SDK_CALLTYPE GetGeometryID(SDKUInt64 &flags) const =0
Returns geometry identifier.
IGeometry::GetVerticalCoordinateSystem
virtual SDKResult SDK_CALLTYPE GetVerticalCoordinateSystem(sdk::crs::IVerticalCoordinateSystem **coordinate_system) const =0
Returns an interface that provides access to properties of the vertical coordinate system.
sdk_component_interface.h
Common base SDK interfaces.
kGM_IM_SeparatePoints
@ kGM_IM_SeparatePoints
The points list not represent a continued segment but it is just a list of separate points.
Definition: geometry.h:253
IRing
Provides access to members that identify a ring.
Definition: geometry.h:681
kGMT_Grid
@ kGMT_Grid
A grid geometry type.
Definition: geometry.h:88
kGMD_3D
@ kGMD_3D
A 3D geometry.
Definition: geometry.h:211
kGeometryTypeToTypeFlagTable
static const SDKUInt32 kGeometryTypeToTypeFlagTable[]
The geometry type to geometry type flag cross table.
Definition: geometry.h:180
kGM_IM_CubicSpline
@ kGM_IM_CubicSpline
The control points are interpolated using initial tangents and cubic polynomials, a form of degree 3 ...
Definition: geometry.h:277
platform.h
Describes the platform constants.
kGMT_Curve
@ kGMT_Curve
A Curve is a connected sequence of segments.
Definition: geometry.h:81
kGeometryID_Undefined
static const SDKUInt64 kGeometryID_Undefined
Undefined ID.
Definition: geometry.h:69
kGMT_MultiCurve
@ kGMT_MultiCurve
A MultiCurve is a two-dimensional geometric collection whose elements are curves.
Definition: geometry.h:116
kGMPT_PointD2D
@ kGMPT_PointD2D
2D points are in spatial Cartesian units.
Definition: geometry.h:232
GeometryTypeFlag
GeometryTypeFlag
Geometry type flag. It is used for the parameterization of queries.
Definition: geometry.h:155
IGeometry::GetBoundary
virtual SDKResult SDK_CALLTYPE GetBoundary(IGeometry **geometry)=0
Returns boundary of the geometry object.
ISDKComponent
Base interface for all SDK interfaces.
Definition: sdk_component_interface.h:41
geometry_base_types.h
Geometry base types.
kGMT_MultiPolygon
@ kGMT_MultiPolygon
A MultiPolygon is a MultiSurface whose elements are Polygons.
Definition: geometry.h:108
kGMT_Surface
@ kGMT_Surface
A Surface is a collection of rings.
Definition: geometry.h:83
kGMT_CompositeCurve
@ kGMT_CompositeCurve
A CompositCurve is a connected sequence of curves.
Definition: geometry.h:93
GeometryType
GeometryType
Available types of geometry objects.
Definition: geometry.h:73
IPoint
Provides access to members that define two dimensional points.
Definition: geometry.h:493
IEnvelope::GetZCoordinates
virtual SDKResult SDK_CALLTYPE GetZCoordinates(SDKAnyType type, void *zmin, void *zmax) const =0
Returns the minimum and maximum Z values.
IGeometryCollection::GetGeometryCount
virtual SDKResult SDK_CALLTYPE GetGeometryCount(SDKUInt32 &count) const =0
Returns the number of Geometries in the GeometryCollection.
kGMT_Circle
@ kGMT_Circle
Circle.
Definition: geometry.h:120
sdk::crs::IHorizontalCoordinateSystem
Describes member that manage the horizontal coordinate system
Definition: crs_horizontal_coordinate_system.h:137
ICompositeCurve
Indicator interface for a CompositeCurve.
Definition: geometry.h:671
kGMPT_GeoPoint3D
@ kGMPT_GeoPoint3D
3D points are in GeoPoint units.
Definition: geometry.h:228
IMultipoint
Indicator interface for a multipoint.
Definition: geometry.h:635
IGeometryCollection::GetGeometry
virtual SDKResult SDK_CALLTYPE GetGeometry(SDKUInt32 index, IGeometry **geometry) const =0
Returns the ith Geometry from the GeometryCollection. The first Geometry has index 0 and the last Geo...
IGeometry::Project
virtual SDKResult SDK_CALLTYPE Project(sdk::crs::IProjection *projection, IGeometry **projected_geometry)=0
Projects the geometry into a new projection.
GeometryTypeFlagType
SDKUInt32 GeometryTypeFlagType
Geometry type flag.
Definition: geometry.h:65
IGeometry::GetPointCollection
virtual SDKResult SDK_CALLTYPE GetPointCollection(IPointCollectionParameters *parameters, IPointCollection **point_collection)=0
Returns the point collection of the Geometry object.
kGMPT_GeoIntPoint
@ kGMPT_GeoIntPoint
2D points are in GeoInt units.
Definition: geometry.h:225
kGMT_CurveSegment
@ kGMT_CurveSegment
A CurveSegment is a homogeneous segment of a Curve.
Definition: geometry.h:110
kGMPT_PointF3D
@ kGMPT_PointF3D
3D points are in spatial Cartesian units.
Definition: geometry.h:231
IEnvelope::IsEmpty
virtual SDKResult SDK_CALLTYPE IsEmpty() const =0
Returns whether the width and height are equal to 0.
kGMT_Polygon
@ kGMT_Polygon
A Polygon is a planar surface, defined by 1 exterior boundary and 0 or more interior boundaries....
Definition: geometry.h:103
kGMT_BezierCurve
@ kGMT_BezierCurve
Bezier curve.
Definition: geometry.h:122
kGM_IM_Linear
@ kGM_IM_Linear
Linear (linear) is the interpolation mechanism that shall return DirectPositions on a straight line b...
Definition: geometry.h:257
FWD_DECL_INTERFACE
FWD_DECL_INTERFACE(ILWEParserWrapper)
Provides a wrapper around the message parser to get, add or remove the.
Axis
Axis
Axis.
Definition: geometry.h:238
PointDimension
PointDimension
The coordinates dimension.
Definition: geometry.h:216
IEnvelope::IsInfinite
virtual SDKResult SDK_CALLTYPE IsInfinite() const =0
Indicates whether a Geometry object has infinite coordinates in any dimension.
IMultiSurface
Indicator interface for the MultiSurface.
Definition: geometry.h:726
kGMT_Point
@ kGMT_Point
A point is a single 0 dimensional geometry.
Definition: geometry.h:77
kGMD_NoD
@ kGMD_NoD
The dimension is unknown or unspecified.
Definition: geometry.h:206
ICurve
Provides access to properties and methods of 1 dimensional curves.
Definition: geometry.h:657
kGM_IM_Loxodromic
@ kGM_IM_Loxodromic
Loxodromic is the interpolation method that shall return DirectPositions on a loxodromic curve betwee...
Definition: geometry.h:274
kGMT_Multipoint
@ kGMT_Multipoint
A Multipoint is an ordered collection of points.
Definition: geometry.h:79
sdk::crs::IProjection
Provides access to members that control the properties and methods for the projection.
Definition: crs_projection.h:31