• duduyu7
    了解作者
  • C/C++
    开发工具
  • 3KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2020-02-26 19:19
    上传日期
键盘模拟,windows下通过c、c++实现的键盘usb驱动编程
ogr_feature.zip
  • ogr_feature.h
    13.2KB
内容介绍
/****************************************************************************** * $Id: ogr_feature.h 10646 2007-01-18 02:38:10Z warmerdam $ * * Project: OpenGIS Simple Features Reference Implementation * Purpose: Class for representing a whole feature, and layer schemas. * Author: Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 1999, Les Technologies SoftMap Inc. * * 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_FEATURE_H_INCLUDED #define _OGR_FEATURE_H_INCLUDED #include "ogr_geometry.h" #include "ogr_featurestyle.h" /** * \file ogr_feature.h * * Simple feature classes. */ /************************************************************************/ /* OGRFieldDefn */ /************************************************************************/ /** * Definition of an attribute of an OGRFeatureDefn. */ class CPL_DLL OGRFieldDefn { private: char *pszName; OGRFieldType eType; OGRJustification eJustify; int nWidth; /* zero is variable */ int nPrecision; OGRField uDefault; void Initialize( const char *, OGRFieldType ); public: OGRFieldDefn( const char *, OGRFieldType ); OGRFieldDefn( OGRFieldDefn * ); ~OGRFieldDefn(); void SetName( const char * ); const char *GetNameRef() { return pszName; } OGRFieldType GetType() { return eType; } void SetType( OGRFieldType eTypeIn ) { eType = eTypeIn;} static const char *GetFieldTypeName( OGRFieldType ); OGRJustification GetJustify() { return eJustify; } void SetJustify( OGRJustification eJustifyIn ) { eJustify = eJustifyIn; } int GetWidth() { return nWidth; } void SetWidth( int nWidthIn ) { nWidth = MAX(0,nWidthIn); } int GetPrecision() { return nPrecision; } void SetPrecision( int nPrecisionIn ) { nPrecision = nPrecisionIn; } void Set( const char *, OGRFieldType, int = 0, int = 0, OGRJustification = OJUndefined ); void SetDefault( const OGRField * ); const OGRField *GetDefaultRef() { return &uDefault; } }; /************************************************************************/ /* OGRFeatureDefn */ /************************************************************************/ /** * Definition of a feature class or feature layer. * * This object contains schema information for a set of OGRFeatures. In * table based systems, an OGRFeatureDefn is essentially a layer. In more * object oriented approaches (such as SF CORBA) this can represent a class * of features but doesn't necessarily relate to all of a layer, or just one * layer. * * This object also can contain some other information such as a name, the * base geometry type and potentially other metadata. * * It is reasonable for different translators to derive classes from * OGRFeatureDefn with additional translator specific information. */ class CPL_DLL OGRFeatureDefn { private: int nRefCount; int nFieldCount; OGRFieldDefn **papoFieldDefn; OGRwkbGeometryType eGeomType; char *pszFeatureClassName; public: OGRFeatureDefn( const char * pszName = NULL ); virtual ~OGRFeatureDefn(); const char *GetName() { return pszFeatureClassName; } int GetFieldCount() { return nFieldCount; } OGRFieldDefn *GetFieldDefn( int i ); int GetFieldIndex( const char * ); void AddFieldDefn( OGRFieldDefn * ); OGRwkbGeometryType GetGeomType() { return eGeomType; } void SetGeomType( OGRwkbGeometryType ); OGRFeatureDefn *Clone(); int Reference() { return ++nRefCount; } int Dereference() { return --nRefCount; } int GetReferenceCount() { return nRefCount; } void Release(); static OGRFeatureDefn *CreateFeatureDefn( const char *pszName = NULL ); static void DestroyFeatureDefn( OGRFeatureDefn * ); }; /************************************************************************/ /* OGRFeature */ /************************************************************************/ /** * A simple feature, including geometry and attributes. */ class CPL_DLL OGRFeature { private: long nFID; OGRFeatureDefn *poDefn; OGRGeometry *poGeometry; OGRField *pauFields; protected: char * m_pszStyleString; OGRStyleTable *m_poStyleTable; char * m_pszTmpFieldValue; public: OGRFeature( OGRFeatureDefn * ); virtual ~OGRFeature(); OGRFeatureDefn *GetDefnRef() { return poDefn; } OGRErr SetGeometryDirectly( OGRGeometry * ); OGRErr SetGeometry( OGRGeometry * ); OGRGeometry *GetGeometryRef() { return poGeometry; } OGRGeometry *StealGeometry(); OGRFeature *Clone(); virtual OGRBoolean Equal( OGRFeature * poFeature ); int GetFieldCount() { return poDefn->GetFieldCount(); } OGRFieldDefn *GetFieldDefnRef( int iField ) { return poDefn->GetFieldDefn(iField); } int GetFieldIndex( const char * pszName) { return poDefn->GetFieldIndex(pszName);} int IsFieldSet( int iField ) const { return pauFields[iField].Set.nMarker1 != OGRUnsetMarker || pauFields[iField].Set.nMarker2 != OGRUnsetMarker; } void UnsetField( int iField ); OGRField *GetRawFieldRef( int i ) { return pauFields + i; } int GetFieldAsInteger( int i ); double GetFieldAsDouble( int i ); const char *GetFieldAsString( int i ); const int *GetFieldAsIntegerList( int i, int *pnCount ); const double *GetFieldAsDoubleList( int i, int *pnCount ); char **GetFieldAsStringList( int i ) const; GByte *GetFieldAsBinary( int i, int *pnCount ); int GetFieldA
评论
    相关推荐