int SDTSRawPoint::Read( SDTS_IREF * poIREF, DDFRecord * poRecord ) { /* ==================================================================== */ /* Loop over fields in this record, looking for those we */ /* recognise, and need. */ /* ==================================================================== */ for( int iField = 0; iField < poRecord->GetFieldCount(); iField++ ) { DDFField *poField = poRecord->GetField( iField ); CPLAssert( poField != NULL ); const char *pszFieldName = poField->GetFieldDefn()->GetName(); if( EQUAL(pszFieldName,"PNTS") ) oModId.Set( poField ); else if( EQUAL(pszFieldName,"ATID") ) ApplyATID( poField ); else if( EQUAL(pszFieldName,"ARID") ) { oAreaId.Set( poField ); } else if( EQUAL(pszFieldName,"SADR") ) { poIREF->GetSADR( poField, 1, &dfX, &dfY, &dfZ ); } } return TRUE; }
int SDTSRawPolygon::Read( DDFRecord * poRecord ) { /* ==================================================================== */ /* Loop over fields in this record, looking for those we */ /* recognise, and need. */ /* ==================================================================== */ for( int iField = 0; iField < poRecord->GetFieldCount(); iField++ ) { DDFField *poField = poRecord->GetField( iField ); const char *pszFieldName; CPLAssert( poField != NULL ); pszFieldName = poField->GetFieldDefn()->GetName(); if( EQUAL(pszFieldName,"POLY") ) { oModId.Set( poField ); } else if( EQUAL(pszFieldName,"ATID") ) { ApplyATID( poField ); } } return TRUE; }
int SDTSRawLine::Read( SDTS_IREF * poIREF, DDFRecord * poRecord ) { // E.Rouault: Not sure if this test is really useful if( poRecord->GetStringSubfield( "LINE", 0, "MODN", 0 ) == NULL ) return FALSE; /* ==================================================================== */ /* Loop over fields in this record, looking for those we */ /* recognise, and need. I don't use the getSubfield() */ /* interface on the record in order to retain some slight bit */ /* of efficiency. */ /* ==================================================================== */ for( int iField = 0; iField < poRecord->GetFieldCount(); iField++ ) { DDFField *poField = poRecord->GetField( iField ); const char *pszFieldName; CPLAssert( poField != NULL ); pszFieldName = poField->GetFieldDefn()->GetName(); if( EQUAL(pszFieldName,"LINE") ) oModId.Set( poField ); else if( EQUAL(pszFieldName,"ATID") ) ApplyATID( poField ); else if( EQUAL(pszFieldName,"PIDL") ) oLeftPoly.Set( poField ); else if( EQUAL(pszFieldName,"PIDR") ) oRightPoly.Set( poField ); else if( EQUAL(pszFieldName,"SNID") ) oStartNode.Set( poField ); else if( EQUAL(pszFieldName,"ENID") ) oEndNode.Set( poField ); else if( EQUAL(pszFieldName,"SADR") ) { nVertices = poIREF->GetSADRCount( poField ); padfX = reinterpret_cast<double *>( CPLRealloc( padfX, sizeof(double) * nVertices*3 ) ); padfY = padfX + nVertices; padfZ = padfX + 2*nVertices; poIREF->GetSADR( poField, nVertices, padfX, padfY, padfZ ); } } return TRUE; }