コード例 #1
0
ファイル: vfkdatablock.cpp プロジェクト: sylvainallard/gdal
/*!
  \brief Load geometry

  Print warning when some invalid features are detected.

  \return number of invalid features
  \return -1 on failure
*/
int IVFKDataBlock::LoadGeometry()
{
    int           nInvalid;
    clock_t       start, end;
    
    if (m_bGeometry)
        return 0;

    nInvalid    = 0;
    m_bGeometry = TRUE;
    start       = clock();

    if (m_nFeatureCount < 0) {
        m_poReader->ReadDataRecords(this);
    }

    if (EQUAL (m_pszName, "SOBR") ||
        EQUAL (m_pszName, "OBBP") ||
        EQUAL (m_pszName, "SPOL") ||
        EQUAL (m_pszName, "OB") ||
        EQUAL (m_pszName, "OP") ||
        EQUAL (m_pszName, "OBPEJ")) {
        /* -> wkbPoint */
        nInvalid = LoadGeometryPoint();
    }
    else if (EQUAL (m_pszName, "SBP")) {
        /* -> wkbLineString */
        nInvalid = LoadGeometryLineStringSBP();
    }
    else if (EQUAL (m_pszName, "HP") ||
             EQUAL (m_pszName, "DPM")) {
        /* -> wkbLineString */
        nInvalid = LoadGeometryLineStringHP();
    }
    else if (EQUAL (m_pszName, "PAR") ||
             EQUAL (m_pszName, "BUD")) {
        /* -> wkbPolygon */
        nInvalid = LoadGeometryPolygon();
    }
    
    end = clock();
    
    if (nInvalid > 0) {
        CPLError(CE_Warning, CPLE_AppDefined, 
                 "%s: %d invalid features detected.", m_pszName, nInvalid);
    }
    CPLDebug("OGR_VFK", "VFKDataBlock::LoadGeometry(): name=%s sec=%ld",
             m_pszName, (long)((end - start) / CLOCKS_PER_SEC));

    return nInvalid;
}
コード例 #2
0
ファイル: vfkfeature.cpp プロジェクト: samalone/gdal-ios
/*!
  \brief Load geometry

  \return TRUE on success or FALSE on failure
*/
bool IVFKFeature::LoadGeometry()
{
    const char *pszName;
    
    if (m_bGeometry)
        return TRUE;

    pszName  = m_poDataBlock->GetName();
    
    if (EQUAL (pszName, "SOBR") ||
        EQUAL (pszName, "OBBP") ||
        EQUAL (pszName, "SPOL") ||
        EQUAL (pszName, "OB") ||
        EQUAL (pszName, "OP") ||
        EQUAL (pszName, "OBPEJ")) {
        /* -> wkbPoint */
        
        return LoadGeometryPoint();
    }
    else if (EQUAL (pszName, "SBP")) {
        /* -> wkbLineString */
        return LoadGeometryLineStringSBP();
    }
    else if (EQUAL (pszName, "HP") ||
             EQUAL (pszName, "DPM")) {
        /* -> wkbLineString */
        return LoadGeometryLineStringHP();
    }
    else if (EQUAL (pszName, "PAR") ||
             EQUAL (pszName, "BUD")) {
        /* -> wkbPolygon */
        return LoadGeometryPolygon();
    }

    return FALSE;
}