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

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

?? mitab_tabfile.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
    /*-----------------------------------------------------------------     * On Unix, make sure extension uses the right cases     * We do it even for write access because if a file with the same     * extension already exists we want to overwrite it.     *----------------------------------------------------------------*/    TABAdjustFilenameExtension(m_pszFname);#endif    /*-----------------------------------------------------------------     * Handle .TAB file... depends on access mode.     *----------------------------------------------------------------*/    if (m_eAccessMode == TABRead)    {        /*-------------------------------------------------------------         * Open .TAB file... since it's a small text file, we will just load         * it as a stringlist in memory.         *------------------------------------------------------------*/        m_papszTABFile = TAB_CSLLoad(m_pszFname);        if (m_papszTABFile == NULL)        {            if (!bTestOpenNoError)            {                CPLError(CE_Failure, CPLE_FileIO,                         "Failed opening %s.", m_pszFname);            }            CPLFree(m_pszFname);            m_pszFname = NULL;            CSLDestroy(m_papszTABFile);            m_papszTABFile = NULL;            CPLFree( pszTmpFname );            return -1;        }        /*-------------------------------------------------------------         * Do a first pass on the TAB header to establish the type of          * dataset we have (NATIVE, DBF, etc.)... and also to know if         * it is a supported type.         *------------------------------------------------------------*/        if ( ParseTABFileFirstPass(bTestOpenNoError) != 0 )        {            // No need to produce an error... it's already been done if             // necessary... just cleanup and exit.            CPLFree(m_pszFname);            m_pszFname = NULL;            CSLDestroy(m_papszTABFile);            m_papszTABFile = NULL;            CPLFree( pszTmpFname );            return -1;        }    }    else    {        /*-------------------------------------------------------------         * In Write access mode, the .TAB file will be written during the          * Close() call... we will just set some defaults here.         *------------------------------------------------------------*/        m_nVersion = 300;        m_pszCharset = CPLStrdup("Neutral");        m_eTableType = TABTableNative;        /*-------------------------------------------------------------         * Do initial setup of feature definition.         *------------------------------------------------------------*/        char *pszFeatureClassName = TABGetBasename(m_pszFname);        m_poDefn = new OGRFeatureDefn(pszFeatureClassName);        m_poDefn->Reference();        CPLFree(pszFeatureClassName);    }    /*-----------------------------------------------------------------     * Open .DAT file (or .DBF)     *----------------------------------------------------------------*/    if (nFnameLen > 4 && strcmp(pszTmpFname+nFnameLen-4, ".TAB")==0)    {        if (m_eTableType == TABTableDBF)            strcpy(pszTmpFname+nFnameLen-4, ".DBF");        else  // Default is NATIVE            strcpy(pszTmpFname+nFnameLen-4, ".DAT");    }    else     {        if (m_eTableType == TABTableDBF)            strcpy(pszTmpFname+nFnameLen-4, ".dbf");        else  // Default is NATIVE            strcpy(pszTmpFname+nFnameLen-4, ".dat");    }#ifndef _WIN32    TABAdjustFilenameExtension(pszTmpFname);#endif    m_poDATFile = new TABDATFile;       if ( m_poDATFile->Open(pszTmpFname, pszAccess, m_eTableType) != 0)    {        // Open Failed... an error has already been reported, just return.        CPLFree(pszTmpFname);        Close();        if (bTestOpenNoError)            CPLErrorReset();        return -1;    }    m_nLastFeatureId = m_poDATFile->GetNumRecords();    /*-----------------------------------------------------------------     * Parse .TAB file field defs and build FeatureDefn (only in read access)     *----------------------------------------------------------------*/    if (m_eAccessMode == TABRead && ParseTABFileFields() != 0)    {        // Failed... an error has already been reported, just return.        CPLFree(pszTmpFname);        Close();        if (bTestOpenNoError)            CPLErrorReset();        return -1;    }    /*-----------------------------------------------------------------     * Open .MAP (and .ID) file     * Note that the .MAP and .ID files are optional.  Failure to open them     * is not an error... it simply means that all features will be returned     * with NONE geometry.     *----------------------------------------------------------------*/    if (nFnameLen > 4 && strcmp(pszTmpFname+nFnameLen-4, ".DAT")==0)        strcpy(pszTmpFname+nFnameLen-4, ".MAP");    else         strcpy(pszTmpFname+nFnameLen-4, ".map");#ifndef _WIN32    TABAdjustFilenameExtension(pszTmpFname);#endif    m_poMAPFile = new TABMAPFile;    if (m_eAccessMode == TABRead)    {        /*-------------------------------------------------------------         * Read access: .MAP/.ID are optional... try to open but return         * no error if files do not exist.         *------------------------------------------------------------*/        if (m_poMAPFile->Open(pszTmpFname, pszAccess, TRUE) < 0)        {            // File exists, but Open Failed...             // we have to produce an error message            if (!bTestOpenNoError)                CPLError(CE_Failure, CPLE_FileIO,                          "Open() failed for %s", pszTmpFname);            else                CPLErrorReset();            CPLFree(pszTmpFname);            Close();            return -1;        }        /*-------------------------------------------------------------         * Set geometry type if the geometry objects are uniform.         *------------------------------------------------------------*/        int numPoints=0, numRegions=0, numTexts=0, numLines=0;        GetFeatureCountByType( numPoints, numLines, numRegions, numTexts);        numPoints += numTexts;        if( numPoints > 0 && numLines == 0 && numRegions == 0 )            m_poDefn->SetGeomType( wkbPoint );        else if( numPoints == 0 && numLines > 0 && numRegions == 0 )            m_poDefn->SetGeomType( wkbLineString );        else            /* we leave it unknown indicating a mixture */;    }    else if (m_poMAPFile->Open(pszTmpFname, pszAccess) != 0)    {        // Open Failed for write...         // an error has already been reported, just return.        CPLFree(pszTmpFname);        Close();        if (bTestOpenNoError)            CPLErrorReset();        return -1;    }    CPLFree(pszTmpFname);    pszTmpFname = NULL;    /*-----------------------------------------------------------------     * __TODO__ we could probably call GetSpatialRef() here to force     * parsing the projection information... this would allow us to      * assignSpatialReference() on the geometries that we return.     *----------------------------------------------------------------*/    return 0;}/********************************************************************** *                   TABFile::ParseTABFileFirstPass() * * Do a first pass in the TAB header file to establish the table type, etc. * and store any useful information into class members. * * This private method should be used only during the Open() call. * * Returns 0 on success, -1 on error. **********************************************************************/int TABFile::ParseTABFileFirstPass(GBool bTestOpenNoError){    int         iLine, numLines, numFields = 0;    char        **papszTok=NULL;    GBool       bInsideTableDef = FALSE, bFoundTableFields=FALSE;    if (m_eAccessMode != TABRead)    {        CPLError(CE_Failure, CPLE_NotSupported,                 "ParseTABFile() can be used only with Read access.");        return -1;    }    numLines = CSLCount(m_papszTABFile);    for(iLine=0; iLine<numLines; iLine++)    {        /*-------------------------------------------------------------         * Tokenize the next .TAB line, and check first keyword         *------------------------------------------------------------*/        CSLDestroy(papszTok);        papszTok = CSLTokenizeStringComplex(m_papszTABFile[iLine], " \t(),;",                                            TRUE, FALSE);        if (CSLCount(papszTok) < 2)            continue;   // All interesting lines have at least 2 tokens        if (EQUAL(papszTok[0], "!version"))        {            m_nVersion = atoi(papszTok[1]);            if (m_nVersion == 100)            {                /* Version 100 files contain only the fields definition,                 * so we set default values for the other params.                 */                bInsideTableDef = TRUE;                m_pszCharset = CPLStrdup("Neutral");                m_eTableType = TABTableNative;            }        }        else if (EQUAL(papszTok[0], "!edit_version"))        {            /* Sometimes, V450 files have version 300 + edit_version 450             * for us version and edit_version are the same              */            m_nVersion = atoi(papszTok[1]);        }        else if (EQUAL(papszTok[0], "!charset"))        {            m_pszCharset = CPLStrdup(papszTok[1]);        }        else if (EQUAL(papszTok[0], "Definition") &&                 EQUAL(papszTok[1], "Table") )        {            bInsideTableDef = TRUE;        }        else if (bInsideTableDef && !bFoundTableFields &&                 (EQUAL(papszTok[0], "Type") || EQUAL(papszTok[0],"FORMAT:")) )        {            if (EQUAL(papszTok[1], "NATIVE") || EQUAL(papszTok[1], "LINKED"))                m_eTableType = TABTableNative;            else if (EQUAL(papszTok[1], "DBF"))                m_eTableType = TABTableDBF;            else            {                // Type=ACCESS, or other unsupported type... cannot open!                if (!bTestOpenNoError)                    CPLError(CE_Failure, CPLE_NotSupported,                             "Unsupported table type '%s' in file %s.  "                      "This type of .TAB file cannot be read by this library.",                             papszTok[1], m_pszFname);                CSLDestroy(papszTok);                return -1;            }        }        else if (bInsideTableDef && !bFoundTableFields &&                 (EQUAL(papszTok[0],"Fields") || EQUAL(papszTok[0],"FIELDS:")))        {            /*---------------------------------------------------------             * We found the list of table fields             * Just remember number of fields... the field types will be             * parsed inside ParseTABFileFields() later...             *--------------------------------------------------------*/            bFoundTableFields = TRUE;            numFields = atoi(papszTok[1]);            if (numFields < 1 || numFields>2048 || iLine+numFields >= numLines)            {                if (!bTestOpenNoError)                    CPLError(CE_Failure, CPLE_FileIO,                         "Invalid number of fields (%s) at line %d in file %s",                             papszTok[1], iLine+1, m_pszFname);                CSLDestroy(papszTok);                return -1;            }            bInsideTableDef = FALSE;        }/* end of fields section*/        else        {            // Simply Ignore unrecognized lines        }    }    CSLDestroy(papszTok);    if (m_pszCharset == NULL)        m_pszCharset = CPLStrdup("Neutral");    if (numFields == 0)    {        if (!bTestOpenNoError)            CPLError(CE_Failure, CPLE_NotSupported,                     "%s contains no table field definition.  "                     "This type of .TAB file cannot be read by this library.",                     m_pszFname);        return -1;    }    return 0;}/********************************************************************** *                   TABFile::ParseTABFileFields() * * Extract the field definition from the TAB header file, validate * with what we have in the previously opened .DAT or .DBF file, and  * finally build the m_poDefn OGRFeatureDefn for this dataset. * * This private method should be used only during the Open() call and after * ParseTABFileFirstPass() has been called. * * Returns 0 on success, -1 on error. **********************************************************************/int TABFile::ParseTABFileFields(){

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产毛片精品一区| av一区二区不卡| 国产精品久久久久久久久免费丝袜| 91欧美一区二区| 久久国产精品99久久久久久老狼| 亚洲美女在线国产| 2024国产精品| 欧美亚洲综合另类| 粉嫩嫩av羞羞动漫久久久 | 久久蜜桃av一区精品变态类天堂| 在线免费亚洲电影| www.欧美精品一二区| 国产一区二区三区高清播放| 午夜精品123| 亚洲欧洲综合另类| 国产欧美视频在线观看| 日韩欧美高清一区| 欧美日韩一区二区三区免费看| 不卡视频在线观看| 国产精华液一区二区三区| 欧美aa在线视频| 午夜一区二区三区在线观看| 亚洲欧洲av色图| 欧美激情一区二区三区四区| 欧美一区二区黄色| 欧美精品xxxxbbbb| 91电影在线观看| 色综合激情五月| 色婷婷久久综合| 91视频在线看| 色综合久久天天| av午夜精品一区二区三区| 成人妖精视频yjsp地址| 丁香婷婷综合五月| 粉嫩久久99精品久久久久久夜| 国产精品1区二区.| 国产精品一区二区91| 狠狠色狠狠色合久久伊人| 九九精品一区二区| 老司机精品视频线观看86| 蜜臀va亚洲va欧美va天堂 | 久久久99精品免费观看不卡| 日韩欧美国产一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | www国产成人| 久久综合九色欧美综合狠狠| 2020国产精品| 日本一区二区三级电影在线观看| 国产性做久久久久久| 久久久777精品电影网影网| 国产日韩av一区| 国产精品天美传媒| 自拍偷拍亚洲欧美日韩| 亚洲精品免费在线| 五月婷婷欧美视频| 麻豆国产欧美日韩综合精品二区 | 99国产一区二区三精品乱码| av成人老司机| 欧美性生活久久| 欧美精品123区| 2021国产精品久久精品| 国产片一区二区| 一区二区三区四区不卡视频| 亚洲一二三专区| 日韩和的一区二区| 国产一区激情在线| 国产99久久久国产精品| 99re这里只有精品视频首页| 91蜜桃婷婷狠狠久久综合9色| 一本色道**综合亚洲精品蜜桃冫| 91麻豆国产精品久久| 欧美丰满美乳xxx高潮www| 欧美精品一区二区精品网| 国产精品成人网| 天天做天天摸天天爽国产一区| 久久超碰97中文字幕| 风间由美中文字幕在线看视频国产欧美| 91丝袜国产在线播放| 欧美日产在线观看| 欧美国产一区视频在线观看| 亚洲影视在线观看| 精品亚洲成a人| 色一区在线观看| 日韩欧美一区在线| 日韩毛片视频在线看| 日韩高清国产一区在线| 国产91丝袜在线播放九色| 欧美四级电影在线观看| 久久婷婷色综合| 亚洲一区二区三区四区不卡| 国产一区二区按摩在线观看| 欧洲精品一区二区三区在线观看| 精品电影一区二区三区| 一区二区三区加勒比av| 精品一区二区精品| 欧美少妇一区二区| 中文字幕av不卡| 精品一区二区综合| 欧洲视频一区二区| 欧美激情一区二区在线| 蜜桃在线一区二区三区| 日本电影欧美片| 久久精品视频免费观看| 亚洲1区2区3区视频| 99久久国产免费看| 久久久午夜精品| 日韩精品一二区| 色哟哟一区二区在线观看| 久久久蜜桃精品| 日一区二区三区| 色素色在线综合| 国产精品污www在线观看| 精品一区二区在线看| 欧美色国产精品| 亚洲人成网站精品片在线观看| 国产一区二区视频在线| 日韩视频在线观看一区二区| 亚洲一区在线看| 日本精品免费观看高清观看| 国产精品高潮久久久久无| 国产成a人亚洲精| wwwwxxxxx欧美| 国产在线精品不卡| 日韩精品一区二区三区蜜臀 | 水野朝阳av一区二区三区| 91欧美激情一区二区三区成人| 中文字幕成人在线观看| 国产91精品在线观看| 久久亚洲二区三区| 国产精品综合一区二区三区| 日韩欧美成人午夜| 蜜臀a∨国产成人精品| 日韩午夜精品电影| 久久精品99国产精品| 精品奇米国产一区二区三区| 麻豆91在线观看| 精品噜噜噜噜久久久久久久久试看| 日韩黄色片在线观看| 欧美一区二区播放| 久久国产欧美日韩精品| 精品三级在线看| 国产成人精品三级| 国产精品毛片久久久久久久| 99精品久久99久久久久| 亚洲精品成a人| 欧美性一级生活| 蜜臀99久久精品久久久久久软件| 日韩免费视频一区| 国产在线观看免费一区| 国产欧美精品一区| 成人v精品蜜桃久久一区| 亚洲欧美日韩久久| 欧美日韩性生活| 精品在线视频一区| 国产精品久久夜| 在线免费观看视频一区| 日韩电影在线观看电影| 久久综合一区二区| 成人一区在线观看| 亚洲最大的成人av| 91麻豆精品国产综合久久久久久| 久久福利资源站| 亚洲欧洲av一区二区三区久久| 欧美日韩午夜在线| 国产一区二区伦理片| 亚洲欧美另类久久久精品| 欧美日韩www| 韩国av一区二区三区| 国产日韩欧美在线一区| 色综合网色综合| 久久精品久久精品| 国产精品久久久久久久裸模| 欧美午夜精品电影| 蜜桃精品在线观看| 一区在线观看免费| 91精品国产91热久久久做人人| 国产 欧美在线| 亚洲一区在线观看免费观看电影高清| 欧美一区二区精美| 91视频你懂的| 极品销魂美女一区二区三区| 国产精品婷婷午夜在线观看| 欧美精品乱人伦久久久久久| 国产精品白丝jk白祙喷水网站| 樱桃国产成人精品视频| 精品成a人在线观看| 在线观看网站黄不卡| 国产原创一区二区| 性感美女极品91精品| 日本一区二区在线不卡| 欧美日韩mp4| 99久久久精品| 国产在线麻豆精品观看| 亚洲成a人v欧美综合天堂下载| 欧美激情一区二区在线| 日韩欧美你懂的| 欧美日韩性生活| 日本精品视频一区二区三区| 丁香激情综合五月| 青青草国产精品97视觉盛宴|