/********************************************************************** * IMapInfoFile::GetNextFeature() * * Standard OGR GetNextFeature implementation. This method is used * to retreive the next OGRFeature. **********************************************************************/ OGRFeature *IMapInfoFile::GetNextFeature() { OGRFeature *poFeatureRef; OGRGeometry *poGeom; int nFeatureId; while( (nFeatureId = GetNextFeatureId(m_nCurFeatureId)) != -1 ) { poFeatureRef = GetFeatureRef(nFeatureId); if (poFeatureRef == NULL) return NULL; else if( (m_poFilterGeom == NULL || ((poGeom = poFeatureRef->GetGeometryRef()) != NULL && FilterGeometry( poGeom ))) && (m_poAttrQuery == NULL || m_poAttrQuery->Evaluate( poFeatureRef )) ) { // Avoid cloning feature... return the copy owned by the class CPLAssert(poFeatureRef == m_poCurFeature); m_poCurFeature = NULL; return poFeatureRef; } } return NULL; }
/********************************************************************** * IMapInfoFile::GetNextFeature() * * Standard OGR GetNextFeature implementation. This method is used * to retrieve the next OGRFeature. **********************************************************************/ OGRFeature *IMapInfoFile::GetNextFeature() { GIntBig nFeatureId = 0; while( (nFeatureId = GetNextFeatureId(m_nCurFeatureId)) != -1 ) { OGRGeometry *poGeom = nullptr; OGRFeature *poFeatureRef = GetFeatureRef(nFeatureId); if (poFeatureRef == nullptr) return nullptr; else if( (m_poFilterGeom == nullptr || ((poGeom = poFeatureRef->GetGeometryRef()) != nullptr && FilterGeometry( poGeom ))) && (m_poAttrQuery == nullptr || m_poAttrQuery->Evaluate( poFeatureRef )) ) { // Avoid cloning feature... return the copy owned by the class CPLAssert(poFeatureRef == m_poCurFeature); m_poCurFeature = nullptr; if( poFeatureRef->GetGeometryRef() != nullptr ) poFeatureRef->GetGeometryRef()->assignSpatialReference(GetSpatialRef()); return poFeatureRef; } } return nullptr; }
/********************************************************************** * IMapInfoFile::GetNextFeature() * * Standard OGR GetNextFeature implementation. This methode is used * to retreive the next OGRFeature. **********************************************************************/ OGRFeature *IMapInfoFile::GetNextFeature() { OGRFeature *poFeatureRef; int nFeatureId; while( (nFeatureId = GetNextFeatureId(m_nCurFeatureId)) != -1 ) { poFeatureRef = GetFeatureRef(nFeatureId); if (poFeatureRef == NULL) return NULL; else if (m_poFilterGeom == NULL || m_poFilterGeom->Intersect( poFeatureRef->GetGeometryRef())) { // Avoid cloning feature... return the copy owned by the class CPLAssert(poFeatureRef == m_poCurFeature); m_poCurFeature = NULL; return poFeatureRef; } } return NULL; }