OGRFeature *OGRILI1Layer::GetNextFeature() { if (!bGeomsJoined) JoinGeomLayers(); while(nFeatureIdx < nFeatures) { OGRFeature *poFeature = GetNextFeatureRef(); if (poFeature) return poFeature->Clone(); } return nullptr; }
OGRFeature *OGRILI1Layer::GetFeatureRef( long nFID ) { OGRFeature *poFeature; ResetReading(); while( (poFeature = GetNextFeatureRef()) != NULL ) { if( poFeature->GetFID() == nFID ) return poFeature; } return NULL; }
OGRFeature *OGRILI1Layer::GetFeatureRef( const char *fid ) { ResetReading(); OGRFeature *poFeature = nullptr; while( (poFeature = GetNextFeatureRef()) != nullptr ) { if( !strcmp( poFeature->GetFieldAsString(0), fid ) ) return poFeature; } return nullptr; }
OGRFeature *OGRILI1Layer::GetFeatureRef( GIntBig nFID ) { ResetReading(); OGRFeature *poFeature = nullptr; while( (poFeature = GetNextFeatureRef()) != nullptr ) { if( poFeature->GetFID() == nFID ) return poFeature; } return nullptr; }
OGRFeature *OGRILI1Layer::GetNextFeature() { OGRFeature *poFeature; if (poSurfacePolyLayer != 0) JoinSurfaceLayer(); if (poAreaLineLayer != 0) PolygonizeAreaLayer(); while(nFeatureIdx < nFeatures) { poFeature = GetNextFeatureRef(); if (poFeature) return poFeature->Clone(); } return NULL; }
void OGRILI1Layer::JoinSurfaceLayer() { if (poSurfacePolyLayer == 0) return; CPLDebug( "OGR_ILI", "Joining surface layer %s with geometries", GetLayerDefn()->GetName()); GetLayerDefn()->SetGeomType(poSurfacePolyLayer->GetLayerDefn()->GetGeomType()); ResetReading(); while (OGRFeature *feature = GetNextFeatureRef()) { OGRFeature *polyfeature = poSurfacePolyLayer->GetFeatureRef(feature->GetFID()); if (polyfeature) { feature->SetGeometry(polyfeature->GetGeometryRef()); } } ResetReading(); poSurfacePolyLayer = 0; }