⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ogr_core.h

📁 用于读取TAB、MIF、SHP文件的类
💻 H
字号:
/****************************************************************************** * $Id: ogr_core.h,v 1.30 2006/04/02 18:25:59 fwarmerdam Exp $ * * Project:  OpenGIS Simple Features Reference Implementation * Purpose:  Define some core portability services for cross-platform OGR code. * 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. ****************************************************************************** * * $Log: ogr_core.h,v $ * Revision 1.30  2006/04/02 18:25:59  fwarmerdam * added OFTDateTime, and OFTTime support * * Revision 1.29  2006/02/15 04:25:37  fwarmerdam * added date support * * Revision 1.28  2005/08/30 23:52:35  fwarmerdam * implement preliminary OFTBinary support * * Revision 1.27  2005/07/29 15:54:07  fwarmerdam * ogrmakewktcoordinate defined in ogr_p.h * * Revision 1.26  2005/07/29 04:12:47  fwarmerdam * expose OGRMakeWktCoordinates * * Revision 1.25  2005/02/02 19:59:47  fwarmerdam * added SetNextByIndex support * * Revision 1.24  2003/10/09 15:27:41  warmerda * added OGRLayer::DeleteFeature() support * * Revision 1.23  2003/09/11 19:59:41  warmerda * avoid casting issue with UNFIX macro * * Revision 1.22  2003/08/27 15:40:37  warmerda * added support for generating DB2 V7.2 compatible WKB * * Revision 1.21  2003/08/11 03:28:04  warmerda * Export OGREnvelope C++ class with CPL_DLL as per bug 378. * * Revision 1.20  2003/06/09 13:48:54  warmerda * added DB2 V7.2 byte order hack * * Revision 1.19  2003/05/08 13:27:22  warmerda * dont use C++ comments in this c includable file * * Revision 1.18  2003/04/29 19:03:58  warmerda * removed extra comma * * Revision 1.17  2003/03/03 05:05:54  warmerda * added support for DeleteDataSource and DeleteLayer * * Revision 1.16  2003/02/19 02:57:49  warmerda * added wkbLinearRing support * * Revision 1.15  2003/01/14 20:08:49  warmerda * fixed another bug in OGREnvelope.Merge * * Revision 1.14  2003/01/07 17:51:55  warmerda * fixed OGREnvelope.Merge() * * Revision 1.13  2003/01/06 17:56:03  warmerda * Added Merge and IsInit() method on OGREnvelope * * Revision 1.12  2002/11/08 18:25:45  warmerda * remove extranious comma in enum, confuses HPUX compiler * * Revision 1.11  2002/11/08 15:42:41  warmerda * ensure type correctness of wkbFlatten * * Revision 1.10  2002/10/24 20:53:02  warmerda * expand tabs * * Revision 1.9  2002/09/26 18:13:17  warmerda * moved some defs to ogr_core.h for sharing with ogr_api.h * * Revision 1.8  2000/07/11 20:15:12  warmerda * apply CPL_DLL to OGR functions * * Revision 1.7  2000/07/09 20:47:35  warmerda * added CPL_START/END * * Revision 1.6  1999/11/18 19:02:19  warmerda * expanded tabs * * Revision 1.5  1999/07/07 04:23:07  danmo * Fixed typo in  #define _OGR_..._H_INCLUDED  line * * Revision 1.4  1999/07/05 18:56:52  warmerda * now includes cpl_port.h * * Revision 1.3  1999/07/05 17:19:03  warmerda * added OGRERR_UNSUPPORTED_SRS * * Revision 1.2  1999/05/31 15:00:37  warmerda * added generic OGRERR_FAILURE error code. * * Revision 1.1  1999/05/20 14:35:00  warmerda * New * */#ifndef _OGR_CORE_H_INCLUDED#define _OGR_CORE_H_INCLUDED#include "cpl_port.h"/** * Simple container for a bounding region. */#ifdef __cplusplusclass CPL_DLL OGREnvelope{  public:        OGREnvelope()        {                MinX = MaxX = MinY = MaxY = 0;        }    double      MinX;    double      MaxX;    double      MinY;    double      MaxY;    int  IsInit() { return MinX != 0 || MinY != 0 || MaxX != 0 || MaxY != 0; }    void Merge( OGREnvelope & sOther ) {        if( IsInit() )        {            MinX = MIN(MinX,sOther.MinX);            MaxX = MAX(MaxX,sOther.MaxX);            MinY = MIN(MinY,sOther.MinY);            MaxY = MAX(MaxY,sOther.MaxY);        }        else        {            MinX = sOther.MinX;            MaxX = sOther.MaxX;            MinY = sOther.MinY;            MaxY = sOther.MaxY;        }    }};#elsetypedef struct{    double      MinX;    double      MaxX;    double      MinY;    double      MaxY;} OGREnvelope;#endifCPL_C_STARTvoid CPL_DLL *OGRMalloc( size_t );void CPL_DLL *OGRCalloc( size_t, size_t );void CPL_DLL *OGRRealloc( void *, size_t );char CPL_DLL *OGRStrdup( const char * );void CPL_DLL OGRFree( void * );typedef int OGRErr;#define OGRERR_NONE                0#define OGRERR_NOT_ENOUGH_DATA     1    /* not enough data to deserialize */#define OGRERR_NOT_ENOUGH_MEMORY   2#define OGRERR_UNSUPPORTED_GEOMETRY_TYPE 3#define OGRERR_UNSUPPORTED_OPERATION 4#define OGRERR_CORRUPT_DATA        5#define OGRERR_FAILURE             6#define OGRERR_UNSUPPORTED_SRS     7typedef int     OGRBoolean;/* -------------------------------------------------------------------- *//*      ogr_geometry.h related definitions.                             *//* -------------------------------------------------------------------- *//** * List of well known binary geometry types.  These are used within the BLOBs * but are also returned from OGRGeometry::getGeometryType() to identify the * type of a geometry object. */typedef enum {    wkbUnknown = 0,             /* non-standard */    wkbPoint = 1,               /* rest are standard WKB type codes */    wkbLineString = 2,    wkbPolygon = 3,    wkbMultiPoint = 4,    wkbMultiLineString = 5,    wkbMultiPolygon = 6,    wkbGeometryCollection = 7,    wkbNone = 100,              /* non-standard, for pure attribute records */    wkbLinearRing = 101,        /* non-standard, just for createGeometry() */    wkbPoint25D = 0x80000001,   /* 2.5D extensions as per 99-402 */    wkbLineString25D = 0x80000002,    wkbPolygon25D = 0x80000003,    wkbMultiPoint25D = 0x80000004,    wkbMultiLineString25D = 0x80000005,    wkbMultiPolygon25D = 0x80000006,    wkbGeometryCollection25D = 0x80000007} OGRwkbGeometryType;#define wkb25DBit 0x80000000#define wkbFlatten(x)  ((OGRwkbGeometryType) ((x) & (~wkb25DBit)))#define ogrZMarker 0x21125711const char CPL_DLL * OGRGeometryTypeToName( OGRwkbGeometryType eType );typedef enum {    wkbXDR = 0,         /* MSB/Sun/Motoroloa: Most Significant Byte First   */    wkbNDR = 1          /* LSB/Intel/Vax: Least Significant Byte First      */} OGRwkbByteOrder;#ifndef NO_HACK_FOR_IBM_DB2_V72#  define HACK_FOR_IBM_DB2_V72#endif#ifdef HACK_FOR_IBM_DB2_V72#  define DB2_V72_FIX_BYTE_ORDER(x) ((((x) & 0x31) == (x)) ? (OGRwkbByteOrder) ((x) & 0x1) : (x))#  define DB2_V72_UNFIX_BYTE_ORDER(x) ((unsigned char) (OGRGeometry::bGenerate_DB2_V72_BYTE_ORDER ? ((x) | 0x30) : (x)))#else#  define DB2_V72_FIX_BYTE_ORDER(x) (x)#  define DB2_V72_UNFIX_BYTE_ORDER(x) (x)#endif/************************************************************************//*                  ogr_feature.h related definitions.                  *//************************************************************************//** * List of feature field types.  This list is likely to be extended in the * future ... avoid coding applications based on the assumption that all * field types can be known. */typedef enum {  /** Simple 32bit integer */                   OFTInteger = 0,  /** List of 32bit integers */                 OFTIntegerList = 1,  /** Double Precision floating point */        OFTReal = 2,  /** List of doubles */                        OFTRealList = 3,  /** String of ASCII chars */                  OFTString = 4,  /** Array of strings */                       OFTStringList = 5,  /** Double byte string (unsupported) */       OFTWideString = 6,  /** List of wide strings (unsupported) */     OFTWideStringList = 7,  /** Raw Binary data */                        OFTBinary = 8,  /** Date */                                   OFTDate = 9,  /** Time */                                   OFTTime = 10,  /** Date and Time */                          OFTDateTime = 11} OGRFieldType;/** * Display justification for field values. */typedef enum {    OJUndefined = 0,    OJLeft = 1,    OJRight = 2} OGRJustification;#define OGRNullFID            -1#define OGRUnsetMarker        -21121/************************************************************************//*                               OGRField                               *//************************************************************************//** * OGRFeature field attribute value union. */typedef union {    int         Integer;    double      Real;    char       *String;    /* wchar    *WideString; */        struct {        int     nCount;        int     *paList;    } IntegerList;        struct {        int     nCount;        double  *paList;    } RealList;        struct {        int     nCount;        char    **paList;    } StringList;    /*    union {        int   nCount;        wchar *paList;    } WideStringList;    */    struct {        int     nCount;        GByte   *paData;    } Binary;        struct {        int     nMarker1;        int     nMarker2;    } Set;    struct {        GInt16  Year;        GByte   Month;        GByte   Day;        GByte   Hour;        GByte   Minute;        GByte   Second;        GByte   TZFlag; /* 0=unknown, 1=localtime(ambiguous),                            100=GMT, 104=GMT+1, 80=GMT-5, etc */    } Date;} OGRField;int CPL_DLL OGRParseDate( const char *pszInput, OGRField *psOutput,                           int nOptions );/* -------------------------------------------------------------------- *//*      Constants from ogrsf_frmts.h for capabilities.                  *//* -------------------------------------------------------------------- */#define OLCRandomRead          "RandomRead"#define OLCSequentialWrite     "SequentialWrite"#define OLCRandomWrite         "RandomWrite"#define OLCFastSpatialFilter   "FastSpatialFilter"#define OLCFastFeatureCount    "FastFeatureCount"#define OLCFastGetExtent       "FastGetExtent"#define OLCCreateField         "CreateField"#define OLCTransactions        "Transactions"#define OLCDeleteFeature       "DeleteFeature"#define OLCFastSetNextByIndex  "FastSetNextByIndex"#define ODsCCreateLayer        "CreateLayer"#define ODsCDeleteLayer        "DeleteLayer"#define ODrCCreateDataSource   "CreateDataSource"#define ODrCDeleteDataSource   "DeleteDataSource"CPL_C_END#endif /* ndef _OGR_CORE_H_INCLUDED */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -