📄 ogr_geometry.h
字号:
};/************************************************************************//* 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(); virtual OGRErr importFromWkb( unsigned char *, int = -1 ); virtual OGRErr exportToWkb( OGRwkbByteOrder, unsigned char * ); virtual OGRErr importFromWkt( char ** ); virtual OGRErr exportToWkt( char ** ppszDstText ); // IGeometry interface virtual int getDimension(); virtual int getCoordinateDimension(); virtual OGRGeometry *clone(); virtual void empty(); virtual void getEnvelope( OGREnvelope * psEnvelope ); // ICurve methods virtual double get_Length(); virtual void StartPoint(OGRPoint *); virtual void EndPoint(OGRPoint *); virtual void Value( double, OGRPoint * ); // ILineString methods int getNumPoints() { return nPointCount; } void getPoint( int, OGRPoint * ); double getX( int i ) { return paoPoints[i].x; } double getY( int i ) { return paoPoints[i].y; } double getZ( int i ); // ISpatialRelation virtual OGRBoolean Equal( OGRGeometry * ); // non standard. void setNumPoints( int ); void setPoint( int, OGRPoint * ); void setPoint( int, double, double, double = 0.0 ); void setPoints( int, OGRRawPoint *, double * = NULL ); void setPoints( int, double * padfX, double * padfY, double *padfZ = NULL ); void addPoint( OGRPoint * ); void addPoint( double, double, double = 0.0 ); // non-standard from OGRGeometry virtual OGRwkbGeometryType getGeometryType(); virtual const char *getGeometryName(); 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 ); virtual OGRErr _importFromWkb( OGRwkbByteOrder, int b3D, unsigned char *, int=-1 ); virtual OGRErr _exportToWkb( OGRwkbByteOrder, int b3D, unsigned char * ); public: OGRLinearRing(); OGRLinearRing( OGRLinearRing * ); // Non standard. virtual const char *getGeometryName(); virtual OGRGeometry *clone(); virtual int isClockwise(); // 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(); virtual OGRErr importFromWkb( unsigned char *, int=-1 ); virtual OGRErr exportToWkb( OGRwkbByteOrder, unsigned char * );};/************************************************************************//* OGRSurface *//************************************************************************//** * Abstract base class for 2 dimensional objects like polygons. */class CPL_DLL OGRSurface : public OGRGeometry{ public: virtual double get_Area() = 0; virtual OGRErr Centroid( OGRPoint * poPoint ) = 0; virtual OGRErr PointOnSurface( OGRPoint * poPoint ) = 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(); virtual OGRwkbGeometryType getGeometryType(); virtual OGRGeometry *clone(); virtual void empty(); virtual OGRErr transform( OGRCoordinateTransformation *poCT ); virtual void flattenTo2D(); // ISurface Interface virtual double get_Area(); virtual int Centroid( OGRPoint * poPoint ); virtual int PointOnSurface( OGRPoint * poPoint ); // IWks Interface virtual int WkbSize(); virtual OGRErr importFromWkb( unsigned char *, int = -1 ); virtual OGRErr exportToWkb( OGRwkbByteOrder, unsigned char * ); virtual OGRErr importFromWkt( char ** ); virtual OGRErr exportToWkt( char ** ppszDstText ); // IGeometry virtual int getDimension(); virtual int getCoordinateDimension(); virtual void getEnvelope( OGREnvelope * psEnvelope ); // ISpatialRelation virtual OGRBoolean Equal( OGRGeometry * ); // Non standard void addRing( OGRLinearRing * ); void addRingDirectly( OGRLinearRing * ); OGRLinearRing *getExteriorRing(); int getNumInteriorRings(); OGRLinearRing *getInteriorRing( int ); };/************************************************************************//* 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(); virtual OGRwkbGeometryType getGeometryType(); virtual OGRGeometry *clone(); virtual void empty(); virtual OGRErr transform( OGRCoordinateTransformation *poCT ); virtual void flattenTo2D(); // IWks Interface virtual int WkbSize(); virtual OGRErr importFromWkb( unsigned char *, int = -1 ); virtual OGRErr exportToWkb( OGRwkbByteOrder, unsigned char * ); virtual OGRErr importFromWkt( char ** ); virtual OGRErr exportToWkt( char ** ppszDstText ); // IGeometry methods virtual int getDimension(); virtual int getCoordinateDimension(); virtual void getEnvelope( OGREnvelope * psEnvelope ); // IGeometryCollection int getNumGeometries(); OGRGeometry *getGeometryRef( int ); // ISpatialRelation virtual OGRBoolean Equal( OGRGeometry * ); // Non standard virtual OGRErr addGeometry( OGRGeometry * ); virtual OGRErr addGeometryDirectly( OGRGeometry * ); virtual OGRErr removeGeometry( int iIndex, int bDelete = TRUE );};/************************************************************************//* 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: // Non standard (OGRGeometry). virtual const char *getGeometryName(); virtual OGRwkbGeometryType getGeometryType(); virtual OGRGeometry *clone(); virtual OGRErr importFromWkt( char ** ); virtual OGRErr exportToWkt( char ** ); // Non standard virtual OGRErr addGeometryDirectly( OGRGeometry * );};/************************************************************************//* OGRMultiPoint *//************************************************************************//** * A collection of OGRPoints. */class CPL_DLL OGRMultiPoint : public OGRGeometryCollection{ private: OGRErr importFromWkt_Bracketed( char ** ); public: // Non standard (OGRGeometry). virtual const char *getGeometryName(); virtual OGRwkbGeometryType getGeometryType(); virtual OGRGeometry *clone(); virtual OGRErr importFromWkt( char ** ); virtual OGRErr exportToWkt( char ** ); // Non standard virtual OGRErr addGeometryDirectly( OGRGeometry * );};/************************************************************************//* OGRMultiLineString *//************************************************************************//** * A collection of OGRLineStrings. */class CPL_DLL OGRMultiLineString : public OGRGeometryCollection{ public: // Non standard (OGRGeometry). virtual const char *getGeometryName(); virtual OGRwkbGeometryType getGeometryType(); virtual OGRGeometry *clone(); virtual OGRErr importFromWkt( char ** ); virtual OGRErr exportToWkt( char ** ); // 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 void destroyGeometry( OGRGeometry * ); static OGRGeometry *createGeometry( OGRwkbGeometryType ); static OGRGeometry * forceToPolygon( OGRGeometry * ); static OGRGeometry * forceToMultiPolygon( OGRGeometry * ); static OGRGeometry * forceToMultiPoint( OGRGeometry * ); static OGRGeometry * forceToMultiLineString( OGRGeometry * );};#endif /* ndef _OGR_GEOMETRY_H_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -