📄 ogr_feature.h
字号:
* * 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 GetFieldAsDateTime( int i, int *pnYear, int *pnMonth, int *pnDay, int *pnHour, int *pnMinute, int *pnSecond, int *pnTZFlag ); int GetFieldAsInteger( const char *pszFName ) { return GetFieldAsInteger( GetFieldIndex(pszFName) ); } double GetFieldAsDouble( const char *pszFName ) { return GetFieldAsDouble( GetFieldIndex(pszFName) ); } const char *GetFieldAsString( const char *pszFName ) { return GetFieldAsString( GetFieldIndex(pszFName) ); } const int *GetFieldAsIntegerList( const char *pszFName, int *pnCount ) { return GetFieldAsIntegerList( GetFieldIndex(pszFName), pnCount ); } const double *GetFieldAsDoubleList( const char *pszFName, int *pnCount ) { return GetFieldAsDoubleList( GetFieldIndex(pszFName), pnCount ); } char **GetFieldAsStringList( const char *pszFName ) { return GetFieldAsStringList(GetFieldIndex(pszFName)); } void SetField( int i, int nValue ); void SetField( int i, double dfValue ); void SetField( int i, const char * pszValue ); void SetField( int i, int nCount, int * panValues ); void SetField( int i, int nCount, double * padfValues ); void SetField( int i, char ** papszValues ); void SetField( int i, OGRField * puValue ); void SetField( int i, int nCount, GByte * pabyBinary ); void SetField( int i, int nYear, int nMonth, int nDay, int nHour=0, int nMinute=0, int nSecond=0, int nTZFlag = 0 ); void SetField( const char *pszFName, int nValue ) { SetField( GetFieldIndex(pszFName), nValue ); } void SetField( const char *pszFName, double dfValue ) { SetField( GetFieldIndex(pszFName), dfValue ); } void SetField( const char *pszFName, const char * pszValue) { SetField( GetFieldIndex(pszFName), pszValue ); } void SetField( const char *pszFName, int nCount, int * panValues ) { SetField(GetFieldIndex(pszFName),nCount,panValues);} void SetField( const char *pszFName, int nCount, double * padfValues ) {SetField(GetFieldIndex(pszFName),nCount,padfValues);} void SetField( const char *pszFName, char ** papszValues ) { SetField( GetFieldIndex(pszFName), papszValues); } void SetField( const char *pszFName, OGRField * puValue ) { SetField( GetFieldIndex(pszFName), puValue ); } void SetField( const char *pszFName, int nYear, int nMonth, int nDay, int nHour=0, int nMinute=0, int nSecond=0, int nTZFlag = 0 ) { SetField( GetFieldIndex(pszFName), nYear, nMonth, nDay, nHour, nMinute, nSecond, nTZFlag ); } long GetFID() { return nFID; } virtual OGRErr SetFID( long nFID ); void DumpReadable( FILE * ); OGRErr SetFrom( OGRFeature *, int = TRUE); OGRErr RemapFields( OGRFeatureDefn *poNewDefn, int *panRemapSource ); virtual const char *GetStyleString(); virtual void SetStyleString( const char * ); virtual void SetStyleStringDirectly( char * ); virtual OGRStyleTable *GetStyleTable() { return m_poStyleTable; } virtual void SetStyleTable(OGRStyleTable *poStyleTable); virtual void SetStyleTableDirectly(OGRStyleTable *poStyleTable) { if ( m_poStyleTable ) delete m_poStyleTable; m_poStyleTable = poStyleTable; } static OGRFeature *CreateFeature( OGRFeatureDefn * ); static void DestroyFeature( OGRFeature * );};/************************************************************************//* OGRFeatureQuery *//************************************************************************/class OGRLayer;class CPL_DLL OGRFeatureQuery{ private: OGRFeatureDefn *poTargetDefn; void *pSWQExpr; char **FieldCollector( void *, char ** ); public: OGRFeatureQuery(); ~OGRFeatureQuery(); OGRErr Compile( OGRFeatureDefn *, const char * ); int Evaluate( OGRFeature * ); long *EvaluateAgainstIndices( OGRLayer *, OGRErr * ); char **GetUsedFields(); void *GetSWGExpr() { return pSWQExpr; }};#endif /* ndef _OGR_FEATURE_H_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -