FileGDB API for linux学习系列之五,获取对象的定义

0
分享 2015-12-13
FileGDB API for linux 提供了获取对象定义的函数,但是获取出来的结果都是以XML形式存在,对于表,FeatureClass,FeatureDataset等对象已经足够了,
以下的例子是获得各种对象定义的例子程序,包括Table, FeatureClass, FeatureDataset等等对象的定义。
#include
#include
#include <string>
#include
#include
#include
#include

#define EXT_FILEGDB_API _declspec(dllimport)
#pragma warning (disable : 4251)

#include "Geodatabase.h"
#include "GeodatabaseManagement.h"
#include "Table.h"
using namespace std;
using namespace FileGDBAPI;

Geodatabase geodatabase;
int main()
{

// Create a new geodatabase in the current directory.
long hr;

// Re-open the geodatabase.
if ((hr = OpenGeodatabase(L"../data/TestFileGDB.gdb", geodatabase)) != S_OK)
{
cout << "An error occurred while opening the geodatabase." << endl;
cout << "Error code: " << hr << endl;
return -1;
}
cout << "The geodatabase has been opened." << endl;

Table table;
if((hr = geodatabase.OpenTable(L"//TSType",table)) != S_OK)
{
cout << "An error occurred while open the table." << endl;
cout << "Error code: " << hr <return -1;
}

std::string tableDef;
if(S_OK == table.GetDefinition(tableDef))
{
cout << "the table TSType definition: " << tableDef << endl;
}
// Close the geodatabase before the delete.
if((hr = geodatabase.CloseTable(table)) != S_OK)
{
cout << "An error occurred while closing the table." << endl;
cout << "Error code: " << hr << endl;
return -1;
}
std::string featuredatasetDef;
if(S_OK == geodatabase.GetDatasetDefinition(L"//Drainage",L"Feature Dataset",featuredatasetDef))
{
cout << "the featuredataset Drainage definition is: " << featuredatasetDef << endl;
}

std::string featureclassDef;

if(S_OK == geodatabase.GetDatasetDefinition(L"//Basin_1",L"Feature Class",featureclassDef))
{
cout << "the featureclass Catchment definition is:" << featureclassDef << endl;
}

if ((hr = CloseGeodatabase(geodatabase)) != S_OK)
{
cout << "An error occurred while closing the geodatabase." << endl;
cout << "Error code: " << hr << endl;
return -1;
}
return 0;
}
运行结果如下:
The geodatabase has been opened.
the table TSType definition:

xml version="1.0" encoding="UTF-8"?>
<DataElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:esri="http://www.esri.com/schemas/ArcGIS/10.0" xsi:type="esri:DETable">
<CatalogPath>/TSType
CatalogPath> <Name>TSType
Name> <ChildrenExpanded>false
ChildrenExpanded> <DatasetType>esriDTTable
DatasetType> <DSID>18
DSID> <Versioned>false
Versioned> <CanVersion>false
CanVersion> <ConfigurationKeyword/> <HasOID>true
HasOID> <OIDFieldName>OBJECTID
OIDFieldName> <Fields xsi:type="esri:Fields"> <FieldArray xsi:type="esri:ArrayOfField"> <Field xsi:type="esri:Field"> <Name>OBJECTID
Name> <Type>esriFieldTypeOID
Type> <IsNullable>false
IsNullable> <Length>4
Length> <Precision>0
Precision> <Scale>0
Scale> <Required>true
Required> <Editable>false
Editable> <AliasName>OBJECTID
AliasName> <ModelName>OBJECTID
ModelName>
Field> <Field xsi:type="esri:Field"> <Name>TSTypeID
Name> <Type>esriFieldTypeInteger
Type> <IsNullable>true
IsNullable> <Length>4
Length> <Precision>0
Precision> <Scale>0
Scale> <AliasName>TSTypeID
AliasName> <ModelName>TSTypeID
ModelName>
Field> <Field xsi:type="esri:Field"> <Name>Variable
Name> <Type>esriFieldTypeString
Type> <IsNullable>true
IsNullable> <Length>255
Length> <Precision>0
Precision> <Scale>0
Scale> <AliasName>Variable
AliasName> <ModelName>Variable
ModelName>
Field> <Field xsi:type="esri:Field"> <Name>Units
Name> <Type>esriFieldTypeString
Type> <IsNullable>true
IsNullable> <Length>20
Length> <Precision>0
Precision> <Scale>0
Scale> <AliasName>Units
AliasName> <ModelName>Units
ModelName>
Field> <Field xsi:type="esri:Field"> <Name>IsRegular
Name> <Type>esriFieldTypeInteger
Type> <IsNullable>true
IsNullable> <Length>4
Length> <Precision>0
Precision> <Scale>0
Scale> <AliasName>IsRegular
AliasName> <ModelName>IsRegular
ModelName> <Domain> <DomainName>AHBoolean
DomainName> <FieldType>esriFieldTypeInteger
FieldType> <MergePolicy>esriMPTDefaultValue
MergePolicy> <SplitPolicy>esriSPTDefaultValue
SplitPolicy> <Description/> <Owner/> <CodedValues xsi:type="esri:ArrayOfCodedValue"> <CodedValue xsi:type="esri:CodedValue"> <Name>True
Name> <Code xsi:type="xs:int">1
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>False
Name> <Code xsi:type="xs:int">0
Code>
CodedValue>
CodedValues>
Domain>
Field> <Field xsi:type="esri:Field"> <Name>TSInterval
Name> <Type>esriFieldTypeInteger
Type> <IsNullable>true
IsNullable> <Length>4
Length> <Precision>0
Precision> <Scale>0
Scale> <AliasName>TSInterval
AliasName> <ModelName>TSInterval
ModelName> <Domain> <DomainName>TSIntervalType
DomainName> <FieldType>esriFieldTypeInteger
FieldType> <MergePolicy>esriMPTDefaultValue
MergePolicy> <SplitPolicy>esriSPTDefaultValue
SplitPolicy> <Description/> <Owner/> <CodedValues xsi:type="esri:ArrayOfCodedValue"> <CodedValue xsi:type="esri:CodedValue"> <Name>1Minute
Name> <Code xsi:type="xs:int">1
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>2Minute
Name> <Code xsi:type="xs:int">2
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>3Minute
Name> <Code xsi:type="xs:int">3
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>4Minute
Name> <Code xsi:type="xs:int">4
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>5Minute
Name> <Code xsi:type="xs:int">5
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>10Minute
Name> <Code xsi:type="xs:int">6
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>15Minute
Name> <Code xsi:type="xs:int">7
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>20Minute
Name> <Code xsi:type="xs:int">8
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>30Minute
Name> <Code xsi:type="xs:int">9
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>1Hour
Name> <Code xsi:type="xs:int">10
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>2Hour
Name> <Code xsi:type="xs:int">11
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>3Hour
Name> <Code xsi:type="xs:int">12
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>4Hour
Name> <Code xsi:type="xs:int">13
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>6Hour
Name> <Code xsi:type="xs:int">14
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>8Hour
Name> <Code xsi:type="xs:int">15
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>12Hour
Name> <Code xsi:type="xs:int">16
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>1Day
Name> <Code xsi:type="xs:int">17
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>1Week
Name> <Code xsi:type="xs:int">18
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>1Month
Name> <Code xsi:type="xs:int">19
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>1Year
Name> <Code xsi:type="xs:int">20
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>Other
Name> <Code xsi:type="xs:int">99
Code>
CodedValue>
CodedValues>
Domain>
Field> <Field xsi:type="esri:Field"> <Name>DataType
Name> <Type>esriFieldTypeInteger
Type> <IsNullable>true
IsNullable> <Length>4
Length> <Precision>0
Precision> <Scale>0
Scale> <AliasName>DataType
AliasName> <ModelName>DataType
ModelName> <Domain> <DomainName>TSDataType
DomainName> <FieldType>esriFieldTypeInteger
FieldType> <MergePolicy>esriMPTDefaultValue
MergePolicy> <SplitPolicy>esriSPTDefaultValue
SplitPolicy> <Description/> <Owner/> <CodedValues xsi:type="esri:ArrayOfCodedValue"> <CodedValue xsi:type="esri:CodedValue"> <Name>Instantaneous
Name> <Code xsi:type="xs:int">1
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>Cumulative
Name> <Code xsi:type="xs:int">2
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>Incremental
Name> <Code xsi:type="xs:int">3
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>Average
Name> <Code xsi:type="xs:int">4
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>Maximum
Name> <Code xsi:type="xs:int">5
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>Minimum
Name> <Code xsi:type="xs:int">6
Code>
CodedValue>
CodedValues>
Domain>
Field> <Field xsi:type="esri:Field"> <Name>Origin
Name> <Type>esriFieldTypeInteger
Type> <IsNullable>true
IsNullable> <Length>4
Length> <Precision>0
Precision> <Scale>0
Scale> <AliasName>Origin
AliasName> <ModelName>Origin
ModelName> <Domain> <DomainName>TSOrigins
DomainName> <FieldType>esriFieldTypeInteger
FieldType> <MergePolicy>esriMPTDefaultValue
MergePolicy> <SplitPolicy>esriSPTDefaultValue
SplitPolicy> <Description/> <Owner/> <CodedValues xsi:type="esri:ArrayOfCodedValue"> <CodedValue xsi:type="esri:CodedValue"> <Name>Recorded
Name> <Code xsi:type="xs:int">1
Code>
CodedValue> <CodedValue xsi:type="esri:CodedValue"> <Name>Generated
Name> <Code xsi:type="xs:int">2
Code>
CodedValue>
CodedValues>
Domain>
Field>
FieldArray>
Fields> <CLSID>{7A566981-C114-11D2-8A28-006097AFF44E}
CLSID> <EXTCLSID/> <RelationshipClassNames xsi:type="esri:Names"/> <AliasName/> <ModelName>TSType
ModelName> <HasGlobalID>false
HasGlobalID> <GlobalIDFieldName/> <RasterFieldName/> <ExtensionProperties xsi:type="esri:PropertySet"> <PropertyArray xsi:type="esri:ArrayOfPropertySetProperty"/>
ExtensionProperties> <ControllerMemberships xsi:type="esri:ArrayOfControllerMembership"/> <Indexes xsi:type="esri:Indexes"> <IndexArray xsi:type="esri:ArrayOfIndex"> <Index xsi:type="esri:Index"> <Name>FDO_OBJECTID
Name> <IsUnique>true
IsUnique> <IsAs

0 个评论

要回复文章请先登录注册