📄 ogr_geometry.h
字号:
/************************************************************************//* OGRCurve *//************************************************************************//** * Abstract curve base class. */class CPL_DLL OGRCurve : public OGRGeometry{ public: OGRCurve(); virtual ~OGRCurve(); // ICurve methods virtual double get_Length() const = 0; virtual void StartPoint(OGRPoint *) const = 0; virtual void EndPoint(OGRPoint *) const = 0; virtual int get_IsClosed() const; virtual void Value( double, OGRPoint * ) const = 0;};/************************************************************************//* OGRLineString *//************************************************************************//** * Concrete representation of a multi-vertex line. */class CPL_DLL OGRLineString : public OGRCurve{ protected: int nPointCount; OGRRawPoint *paoPoints; double *padfZ; void Make3D(); void Make2D(); public: OGRLineString(); virtual ~OGRLineString(); // IWks Interface virtual int WkbSize() const; virtual OGRErr importFromWkb( unsigned char *, int = -1 ); virtual OGRErr exportToWkb( OGRwkbByteOrder, unsigned char * ) const; virtual OGRErr importFromWkt( char ** ); virtual OGRErr exportToWkt( char ** ppszDstText ) const; // IGeometry interface virtual int getDimension() const; virtual OGRGeometry *clone() const; virtual void empty(); virtual void getEnvelope( OGREnvelope * psEnvelope ) const; // ICurve methods virtual double get_Length() const; virtual void StartPoint(OGRPoint *) const; virtual void EndPoint(OGRPoint *) const; virtual void Value( double, OGRPoint * ) const; // ILineString methods int getNumPoints() const { return nPointCount; } void getPoint( int, OGRPoint * ) const; double getX( int i ) const { return paoPoints[i].x; } double getY( int i ) const { return paoPoints[i].y; } double getZ( int i ) const; // ISpatialRelation virtual OGRBoolean Equals( OGRGeometry * ) const; // non standard. virtual void setCoordinateDimension( int nDimension ); void setNumPoints( int ); void setPoint( int, OGRPoint * ); void setPoint( int, double, double ); void setPoint( int, double, double, double ); void setPoints( int, OGRRawPoint *, double * = NULL ); void setPoints( int, double * padfX, double * padfY, double *padfZ = NULL ); void addPoint( OGRPoint * ); void addPoint( double, double ); void addPoint( double, double, double ); void getPoints( OGRRawPoint *, double * = NULL ) const; void addSubLineString( const OGRLineString *, int nStartVertex = 0, int nEndVertex = -1 ); // non-standard from OGRGeometry virtual OGRwkbGeometryType getGeometryType() const; virtual const char *getGeometryName() const; virtual OGRErr transform( OGRCoordinateTransformation *poCT ); virtual void flattenTo2D();};/************************************************************************//* OGRLinearRing *//* *//* This is an alias for OGRLineString for now. *//************************************************************************//** * Concrete representation of a closed ring. * * This class is functionally equivelent to an OGRLineString, but has a * separate identity to maintain alignment with the OpenGIS simple feature * data model. It exists to serve as a component of an OGRPolygon. */class CPL_DLL OGRLinearRing : public OGRLineString{ private: friend class OGRPolygon; // These are not IWks compatible ... just a convenience for OGRPolygon. virtual int _WkbSize( int b3D ) const; virtual OGRErr _importFromWkb( OGRwkbByteOrder, int b3D, unsigned char *, int=-1 ); virtual OGRErr _exportToWkb( OGRwkbByteOrder, int b3D, unsigned char * ) const; public: OGRLinearRing(); OGRLinearRing( OGRLinearRing * ); ~OGRLinearRing(); // Non standard. virtual const char *getGeometryName() const; virtual OGRGeometry *clone() const; virtual int isClockwise() const; virtual void closeRings(); virtual double get_Area() const; OGRBoolean isPointInRing(const OGRPoint* pt) const; // IWks Interface - Note this isnt really a first class object // for the purposes of WKB form. These methods always fail since this // object cant be serialized on its own. virtual int WkbSize() const; virtual OGRErr importFromWkb( unsigned char *, int=-1 ); virtual OGRErr exportToWkb( OGRwkbByteOrder, unsigned char * ) const;};/************************************************************************//* OGRSurface *//************************************************************************//** * Abstract base class for 2 dimensional objects like polygons. */class CPL_DLL OGRSurface : public OGRGeometry{ public: virtual double get_Area() const = 0; virtual OGRErr Centroid( OGRPoint * poPoint ) const = 0; virtual OGRErr PointOnSurface( OGRPoint * poPoint ) const = 0;};/************************************************************************//* OGRPolygon *//************************************************************************//** * Concrete class representing polygons. * * Note that the OpenGIS simple features polygons consist of one outer * ring, and zero or more inner rings. A polygon cannot represent disconnected * regions (such as multiple islands in a political body). The * OGRMultiPolygon must be used for this. */class CPL_DLL OGRPolygon : public OGRSurface{ int nRingCount; OGRLinearRing **papoRings; public: OGRPolygon(); virtual ~OGRPolygon(); // Non standard (OGRGeometry). virtual const char *getGeometryName() const; virtual OGRwkbGeometryType getGeometryType() const; virtual OGRGeometry *clone() const; virtual void empty(); virtual OGRErr transform( OGRCoordinateTransformation *poCT ); virtual void flattenTo2D(); // ISurface Interface virtual double get_Area() const; virtual int Centroid( OGRPoint * poPoint ) const; virtual int PointOnSurface( OGRPoint * poPoint ) const; // IWks Interface virtual int WkbSize() const; virtual OGRErr importFromWkb( unsigned char *, int = -1 ); virtual OGRErr exportToWkb( OGRwkbByteOrder, unsigned char * ) const; virtual OGRErr importFromWkt( char ** ); virtual OGRErr exportToWkt( char ** ppszDstText ) const; // IGeometry virtual int getDimension() const; virtual void getEnvelope( OGREnvelope * psEnvelope ) const; // ISpatialRelation virtual OGRBoolean Equals( OGRGeometry * ) const; // Non standard virtual void setCoordinateDimension( int nDimension ); void addRing( OGRLinearRing * ); void addRingDirectly( OGRLinearRing * ); OGRLinearRing *getExteriorRing(); const OGRLinearRing *getExteriorRing() const; int getNumInteriorRings() const; OGRLinearRing *getInteriorRing( int ); const OGRLinearRing *getInteriorRing( int ) const; OGRBoolean IsPointOnSurface( const OGRPoint * ) const; virtual void closeRings();};/************************************************************************//* OGRGeometryCollection *//************************************************************************//** * A collection of 1 or more geometry objects. * * All geometries must share a common spatial reference system, and * Subclasses may impose additional restrictions on the contents. */class CPL_DLL OGRGeometryCollection : public OGRGeometry{ int nGeomCount; OGRGeometry **papoGeoms; int nCoordinateDimension; public: OGRGeometryCollection(); virtual ~OGRGeometryCollection(); // Non standard (OGRGeometry). virtual const char *getGeometryName() const; virtual OGRwkbGeometryType getGeometryType() const; virtual OGRGeometry *clone() const; virtual void empty(); virtual OGRErr transform( OGRCoordinateTransformation *poCT ); virtual void flattenTo2D(); // IWks Interface virtual int WkbSize() const; virtual OGRErr importFromWkb( unsigned char *, int = -1 ); virtual OGRErr exportToWkb( OGRwkbByteOrder, unsigned char * ) const; virtual OGRErr importFromWkt( char ** ); virtual OGRErr exportToWkt( char ** ppszDstText ) const; // IGeometry methods virtual int getDimension() const; virtual void getEnvelope( OGREnvelope * psEnvelope ) const; // IGeometryCollection int getNumGeometries() const; OGRGeometry *getGeometryRef( int ); const OGRGeometry *getGeometryRef( int ) const; // ISpatialRelation virtual OGRBoolean Equals( OGRGeometry * ) const; // Non standard virtual void setCoordinateDimension( int nDimension ); virtual OGRErr addGeometry( const OGRGeometry * ); virtual OGRErr addGeometryDirectly( OGRGeometry * ); virtual OGRErr removeGeometry( int iIndex, int bDelete = TRUE ); void closeRings();};/************************************************************************//* OGRMultiPolygon *//************************************************************************//** * A collection of non-overlapping OGRPolygons. * * Note that the IMultiSurface class hasn't been modelled, nor have any * of it's methods. */class CPL_DLL OGRMultiPolygon : public OGRGeometryCollection{ public: OGRMultiPolygon(); // Non standard (OGRGeometry). virtual const char *getGeometryName() const; virtual OGRwkbGeometryType getGeometryType() const; virtual OGRGeometry *clone() const; virtual OGRErr importFromWkt( char ** ); virtual OGRErr exportToWkt( char ** ) const; // Non standard virtual OGRErr addGeometryDirectly( OGRGeometry * ); double get_Area() const;};/************************************************************************//* OGRMultiPoint *//************************************************************************//** * A collection of OGRPoints. */class CPL_DLL OGRMultiPoint : public OGRGeometryCollection{ private: OGRErr importFromWkt_Bracketed( char ** ); public: OGRMultiPoint(); // Non standard (OGRGeometry). virtual const char *getGeometryName() const; virtual OGRwkbGeometryType getGeometryType() const; virtual OGRGeometry *clone() const; virtual OGRErr importFromWkt( char ** ); virtual OGRErr exportToWkt( char ** ) const; // Non standard virtual OGRErr addGeometryDirectly( OGRGeometry * );};/************************************************************************//* OGRMultiLineString *//************************************************************************//** * A collection of OGRLineStrings. */class CPL_DLL OGRMultiLineString : public OGRGeometryCollection{ public: OGRMultiLineString(); ~OGRMultiLineString(); // Non standard (OGRGeometry). virtual const char *getGeometryName() const; virtual OGRwkbGeometryType getGeometryType() const; virtual OGRGeometry *clone() const; virtual OGRErr importFromWkt( char ** ); virtual OGRErr exportToWkt( char ** ) const; // Non standard virtual OGRErr addGeometryDirectly( OGRGeometry * );};/************************************************************************//* OGRGeometryFactory *//************************************************************************//** * Create geometry objects from well known text/binary. */class CPL_DLL OGRGeometryFactory{ public: static OGRErr createFromWkb( unsigned char *, OGRSpatialReference *, OGRGeometry **, int = -1 ); static OGRErr createFromWkt( char **, OGRSpatialReference *, OGRGeometry ** ); static OGRGeometry *createFromGML( const char * ); static OGRGeometry *createFromGEOS( GEOSGeom ); static void destroyGeometry( OGRGeometry * ); static OGRGeometry *createGeometry( OGRwkbGeometryType ); static OGRGeometry * forceToPolygon( OGRGeometry * ); static OGRGeometry * forceToMultiPolygon( OGRGeometry * ); static OGRGeometry * forceToMultiPoint( OGRGeometry * ); static OGRGeometry * forceToMultiLineString( OGRGeometry * ); static void *getGEOSGeometryFactory(); static int haveGEOS();};#endif /* ndef _OGR_GEOMETRY_H_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -