GDAL
|
Definition of a feature class or feature layer. More...
#include <ogr_feature.h>
Public Member Functions | |
OGRFeatureDefn (const char *pszName=nullptr) | |
Constructor. More... | |
void | SetName (const char *pszName) |
Change name of this OGRFeatureDefn. More... | |
virtual const char * | GetName () const |
Get name of this OGRFeatureDefn. More... | |
virtual int | GetFieldCount () const |
Fetch number of fields on this feature. More... | |
virtual OGRFieldDefn * | GetFieldDefn (int i) |
Fetch field definition. More... | |
virtual const OGRFieldDefn * | GetFieldDefn (int i) const |
Fetch field definition. More... | |
virtual int | GetFieldIndex (const char *) const |
Find field by name. More... | |
int | GetFieldIndexCaseSensitive (const char *) const |
Find field by name, in a case sensitive way. More... | |
virtual void | AddFieldDefn (OGRFieldDefn *) |
Add a new field definition. More... | |
virtual OGRErr | DeleteFieldDefn (int iField) |
Delete an existing field definition. More... | |
virtual OGRErr | ReorderFieldDefns (int *panMap) |
Reorder the field definitions in the array of the feature definition. More... | |
virtual int | GetGeomFieldCount () const |
Fetch number of geometry fields on this feature. More... | |
virtual OGRGeomFieldDefn * | GetGeomFieldDefn (int i) |
Fetch geometry field definition. More... | |
virtual const OGRGeomFieldDefn * | GetGeomFieldDefn (int i) const |
Fetch geometry field definition. More... | |
virtual int | GetGeomFieldIndex (const char *) const |
Find geometry field by name. More... | |
virtual void | AddGeomFieldDefn (OGRGeomFieldDefn *, int bCopy=TRUE) |
Add a new geometry field definition. More... | |
virtual OGRErr | DeleteGeomFieldDefn (int iGeomField) |
Delete an existing geometry field definition. More... | |
virtual OGRwkbGeometryType | GetGeomType () const |
Fetch the geometry base type. More... | |
virtual void | SetGeomType (OGRwkbGeometryType) |
Assign the base geometry type for this layer. More... | |
virtual OGRFeatureDefn * | Clone () const |
Create a copy of this feature definition. More... | |
int | Reference () |
Increments the reference count by one. More... | |
int | Dereference () |
Decrements the reference count by one. More... | |
int | GetReferenceCount () const |
Fetch current reference count. More... | |
void | Release () |
Drop a reference to this object, and destroy if no longer referenced. | |
virtual int | IsGeometryIgnored () const |
Determine whether the geometry can be omitted when fetching features. More... | |
virtual void | SetGeometryIgnored (int bIgnore) |
Set whether the geometry can be omitted when fetching features. More... | |
virtual int | IsStyleIgnored () const |
Determine whether the style can be omitted when fetching features. More... | |
virtual void | SetStyleIgnored (int bIgnore) |
Set whether the style can be omitted when fetching features. More... | |
virtual int | IsSame (const OGRFeatureDefn *poOtherFeatureDefn) const |
Test if the feature definition is identical to the other one. More... | |
std::vector< int > | ComputeMapForSetFrom (const OGRFeatureDefn *poSrcFDefn, bool bForgiving=true) const |
Compute the map from source to target field that can be passed to SetFrom(). More... | |
Static Public Member Functions | |
static OGRFeatureDefn * | CreateFeatureDefn (const char *pszName=nullptr) |
Create a new feature definition object. More... | |
static void | DestroyFeatureDefn (OGRFeatureDefn *) |
Destroy a feature definition. More... | |
static OGRFeatureDefnH | ToHandle (OGRFeatureDefn *poFeatureDefn) |
Convert a OGRFeatureDefn* to a OGRFeatureDefnH. More... | |
static OGRFeatureDefn * | FromHandle (OGRFeatureDefnH hFeatureDefn) |
Convert a OGRFeatureDefnH to a OGRFeatureDefn*. More... | |
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 and potentially other metadata.
It is essentially a collection of field descriptions (OGRFieldDefn class). Starting with GDAL 1.11, in addition to attribute fields, it can also contain multiple geometry fields (OGRGeomFieldDefn class).
It is reasonable for different translators to derive classes from OGRFeatureDefn with additional translator specific information.
|
explicit |
Constructor.
The OGRFeatureDefn maintains a reference count, but this starts at zero. It is mainly intended to represent a count of OGRFeature's based on this definition.
This method is the same as the C function OGR_FD_Create().
pszName | the name to be assigned to this layer/class. It does not need to be unique. |
|
virtual |
Add a new field definition.
To add a new field definition to a layer definition, do not use this function directly, but use OGRLayer::CreateField() instead.
This method should only be called while there are no OGRFeature objects in existence based on this OGRFeatureDefn. The OGRFieldDefn passed in is copied, and remains the responsibility of the caller.
This method is the same as the C function OGR_FD_AddFieldDefn().
poNewDefn | the definition of the new field. |
|
virtual |
Add a new geometry field definition.
To add a new geometry field definition to a layer definition, do not use this function directly, but use OGRLayer::CreateGeomField() instead.
This method does an internal copy of the passed geometry field definition, unless bCopy is set to FALSE (in which case it takes ownership of the field definition.
This method should only be called while there are no OGRFeature objects in existence based on this OGRFeatureDefn. The OGRGeomFieldDefn passed in is copied, and remains the responsibility of the caller.
This method is the same as the C function OGR_FD_AddGeomFieldDefn().
poNewDefn | the definition of the new geometry field. |
bCopy | whether poNewDefn should be copied. |
|
virtual |
Create a copy of this feature definition.
Creates a deep copy of the feature definition.
std::vector< int > OGRFeatureDefn::ComputeMapForSetFrom | ( | const OGRFeatureDefn * | poSrcFDefn, |
bool | bForgiving = true |
||
) | const |
Compute the map from source to target field that can be passed to SetFrom().
poSrcFDefn | the feature definition of source features later passed to SetFrom() |
bForgiving | true if the operation should continue despite lacking output fields matching some of the source fields. |
|
static |
Create a new feature definition object.
pszName | name |
|
virtual |
Delete an existing field definition.
To delete an existing field definition from a layer definition, do not use this function directly, but use OGRLayer::DeleteField() instead.
This method should only be called while there are no OGRFeature objects in existence based on this OGRFeatureDefn.
This method is the same as the C function OGR_FD_DeleteFieldDefn().
iField | the index of the field definition. |
|
virtual |
Delete an existing geometry field definition.
To delete an existing field definition from a layer definition, do not use this function directly, but use OGRLayer::DeleteGeomField() instead.
This method should only be called while there are no OGRFeature objects in existence based on this OGRFeatureDefn.
This method is the same as the C function OGR_FD_DeleteGeomFieldDefn().
iGeomField | the index of the geometry field definition. |
|
inline |
Decrements the reference count by one.
This method is the same as the C function OGR_FD_Dereference().
|
static |
Destroy a feature definition.
poDefn | feature definition. |
|
inlinestatic |
Convert a OGRFeatureDefnH to a OGRFeatureDefn*.
|
virtual |
Fetch number of fields on this feature.
This method is the same as the C function OGR_FD_GetFieldCount().
|
virtual |
Fetch field definition.
This method is the same as the C function OGR_FD_GetFieldDefn().
iField | the field to fetch, between 0 and GetFieldCount() - 1. |
|
virtual |
Fetch field definition.
This method is the same as the C function OGR_FD_GetFieldDefn().
iField | the field to fetch, between 0 and GetFieldCount() - 1. |
|
virtual |
Find field by name.
The field index of the first field matching the passed field name (case insensitively) is returned.
This method is the same as the C function OGR_FD_GetFieldIndex().
pszFieldName | the field name to search for. |
int OGRFeatureDefn::GetFieldIndexCaseSensitive | ( | const char * | pszFieldName | ) | const |
Find field by name, in a case sensitive way.
The field index of the first field matching the passed field name is returned.
pszFieldName | the field name to search for. |
|
virtual |
Fetch number of geometry fields on this feature.
This method is the same as the C function OGR_FD_GetGeomFieldCount().
|
virtual |
Fetch geometry field definition.
This method is the same as the C function OGR_FD_GetGeomFieldDefn().
iGeomField | the geometry field to fetch, between 0 and GetGeomFieldCount() - 1. |
|
virtual |
Fetch geometry field definition.
This method is the same as the C function OGR_FD_GetGeomFieldDefn().
iGeomField | the geometry field to fetch, between 0 and GetGeomFieldCount() - 1. |
|
virtual |
Find geometry field by name.
The geometry field index of the first geometry field matching the passed field name (case insensitively) is returned.
This method is the same as the C function OGR_FD_GetGeomFieldIndex().
pszGeomFieldName | the geometry field name to search for. |
|
virtual |
Fetch the geometry base type.
Note that some drivers are unable to determine a specific geometry type for a layer, in which case wkbUnknown is returned. A value of wkbNone indicates no geometry is available for the layer at all. Many drivers do not properly mark the geometry type as 25D even if some or all geometries are in fact 25D. A few (broken) drivers return wkbPolygon for layers that also include wkbMultiPolygon.
Starting with GDAL 1.11, this method returns GetGeomFieldDefn(0)->GetType().
This method is the same as the C function OGR_FD_GetGeomType().
|
virtual |
Get name of this OGRFeatureDefn.
This method is the same as the C function OGR_FD_GetName().
|
inline |
Fetch current reference count.
This method is the same as the C function OGR_FD_GetReferenceCount().
|
virtual |
Determine whether the geometry can be omitted when fetching features.
This method is the same as the C function OGR_FD_IsGeometryIgnored().
Starting with GDAL 1.11, this method returns GetGeomFieldDefn(0)->IsIgnored().
|
virtual |
Test if the feature definition is identical to the other one.
poOtherFeatureDefn | the other feature definition to compare to. |
|
inlinevirtual |
Determine whether the style can be omitted when fetching features.
This method is the same as the C function OGR_FD_IsStyleIgnored().
|
inline |
Increments the reference count by one.
The reference count is used keep track of the number of OGRFeature objects referencing this definition.
This method is the same as the C function OGR_FD_Reference().
|
virtual |
Reorder the field definitions in the array of the feature definition.
To reorder the field definitions in a layer definition, do not use this function directly, but use OGR_L_ReorderFields() instead.
This method should only be called while there are no OGRFeature objects in existence based on this OGRFeatureDefn.
This method is the same as the C function OGR_FD_ReorderFieldDefns().
panMap | an array of GetFieldCount() elements which is a permutation of [0, GetFieldCount()-1]. panMap is such that, for each field definition at position i after reordering, its position before reordering was panMap[i]. |
|
virtual |
Set whether the geometry can be omitted when fetching features.
This method is the same as the C function OGR_FD_SetGeometryIgnored().
Starting with GDAL 1.11, this method calls GetGeomFieldDefn(0)->SetIgnored().
bIgnore | ignore state |
|
virtual |
Assign the base geometry type for this layer.
All geometry objects using this type must be of the defined type or a derived type. The default upon creation is wkbUnknown which allows for any geometry type. The geometry type should generally not be changed after any OGRFeatures have been created against this definition.
This method is the same as the C function OGR_FD_SetGeomType().
Starting with GDAL 1.11, this method calls GetGeomFieldDefn(0)->SetType().
eNewType | the new type to assign. |
void OGRFeatureDefn::SetName | ( | const char * | pszName | ) |
|
inlinevirtual |
Set whether the style can be omitted when fetching features.
This method is the same as the C function OGR_FD_SetStyleIgnored().
bIgnore | ignore state |
|
inlinestatic |
Convert a OGRFeatureDefn* to a OGRFeatureDefnH.