亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mitab_tabview.cpp

?? mitab,讀取MapInfo的地圖文件
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
    if (m_nMainTableIndex == -1)
    {
        CPLError(CE_Failure, CPLE_AppDefined,
             "GetExtent() can be called only after dataset has been opened.");
        return -1;
    }

    return m_papoTABFiles[m_nMainTableIndex]->GetExtent(psExtent, bForce);

}

/**********************************************************************
 *                   TABView::GetFeatureCountByType()
 *
 * Return number of features of each type.
 *
 * Note that the sum of the 4 returned values may be different from
 * the total number of features since features with NONE geometry
 * are not taken into account here.
 *
 * Note: the bForce flag has nmo effect on .TAB files since the info
 * is always in the header.
 *
 * Returns 0 on success, or silently returns -1 (with no error) if this
 * information is not available.
 **********************************************************************/
int TABView::GetFeatureCountByType(int &numPoints, int &numLines,
                                   int &numRegions, int &numTexts,
                                   GBool bForce /*= TRUE*/)
{
    if (m_nMainTableIndex == -1)
        return -1;

    return m_papoTABFiles[m_nMainTableIndex]->GetFeatureCountByType(numPoints,
                                                                    numLines,
                                                                    numRegions,
                                                                    numTexts,
                                                                    bForce);
}


/**********************************************************************
 *                   TABView::GetSpatialRef()
 *
 * Returns a reference to an OGRSpatialReference for this dataset.
 * If the projection parameters have not been parsed yet, then we will
 * parse them before returning.
 *
 * The returned object is owned and maintained by this TABFile and
 * should not be modified or freed by the caller.
 *
 * Returns NULL if the SpatialRef cannot be accessed.
 **********************************************************************/
OGRSpatialReference *TABView::GetSpatialRef()
{
    if (m_nMainTableIndex == -1)
    {
        CPLError(CE_Failure, CPLE_AssertionFailed,
                 "GetSpatialRef() failed: file has not been opened yet.");
        return NULL;
    }

    return m_papoTABFiles[m_nMainTableIndex]->GetSpatialRef();
}

/**********************************************************************
 *                   TABView::SetSpatialRef()
 **********************************************************************/
int TABView::SetSpatialRef(OGRSpatialReference *poSpatialRef)
{
    if (m_nMainTableIndex == -1)
    {
        CPLError(CE_Failure, CPLE_AssertionFailed,
                 "SetSpatialRef() failed: file has not been opened yet.");
        return -1;
    }

    return m_papoTABFiles[m_nMainTableIndex]->SetSpatialRef(poSpatialRef);
}



/**********************************************************************
 *                   TABView::SetBounds()
 **********************************************************************/
int TABView::SetBounds(double dXMin, double dYMin, 
                       double dXMax, double dYMax)
{
    if (m_nMainTableIndex == -1)
    {
        CPLError(CE_Failure, CPLE_AssertionFailed,
                 "SetBounds() failed: file has not been opened yet.");
        return -1;
    }

    return m_papoTABFiles[m_nMainTableIndex]->SetBounds(dXMin, dYMin,
                                                        dXMax, dYMax);
}

/************************************************************************/
/*                           TestCapability()                           */
/************************************************************************/

int TABView::TestCapability( const char * pszCap )

{
    if( EQUAL(pszCap,OLCRandomRead) )
        return TRUE;

    else if( EQUAL(pszCap,OLCSequentialWrite))
        return TRUE;

    else if( EQUAL(pszCap,OLCRandomWrite))
        return FALSE;

    else if( EQUAL(pszCap,OLCFastFeatureCount) )
        return m_poFilterGeom == NULL;

    else if( EQUAL(pszCap,OLCFastSpatialFilter) )
        return FALSE;

    else if( EQUAL(pszCap,OLCFastGetExtent) )
        return TRUE;

    else 
        return FALSE;
}






/**********************************************************************
 *                   TABView::Dump()
 *
 * Dump block contents... available only in DEBUG mode.
 **********************************************************************/
#ifdef DEBUG

void TABView::Dump(FILE *fpOut /*=NULL*/)
{
    if (fpOut == NULL)
        fpOut = stdout;

    fprintf(fpOut, "----- TABView::Dump() -----\n");

    if (m_numTABFiles > 0)
    {
        fprintf(fpOut, "File is not opened.\n");
    }
    else
    {
        fprintf(fpOut, "File is opened: %s\n", m_pszFname);
        fprintf(fpOut, "View contains %d tables\n", m_numTABFiles);

    }

    fflush(fpOut);
}

#endif // DEBUG



/*=====================================================================
 *                      class TABRelation
 *====================================================================*/


/**********************************************************************
 *                   TABRelation::TABRelation()
 *
 * Constructor.
 **********************************************************************/
TABRelation::TABRelation()
{
    m_poMainTable = NULL;
    m_pszMainFieldName = NULL;
    m_nMainFieldNo = -1;

    m_poRelTable = NULL;
    m_pszRelFieldName = NULL;
    m_nRelFieldNo = -1;
    m_nRelFieldIndexNo = -1;
    m_poRelINDFileRef = NULL;

    m_nUniqueRecordNo = 0;

    m_panMainTableFieldMap = NULL;
    m_panRelTableFieldMap = NULL;

    m_poDefn = NULL;
}

/**********************************************************************
 *                   TABRelation::~TABRelation()
 *
 * Destructor.
 **********************************************************************/
TABRelation::~TABRelation()
{
    ResetAllMembers();
}

/**********************************************************************
 *                   TABRelation::ResetAllMembers()
 *
 * Reset all class members.
 **********************************************************************/
void TABRelation::ResetAllMembers()
{
    m_poMainTable = NULL;
    CPLFree(m_pszMainFieldName);
    m_pszMainFieldName = NULL;
    m_nMainFieldNo = -1;

    m_poRelTable = NULL;
    CPLFree(m_pszRelFieldName);
    m_pszRelFieldName = NULL;
    m_nRelFieldNo = -1;
    m_nRelFieldIndexNo = -1;

    m_nUniqueRecordNo = 0;

    // No need to close m_poRelINDFileRef since we only got a ref. to it
    m_poRelINDFileRef = NULL;

    CPLFree(m_panMainTableFieldMap);
    m_panMainTableFieldMap = NULL;
    CPLFree(m_panRelTableFieldMap);
    m_panRelTableFieldMap = NULL;

    /*-----------------------------------------------------------------
     * Note: we have to check the reference count before deleting m_poDefn
     *----------------------------------------------------------------*/
    if (m_poDefn && m_poDefn->Dereference() == 0)
        delete m_poDefn;
    m_poDefn = NULL;

}

/**********************************************************************
 *                   TABRelation::Init()
 *
 * Set the details of the relation: the main and related tables, the fields
 * through which they will be connected, and the list of fields to select.
 * After this call, we are ready to read data records.
 *
 * For write access, Init() is called with pszMain/RelFieldName and
 * **papszSelectedFields passed as NULL.  They will have to be set through
 * other methods before a first feature can be written.
 *
 * A new OGRFeatureDefn is also built for the combined tables.
 *
 * Returns 0 on success, or -1 or error.
 **********************************************************************/
int  TABRelation::Init(const char *pszViewName,
                       TABFile *poMainTable, TABFile *poRelTable,
                       const char *pszMainFieldName,
                       const char *pszRelFieldName,
                       char **papszSelectedFields)
{
    if (poMainTable == NULL || poRelTable == NULL)
        return -1;

    // We'll need the feature Defn later...
    OGRFeatureDefn *poMainDefn, *poRelDefn;

    poMainDefn = poMainTable->GetLayerDefn();
    poRelDefn = poRelTable->GetLayerDefn();

    /*-----------------------------------------------------------------
     * Keep info for later use about source tables, etc.
     *----------------------------------------------------------------*/
    ResetAllMembers();

    m_poMainTable = poMainTable;
    if (pszMainFieldName)
    {
        m_pszMainFieldName = CPLStrdup(pszMainFieldName);
        m_nMainFieldNo = poMainDefn->GetFieldIndex(pszMainFieldName);
    }

    m_poRelTable = poRelTable;
    if (pszRelFieldName)
    {
        m_pszRelFieldName = CPLStrdup(pszRelFieldName);
        m_nRelFieldNo = poRelDefn->GetFieldIndex(pszRelFieldName);
        m_nRelFieldIndexNo = poRelTable->GetFieldIndexNumber(m_nRelFieldNo);
        m_poRelINDFileRef = poRelTable->GetINDFileRef();

        if (m_nRelFieldIndexNo >= 0 && m_poRelINDFileRef == NULL)
        {
            CPLError(CE_Failure, CPLE_FileIO,
                     "Field %s is indexed but the .IND file is missing.",
                     pszRelFieldName);
            return -1;
        }
    }

    /*-----------------------------------------------------------------
     * Init field maps.  For each field in each table, a -1 means that
     * the field is not selected, and a value >=0 is the index of the 
     * field in the view's FeatureDefn
     *----------------------------------------------------------------*/
    int i;
    int numFields1 = (poMainDefn?poMainDefn->GetFieldCount():0);
    int numFields2 = (poRelDefn?poRelDefn->GetFieldCount():0);

    m_panMainTableFieldMap = (int*)CPLMalloc((numFields1+1)*sizeof(int));
    for(i=0; i<numFields1; i++)
        m_panMainTableFieldMap[i] = -1;
    m_panRelTableFieldMap = (int*)CPLMalloc((numFields2+1)*sizeof(int));
    for(i=0; i<numFields2; i++)
        m_panRelTableFieldMap[i] = -1;

    /*-----------------------------------------------------------------
     * If selectedFields = "*" then select all fields from both tables
     *----------------------------------------------------------------*/
    if (CSLCount(papszSelectedFields) == 1 && 
        EQUAL(papszSelectedFields[0], "*") )
    {
        CSLDestroy(papszSelectedFields);
        papszSelectedFields = NULL;

        for(i=0; i<numFields1; i++)
        {
            OGRFieldDefn *poFieldDefn = poMainDefn->GetFieldDefn(i);

            papszSelectedFields = CSLAddString(papszSelectedFields, 
                                               poFieldDefn->GetNameRef());
        }

        for(i=0; i<numFields2; i++)
        {
            OGRFieldDefn *poFieldDefn = poRelDefn->GetFieldDefn(i);

            if (CSLFindString(papszSelectedFields, 
                              poFieldDefn->GetNameRef()) != -1)
                continue;  // Avoid duplicate field name in view

            papszSelectedFields = CSLAddString(papszSelectedFields, 
                                               poFieldDefn->GetNameRef());
        }

    }

    /*-----------------------------------------------------------------
     * Create new FeatureDefn and copy selected fields definitions
     * while updating the appropriate field maps.
     *----------------------------------------------------------------*/
    int nIndex, numSelFields = CSLCount(papszSelectedFields);
    OGRFieldDefn *poFieldDefn;

    m_poDefn = new OGRFeatureDefn(pszViewName);
    // Ref count defaults to 0... set it to 1
    m_poDefn->Reference();

    for(i=0; i<numSelFields ; i++)
    {
        if (poMainDefn &&
            (nIndex=poMainDefn->GetFieldIndex(papszSelectedFields[i])) >=0)
        {
            /* Field from the main table

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区三区四区| 国产精品美日韩| 欧美日韩色综合| 色94色欧美sute亚洲线路一ni | 韩国理伦片一区二区三区在线播放| 亚洲综合视频网| 一区二区三区成人在线视频| 136国产福利精品导航| 国产精品久久免费看| 国产精品久久久久影院色老大| 欧美高清在线一区二区| 亚洲国产精品av| 亚洲日本青草视频在线怡红院| 欧美国产精品v| 亚洲日韩欧美一区二区在线| 亚洲精品视频观看| 亚欧色一区w666天堂| 日韩在线a电影| 久热成人在线视频| 国产经典欧美精品| 成人动漫一区二区在线| 色偷偷一区二区三区| 在线亚洲一区二区| 欧美一区二区三区不卡| 久久这里只有精品视频网| 欧美高清在线视频| 一区二区三区欧美久久| 丝袜诱惑亚洲看片| 国产精品影视天天线| 成人精品小蝌蚪| 欧美日韩国产中文| 26uuu久久天堂性欧美| 国产精品你懂的| 亚洲成人av资源| 黄色日韩网站视频| 色综合天天综合网天天看片| 欧美日韩一区二区三区四区| 日韩欧美自拍偷拍| 国产精品国产三级国产普通话三级 | 成人久久18免费网站麻豆| 在线视频国内自拍亚洲视频| 欧美一卡二卡在线观看| 中文成人av在线| 午夜视频一区二区| 国产乱国产乱300精品| 91麻豆国产在线观看| 欧美一级片在线观看| 国产精品美女久久久久久2018| 午夜精品在线看| 欧美一级高清大全免费观看| 国产亚洲一区二区三区在线观看| 亚洲精品免费电影| 国内久久婷婷综合| 欧美午夜免费电影| 亚洲国产精品精华液2区45| 视频一区视频二区中文| 成人听书哪个软件好| 欧美丰满嫩嫩电影| 亚洲视频一区二区在线观看| 蜜臀久久99精品久久久画质超高清 | 色婷婷综合久久久中文一区二区| 日韩精品专区在线影院观看| 亚洲日本在线看| 国产成人在线视频网址| 欧美高清视频一二三区| 亚洲欧洲日韩一区二区三区| 美女视频黄a大片欧美| 一本色道久久综合精品竹菊| 久久久久久久久久久电影| 亚洲成人综合网站| 色综合天天天天做夜夜夜夜做| 久久久综合精品| 五月激情综合色| 91视频一区二区| 日本一区二区三区免费乱视频| 日韩高清国产一区在线| 欧美做爰猛烈大尺度电影无法无天| 亚洲国产精品精华液2区45| 久久精品国产一区二区三| 欧美羞羞免费网站| 日韩美女啊v在线免费观看| 国产福利精品导航| 久久综合丝袜日本网| 青青草伊人久久| 欧美日韩国产成人在线91| 一区二区三区在线高清| 99久久99久久综合| 亚洲国产成人自拍| 国产福利一区二区三区视频| 日韩视频免费观看高清在线视频| 亚洲国产wwwccc36天堂| 91视频免费播放| 中文字幕一区二区三| 成人午夜免费视频| 国产欧美一区二区精品秋霞影院| 久久99在线观看| 日韩欧美第一区| 激情欧美一区二区| 久久久久久免费毛片精品| 久久精品久久综合| 欧美不卡激情三级在线观看| 美日韩黄色大片| 欧美电影免费观看完整版| 久久电影网站中文字幕 | 日本女人一区二区三区| 欧美日韩极品在线观看一区| 亚洲成av人影院| 91精品国产欧美一区二区| 日韩 欧美一区二区三区| 欧美一区二区三区在线看| 美腿丝袜亚洲综合| 久久久蜜桃精品| 福利一区在线观看| 日韩伦理电影网| 欧美性猛交xxxx黑人交| 日韩中文字幕1| 精品成人在线观看| 国产69精品久久99不卡| 中文字幕亚洲电影| 欧美性高清videossexo| 日韩**一区毛片| 久久久三级国产网站| av中文字幕亚洲| 亚洲综合在线五月| 欧美一区二区日韩| 国产一区二区久久| 成人欧美一区二区三区白人 | **欧美大码日韩| 在线观看视频一区| 日本系列欧美系列| 久久精品夜色噜噜亚洲a∨| 丁香婷婷综合五月| 一区二区久久久久久| 欧美一区二区人人喊爽| 国产成人精品一区二区三区网站观看| √…a在线天堂一区| 欧美日韩高清在线播放| 国产一区二区三区在线看麻豆| 欧美国产精品一区| 欧美日本在线看| 国产乱子轮精品视频| 亚洲欧美日韩小说| 日韩欧美国产一区在线观看| 国产91丝袜在线播放| 亚洲一区成人在线| 久久男人中文字幕资源站| 91麻豆精东视频| 九九九久久久精品| 亚洲欧洲日韩av| 欧美精品一区二区在线观看| 色综合天天综合狠狠| 麻豆中文一区二区| 亚洲男同1069视频| 精品噜噜噜噜久久久久久久久试看| eeuss鲁片一区二区三区| 五月天欧美精品| 国产精品久久久久久户外露出 | 午夜精品久久一牛影视| 久久久蜜桃精品| 欧美区一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 依依成人综合视频| 国产情人综合久久777777| 欧美伦理影视网| 99精品一区二区| 极品少妇一区二区| 亚洲一区二区三区爽爽爽爽爽| 久久久久久久久久久久久夜| 欧美日韩日日摸| 99热精品国产| 狠狠狠色丁香婷婷综合激情| 亚洲成人中文在线| 综合网在线视频| 国产性做久久久久久| 欧美一区二区三区免费视频 | 国产精品沙发午睡系列990531| 欧美一区二区三区视频免费播放| 91丨porny丨国产| 国产毛片精品视频| 日韩av电影免费观看高清完整版| 亚洲欧美日韩国产另类专区| 久久久久久麻豆| 欧美精品一区二区蜜臀亚洲| 欧美高清精品3d| 欧洲一区在线观看| 91视频免费播放| 99久久综合色| 成人一区二区视频| 国产久卡久卡久卡久卡视频精品| 日韩精品一二区| 爽爽淫人综合网网站| 亚洲伦理在线精品| 最新国产成人在线观看| 国产人伦精品一区二区| 日韩精品一区二| 欧美变态口味重另类| 欧美va亚洲va在线观看蝴蝶网| 在线不卡免费欧美| 制服丝袜日韩国产| 欧美电影一区二区三区|