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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mitab_tabfile.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
    {        CPLError(CE_Failure, CPLE_NotSupported,                 "SetFeature() can be used only with Write access.");        return -1;    }    if (nFeatureId != -1)    {        CPLError(CE_Failure, CPLE_NotSupported,                 "SetFeature(): random access not implemented yet.");        return -1;    }    /*-----------------------------------------------------------------     * Make sure file is opened and establish new feature id.     *----------------------------------------------------------------*/    if (m_poMAPFile == NULL)    {        CPLError(CE_Failure, CPLE_IllegalArg,                 "SetFeature() failed: file is not opened!");        return -1;    }    if (m_nLastFeatureId < 1)    {        /*-------------------------------------------------------------         * OK, this is the first feature in the dataset... make sure the         * .DAT schema has been initialized.         *------------------------------------------------------------*/        if (m_poDefn == NULL)            SetFeatureDefn(poFeature->GetDefnRef(), NULL);        /*-------------------------------------------------------------         * Special hack to write out at least one field if none are in          * OGRFeatureDefn.         *------------------------------------------------------------*/        if( m_poDATFile->GetNumFields() == 0 )        {            CPLError(CE_Warning, CPLE_IllegalArg,                     "MapInfo tables must contain at least 1 column, adding dummy FID column.");            m_poDATFile->AddField("FID", TABFInteger, 10, 0 );        }        nFeatureId = m_nLastFeatureId = 1;    }    else    {        nFeatureId = ++ m_nLastFeatureId;    }    /*-----------------------------------------------------------------     * Write fields to the .DAT file and update .IND if necessary     *----------------------------------------------------------------*/    if (m_poDATFile == NULL ||        m_poDATFile->GetRecordBlock(nFeatureId) == NULL ||        poFeature->WriteRecordToDATFile(m_poDATFile, m_poINDFile,                                        m_panIndexNo) != 0 )    {        CPLError(CE_Failure, CPLE_FileIO,                 "Failed writing attributes for feature id %d in %s",                 nFeatureId, m_pszFname);        return -1;    }    /*-----------------------------------------------------------------     * Write geometry to the .MAP file     * The call to PrepareNewObj() takes care of the .ID file.     *----------------------------------------------------------------*/    TABMAPObjHdr *poObjHdr =         TABMAPObjHdr::NewObj(poFeature->ValidateMapInfoType(m_poMAPFile),                             nFeatureId);    TABMAPObjectBlock *poObjBlock = NULL;        /*-----------------------------------------------------------------     * ValidateMapInfoType() may have returned TAB_GEOM_NONE if feature     * contained an invalid geometry for its class. Need to catch that     * case and return the error.     *----------------------------------------------------------------*/    if (poObjHdr->m_nType == TAB_GEOM_NONE &&        poFeature->GetFeatureClass() != TABFCNoGeomFeature )    {        CPLError(CE_Failure, CPLE_FileIO,                 "Invalid geometry for feature id %d in %s",                 nFeatureId, m_pszFname);        return -1;    }    if ( poObjHdr == NULL || m_poMAPFile == NULL ||        m_poMAPFile->PrepareNewObj(nFeatureId, poObjHdr->m_nType) != 0 ||         poFeature->WriteGeometryToMAPFile(m_poMAPFile, poObjHdr) != 0 )    {        CPLError(CE_Failure, CPLE_FileIO,                 "Failed writing geometry for feature id %d in %s",                 nFeatureId, m_pszFname);        return -1;    }    if (poObjHdr->m_nType == TAB_GEOM_NONE)    {        // NONE objects have no reference in the ObjectBlocks.  Just flush it.        delete poObjHdr;    }    else if ( (poObjBlock = m_poMAPFile->GetCurObjBlock()) == NULL ||              poObjBlock->AddObject(poObjHdr) != 0 )    {        CPLError(CE_Failure, CPLE_FileIO,                 "Failed writing object header for feature id %d in %s",                 nFeatureId, m_pszFname);        return -1;    }    return nFeatureId;}/********************************************************************** *                   TABFile::GetLayerDefn() * * Returns a reference to the OGRFeatureDefn that will be used to create * features in this dataset. * * Returns a reference to an object that is maintained by this TABFile * object (and thus should not be modified or freed by the caller) or * NULL if the OGRFeatureDefn has not been initialized yet (i.e. no file * opened yet) **********************************************************************/OGRFeatureDefn *TABFile::GetLayerDefn(){    return m_poDefn;}/********************************************************************** *                   TABFile::SetFeatureDefn() * * Pass a reference to the OGRFeatureDefn that will be used to create * features in this dataset.  This function should be called after * creating a new dataset, but before writing the first feature. * All features that will be written to this dataset must share this same * OGRFeatureDefn. * * A reference to the OGRFeatureDefn will be kept and will be used to * build the .DAT file, etc. * * Returns 0 on success, -1 on error. **********************************************************************/int TABFile::SetFeatureDefn(OGRFeatureDefn *poFeatureDefn,                         TABFieldType *paeMapInfoNativeFieldTypes /* =NULL */){    int           iField, numFields;    OGRFieldDefn *poFieldDefn;    TABFieldType eMapInfoType = TABFUnknown;    int nStatus = 0;    if (m_eAccessMode != TABWrite)    {        CPLError(CE_Failure, CPLE_NotSupported,                 "SetFeatureDefn() can be used only with Write access.");        return -1;    }    /*-----------------------------------------------------------------     * Keep a reference to the OGRFeatureDefn... we'll have to take the     * reference count into account when we are done with it.     *----------------------------------------------------------------*/    if (m_poDefn && m_poDefn->Dereference() == 0)        delete m_poDefn;    m_poDefn = poFeatureDefn;    m_poDefn->Reference();    /*-----------------------------------------------------------------     * Pass field information to the .DAT file, after making sure that     * it has been created and that it does not contain any field     * definition yet.     *----------------------------------------------------------------*/    if (m_poDATFile== NULL || m_poDATFile->GetNumFields() > 0 )    {        CPLError(CE_Failure, CPLE_AssertionFailed,                 "SetFeatureDefn() can be called only once in a newly "                 "created dataset.");        return -1;    }    numFields = poFeatureDefn->GetFieldCount();    for(iField=0; nStatus==0 && iField < numFields; iField++)    {        poFieldDefn = m_poDefn->GetFieldDefn(iField);        /*-------------------------------------------------------------         * Make sure field name is valid... check for special chars, etc.         *------------------------------------------------------------*/        char *pszCleanName = TABCleanFieldName(poFieldDefn->GetNameRef());        if (!EQUAL(pszCleanName, poFieldDefn->GetNameRef()))            poFieldDefn->SetName(pszCleanName);        CPLFree(pszCleanName);        pszCleanName = NULL;        if (paeMapInfoNativeFieldTypes)        {            eMapInfoType = paeMapInfoNativeFieldTypes[iField];        }        else        {            /*---------------------------------------------------------             * Map OGRFieldTypes to MapInfo native types             *--------------------------------------------------------*/            switch(poFieldDefn->GetType())            {              case OFTInteger:                eMapInfoType = TABFInteger;                break;              case OFTReal:                eMapInfoType = TABFFloat;                break;              case OFTString:              default:                eMapInfoType = TABFChar;            }        }        nStatus = m_poDATFile->AddField(poFieldDefn->GetNameRef(),                                            eMapInfoType,                                            poFieldDefn->GetWidth(),                                            poFieldDefn->GetPrecision());    }    /*-----------------------------------------------------------------     * Alloc the array to keep track of indexed fields (default=NOT indexed)     *----------------------------------------------------------------*/    m_panIndexNo = (int *)CPLCalloc(numFields, sizeof(int));    return nStatus;}/********************************************************************** *                   TABFile::AddFieldNative() * * Create a new field using a native mapinfo data type... this is an  * alternative to defining fields through the OGR interface. * This function should be called after creating a new dataset, but before  * writing the first feature. * * This function will build/update the OGRFeatureDefn that will have to be * used when writing features to this dataset. * * A reference to the OGRFeatureDefn can be obtained using GetLayerDefn(). * * Note: The bUnique flag has no effect on TABFiles.  See the TABView class. * * Returns 0 on success, -1 on error. **********************************************************************/int TABFile::AddFieldNative(const char *pszName, TABFieldType eMapInfoType,                            int nWidth /*=0*/, int nPrecision /*=0*/,                            GBool bIndexed /*=FALSE*/, GBool /*bUnique=FALSE*/){    OGRFieldDefn *poFieldDefn;    int nStatus = 0;    char *pszCleanName = NULL;    if (m_eAccessMode != TABWrite)    {        CPLError(CE_Failure, CPLE_NotSupported,                 "AddFieldNative() can be used only with Write access.");        return -1;    }    /*-----------------------------------------------------------------     * Check that call happens at the right time in dataset's life.     *----------------------------------------------------------------*/    if (m_eAccessMode != TABWrite ||         m_nLastFeatureId > 0 || m_poDATFile == NULL)    {        CPLError(CE_Failure, CPLE_AssertionFailed,                 "AddFieldNative() must be called after opening a new "                 "dataset, but before writing the first feature to it.");        return -1;    }    /*-----------------------------------------------------------------     * Create new OGRFeatureDefn if not done yet...     *----------------------------------------------------------------*/    if (m_poDefn== NULL)    {        char *pszFeatureClassName = TABGetBasename(m_pszFname);        m_poDefn = new OGRFeatureDefn(pszFeatureClassName);        CPLFree(pszFeatureClassName);        // Ref count defaults to 0... set it to 1        m_poDefn->Reference();    }    /*-----------------------------------------------------------------     * Validate field width... must be <= 254     *----------------------------------------------------------------*/    if (nWidth > 254)    {        CPLError(CE_Warning, CPLE_IllegalArg,                 "Invalid size (%d) for field '%s'.  "                 "Size must be 254 or less.", nWidth, pszName);        nWidth=254;    }    /*-----------------------------------------------------------------     * Map fields with width=0 (variable length in OGR) to a valid default     *----------------------------------------------------------------*/    if (eMapInfoType == TABFDecimal && nWidth == 0)        nWidth=20;    else if (nWidth == 0)        nWidth=254; /* char fields */    /*-----------------------------------------------------------------     * Make sure field name is valid... check for special chars, etc.     * (pszCleanName will have to be freed.)     *----------------------------------------------------------------*/    pszCleanName = TABCleanFieldName(pszName);    /*-----------------------------------------------------------------     * Map MapInfo native types to OGR types     *----------------------------------------------------------------*/    poFieldDefn = NULL;    switch(eMapInfoType)    {      case TABFChar:        /*-------------------------------------------------         * CHAR type         *------------------------------------------------*/        poFieldDefn = new OGRFieldDefn(pszCleanName, OFTString);        poFieldDefn->SetWidth(nWidth);        break;      case TABFInteger:        /*-------------------------------------------------         * INTEGER type         *------------------------------------------------*/        poFieldDefn = new OGRFieldDefn(pszCleanName, OFTInteger);        break;      case TABFSmallInt:        /*-------------------------------------------------         * SMALLINT type         *------------------------------------------------*/        poFieldDefn = new OGRFieldDefn(pszCleanName, OFTInteger);        break;      case TABFDecimal:        /*-------------------------------------------------         * DECIMAL type         *-------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一级二级在线| 久久只精品国产| 亚洲一区在线观看视频| 在线亚洲一区二区| 亚洲高清一区二区三区| 91精品在线免费| 经典三级一区二区| 国产精品蜜臀在线观看| 91老司机福利 在线| 三级欧美韩日大片在线看| 91精品国产综合久久久久| 精品亚洲国产成人av制服丝袜| 国产性色一区二区| 99精品国产热久久91蜜凸| 亚洲成人av福利| 精品久久99ma| 91视频在线看| 美女爽到高潮91| 国产精品福利电影一区二区三区四区| 91丝袜美女网| 美女视频黄 久久| 国产精品免费观看视频| 欧美三级欧美一级| 黄色成人免费在线| 一区二区三区免费观看| 欧美xxxxxxxx| 91精品福利视频| 精品一区二区三区久久久| 日韩毛片一二三区| 日韩精品中文字幕在线不卡尤物| 99久久99久久综合| 国内精品视频一区二区三区八戒| 亚洲欧美国产高清| 久久久久久久久岛国免费| 91久久香蕉国产日韩欧美9色| 麻豆国产精品官网| 亚洲一区在线电影| 欧美激情一区在线观看| 91精品国产乱码| 91社区在线播放| 精品一区二区久久久| 亚洲午夜三级在线| 国产精品理论在线观看| 欧美电影免费提供在线观看| 一本久久a久久精品亚洲| 狠狠色综合播放一区二区| 亚洲永久精品大片| 亚洲视频在线一区观看| 久久日一线二线三线suv| 欧美曰成人黄网| 91在线观看视频| 国产精品一级片在线观看| 午夜免费久久看| 亚洲综合免费观看高清完整版 | 亚洲成人三级小说| 一区在线观看视频| 久久久久久99精品| 日韩欧美激情一区| 在线成人小视频| 欧美少妇xxx| 91视频一区二区三区| 99久久精品国产一区| 国产成人免费在线观看| 精品一区二区三区视频| 久久国产婷婷国产香蕉| 免费成人性网站| 爽爽淫人综合网网站| 婷婷夜色潮精品综合在线| 亚洲尤物视频在线| 亚洲一区二区av电影| 国产精品美女久久久久高潮 | 精品av久久707| 日韩欧美一区二区不卡| 678五月天丁香亚洲综合网| 欧美色倩网站大全免费| 色综合久久中文综合久久97| av电影在线观看一区| 成人福利电影精品一区二区在线观看| 国产成人福利片| 丰满放荡岳乱妇91ww| 成人黄色电影在线| 91香蕉国产在线观看软件| 色视频成人在线观看免| 欧美丝袜丝交足nylons| 91精品国产综合久久精品app| 欧美久久一二三四区| 欧美一区二区观看视频| 欧美电影免费观看高清完整版| 91精品国产综合久久久久久久 | 91蝌蚪porny| 在线免费观看日本欧美| 欧美绝品在线观看成人午夜影视| 欧美日韩在线播放| 欧美一级午夜免费电影| 久久蜜桃av一区精品变态类天堂| 国产精品丝袜91| 有码一区二区三区| 日韩电影免费在线| 国产一区不卡在线| 成人黄色国产精品网站大全在线免费观看| gogo大胆日本视频一区| 欧美午夜精品一区| 日韩欧美视频在线| 国产精品你懂的| 亚洲成人av资源| 国产在线不卡一卡二卡三卡四卡| 99久久精品国产麻豆演员表| 欧美日韩在线一区二区| 精品国产污污免费网站入口 | 久久精品一区二区三区av| 成人欧美一区二区三区小说| 亚洲综合色噜噜狠狠| 国产一区二区中文字幕| 色综合一个色综合| 欧美一级一区二区| 中文字幕欧美一| 免费观看成人av| 波多野结衣中文一区| 欧美精品v日韩精品v韩国精品v| 久久久久亚洲蜜桃| 亚洲成人自拍网| 国产精品一二二区| 欧美日韩精品欧美日韩精品一| 久久久综合视频| 午夜一区二区三区在线观看| 国产激情视频一区二区在线观看| 欧美日韩一区高清| 国产精品美女久久久久高潮| 国产精选一区二区三区| 99re视频这里只有精品| 精品福利视频一区二区三区| 亚洲日本电影在线| 国产一区二区女| 欧美人与性动xxxx| 亚洲色图一区二区三区| 精品在线你懂的| 欧美日韩一本到| 亚洲欧洲中文日韩久久av乱码| 激情综合一区二区三区| 欧美午夜影院一区| 国产精品久久三| 国产精品系列在线播放| 欧美一二三区精品| 亚洲大片在线观看| 色噜噜偷拍精品综合在线| 国产目拍亚洲精品99久久精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 在线观看亚洲专区| 国产精品不卡一区| 丰满少妇在线播放bd日韩电影| 欧美xxxx在线观看| 蓝色福利精品导航| 91精品久久久久久久91蜜桃| 亚洲精品你懂的| 色婷婷一区二区| 国产精品第五页| 99re在线精品| 一区二区三区欧美| 色视频欧美一区二区三区| 成人免费一区二区三区在线观看| 国产乱码精品一区二区三区av| 欧美一区二区视频免费观看| 天堂av在线一区| 91精品国产色综合久久久蜜香臀| 亚洲图片欧美综合| 欧美日韩三级一区二区| 午夜欧美在线一二页| 欧美绝品在线观看成人午夜影视| 午夜欧美视频在线观看| 欧美人与z0zoxxxx视频| 日本怡春院一区二区| 精品日韩在线一区| 国产一区二区三区最好精华液 | 欧美激情一区在线观看| 成人中文字幕电影| 中文字幕一区二区5566日韩| 91香蕉国产在线观看软件| 亚洲一区二区在线观看视频| 欧美色涩在线第一页| 日本美女视频一区二区| 精品欧美乱码久久久久久1区2区| 精品一区二区三区久久久| 久久婷婷国产综合精品青草| 懂色av一区二区三区免费看| 中文字幕日本不卡| 欧美日韩一级片在线观看| 日韩成人一级大片| 国产性做久久久久久| 色综合咪咪久久| 日韩黄色片在线观看| 欧美大度的电影原声| 成+人+亚洲+综合天堂| 一区二区三区不卡视频在线观看| 欧美日韩mp4| 精品一二三四区| 亚洲精品美腿丝袜| 欧美不卡在线视频| 9久草视频在线视频精品| 亚洲chinese男男1069| 日韩精品一区二区三区视频|