ogr_geometry.zip

  • pupu90
    了解作者
  • C/C++
    开发工具
  • 4KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2020-02-26 19:23
    上传日期
通用的导航栏,可以自定义颜色 、线条 、图片等,方便用户自定义
ogr_geometry.zip
  • ogr_geometry.h
    20.4KB
内容介绍
/****************************************************************************** * $Id: ogr_geometry.h 12921 2007-11-21 19:37:49Z mloskot $ * * Project: OpenGIS Simple Features Reference Implementation * Purpose: Classes for manipulating simple features that is not specific * to a particular interface technology. * Author: Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 1999, Frank Warmerdam * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************/ #ifndef _OGR_GEOMETRY_H_INCLUDED #define _OGR_GEOMETRY_H_INCLUDED #include "ogr_core.h" #include "ogr_spatialref.h" /** * \file ogr_geometry.h * * Simple feature geometry classes. */ /** * Simple container for a position. */ class OGRRawPoint { public: OGRRawPoint() { x = y = 0.0; } double x; double y; }; typedef struct GEOSGeom_t *GEOSGeom; /************************************************************************/ /* OGRGeometry */ /************************************************************************/ /** * Abstract base class for all geometry classes. * * Note that the family of spatial analysis methods (Equal(), Disjoint(), ..., * ConvexHull(), Buffer(), ...) are not implemented at ths time. Some other * required and optional geometry methods have also been omitted at this * time. */ class CPL_DLL OGRGeometry { private: OGRSpatialReference * poSRS; // may be NULL protected: int nCoordDimension; public: OGRGeometry(); virtual ~OGRGeometry(); // standard IGeometry virtual int getDimension() const = 0; virtual int getCoordinateDimension() const; virtual OGRBoolean IsEmpty() const { return 0; } virtual OGRBoolean IsSimple() const { return 1; } virtual void empty() = 0; virtual OGRGeometry *clone() const = 0; virtual void getEnvelope( OGREnvelope * psEnvelope ) const = 0; // IWks Interface virtual int WkbSize() const = 0; virtual OGRErr importFromWkb( unsigned char *, int=-1 )=0; virtual OGRErr exportToWkb( OGRwkbByteOrder, unsigned char * ) const = 0; virtual OGRErr importFromWkt( char ** ppszInput ) = 0; virtual OGRErr exportToWkt( char ** ppszDstText ) const = 0; // non-standard virtual OGRwkbGeometryType getGeometryType() const = 0; virtual const char *getGeometryName() const = 0; virtual void dumpReadable( FILE *, const char * = NULL ) const; virtual void flattenTo2D() = 0; virtual char * exportToGML() const; virtual GEOSGeom exportToGEOS() const; virtual void closeRings(); virtual void setCoordinateDimension( int nDimension ); void assignSpatialReference( OGRSpatialReference * poSR ); OGRSpatialReference *getSpatialReference( void ) const { return poSRS; } virtual OGRErr transform( OGRCoordinateTransformation *poCT ) = 0; OGRErr transformTo( OGRSpatialReference *poSR ); // ISpatialRelation virtual OGRBoolean Intersects( OGRGeometry * ) const; virtual OGRBoolean Equals( OGRGeometry * ) const = 0; virtual OGRBoolean Disjoint( const OGRGeometry * ) const; virtual OGRBoolean Touches( const OGRGeometry * ) const; virtual OGRBoolean Crosses( const OGRGeometry * ) const; virtual OGRBoolean Within( const OGRGeometry * ) const; virtual OGRBoolean Contains( const OGRGeometry * ) const; virtual OGRBoolean Overlaps( const OGRGeometry * ) const; // virtual OGRBoolean Relate( const OGRGeometry *, const char * ) const; virtual OGRGeometry *getBoundary() const; virtual double Distance( const OGRGeometry * ) const; virtual OGRGeometry *ConvexHull() const; virtual OGRGeometry *Buffer( double dfDist, int nQuadSegs = 30 ) const; virtual OGRGeometry *Intersection( const OGRGeometry *) const; virtual OGRGeometry *Union( const OGRGeometry * ) const; virtual OGRGeometry *Difference( const OGRGeometry * ) const; virtual OGRGeometry *SymmetricDifference( const OGRGeometry * ) const; // backward compatibility methods. OGRBoolean Intersect( OGRGeometry * ) const; OGRBoolean Equal( OGRGeometry * ) const; // Special HACK for DB2 7.2 support static int bGenerate_DB2_V72_BYTE_ORDER; }; /************************************************************************/ /* OGRPoint */ /************************************************************************/ /** * Point class. * * Implements SFCOM IPoint methods. */ class CPL_DLL OGRPoint : public OGRGeometry { double x; double y; double z; public: OGRPoint(); OGRPoint( double x, double y ); OGRPoint( double x, double y, double z ); virtual ~OGRPoint(); // 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 OGRGeometry *clone() const; virtual void empty(); virtual void getEnvelope( OGREnvelope * psEnvelope ) const; // IPoint double getX() const { return x; } double getY() const { return y; } double getZ() const { return z; } // Non standard virtual void setCoordinateDimension( int nDimension ); void setX( double xIn ) { x = xIn; } void setY( double yIn ) { y = yIn; } void setZ( double zIn ) { z = zIn; nCoordDimension=3; } // ISpatialRelation virtual OGRBoolean Equals( OGRGeometry * ) const; // Non standard from OGRGeometry virtual const char *getGeometryName() const; virtual OGRwkbGeometryType getGeometryType() const; virtual OGRErr transform( OGRCoordinateTransformation *poCT ); virtual void flattenTo2D(); }; /************************************************************************/ /* 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; }; /************
评论
    相关推荐