// Add additional Geometry table for Interlis 1 void AddGeomTable(CPLString layerName, const char* psFieldName, OGRwkbGeometryType eType, bool bRefTIDField = false) { OGRFeatureDefn* poGeomTableDefn = new OGRFeatureDefn(layerName); OGRFieldDefn fieldDef("_TID", OFTString); poGeomTableDefn->AddFieldDefn(&fieldDef); if (bRefTIDField) { OGRFieldDefn fieldDefRef("_RefTID", OFTString); poGeomTableDefn->AddFieldDefn(&fieldDefRef); } poGeomTableDefn->DeleteGeomFieldDefn(0); OGRGeomFieldDefn fieldDefGeom(psFieldName, eType); poGeomTableDefn->AddGeomFieldDefn(&fieldDefGeom); CPLDebug( "OGR_ILI", "Adding geometry table %s for field %s", poGeomTableDefn->GetName(), psFieldName); poGeomFieldInfos[psFieldName].geomTable = poGeomTableDefn; }
OGRFeatureDefn *OGRFeatureDefn::Clone() { int i; OGRFeatureDefn *poCopy; poCopy = new OGRFeatureDefn( GetName() ); GetFieldCount(); for( i = 0; i < nFieldCount; i++ ) poCopy->AddFieldDefn( GetFieldDefn( i ) ); /* There is a default geometry field created at OGRFeatureDefn instanciation */ poCopy->DeleteGeomFieldDefn(0); GetGeomFieldCount(); for( i = 0; i < nGeomFieldCount; i++ ) poCopy->AddGeomFieldDefn( GetGeomFieldDefn( i ) ); return poCopy; }
void InitFieldDefinitions() { // Delete default geometry field poTableDefn->DeleteGeomFieldDefn(0); const char* psKind = CPLGetXMLValue( node, "Kind", NULL ); //CPLDebug( "OGR_ILI", "InitFieldDefinitions of '%s' kind: %s", GetName(), psKind); if (EQUAL(psKind, "Structure")) { // add foreign_key field OGRFieldDefn ofieldDefn1("REF_NAME", OFTString); poTableDefn->AddFieldDefn(&ofieldDefn1); OGRFieldDefn ofieldDefn2("REF_ID", OFTString); poTableDefn->AddFieldDefn(&ofieldDefn2); } else { // Class // add TID field const char* psTidColName = (iliVersion == 1) ? "_TID" : "TID"; OGRFieldDefn ofieldDefn(psTidColName, OFTString); poTableDefn->AddFieldDefn(&ofieldDefn); } if (CSLTestBoolean(CPLGetXMLValue( node, "Abstract", "FALSE" ))) hasDerivedClasses = true; }