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

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

?? ogrcsvdatasource.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
字號:
/****************************************************************************** * $Id: ogrcsvdatasource.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  CSV Translator * Purpose:  Implements OGRCSVDataSource class * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 2004, Frank Warmerdam <warmerdam@pobox.com> * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************/#include "ogr_csv.h"#include "cpl_conv.h"#include "cpl_string.h"#include "cpl_csv.h"CPL_CVSID("$Id: ogrcsvdatasource.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                          OGRCSVDataSource()                          *//************************************************************************/OGRCSVDataSource::OGRCSVDataSource(){    papoLayers = NULL;    nLayers = 0;    pszName = NULL;    bUpdate = FALSE;}/************************************************************************//*                         ~OGRCSVDataSource()                          *//************************************************************************/OGRCSVDataSource::~OGRCSVDataSource(){    for( int i = 0; i < nLayers; i++ )        delete papoLayers[i];    CPLFree( papoLayers );    CPLFree( pszName );}/************************************************************************//*                           TestCapability()                           *//************************************************************************/int OGRCSVDataSource::TestCapability( const char * pszCap ){    if( EQUAL(pszCap,ODsCCreateLayer) )        return bUpdate;    else if( EQUAL(pszCap,ODsCDeleteLayer) )        return bUpdate;    else        return FALSE;}/************************************************************************//*                              GetLayer()                              *//************************************************************************/OGRLayer *OGRCSVDataSource::GetLayer( int iLayer ){    if( iLayer < 0 || iLayer >= nLayers )        return NULL;    else        return papoLayers[iLayer];}/************************************************************************//*                                Open()                                *//************************************************************************/int OGRCSVDataSource::Open( const char * pszFilename, int bUpdateIn,                            int bForceOpen ){    pszName = CPLStrdup( pszFilename );    bUpdate = bUpdateIn;/* -------------------------------------------------------------------- *//*      Determine what sort of object this is.                          *//* -------------------------------------------------------------------- */    VSIStatBufL sStatBuf;    if( VSIStatL( pszFilename, &sStatBuf ) != 0 )        return FALSE;/* -------------------------------------------------------------------- *//*      Is this a single CSV file?                                      *//* -------------------------------------------------------------------- */    if( VSI_ISREG(sStatBuf.st_mode)        && EQUAL(pszFilename+strlen(pszFilename)-4,".csv") )        return OpenTable( pszFilename );/* -------------------------------------------------------------------- *//*      Otherwise it has to be a directory.                             *//* -------------------------------------------------------------------- */    if( !VSI_ISDIR(sStatBuf.st_mode) )        return FALSE;/* -------------------------------------------------------------------- *//*      Scan through for entries ending in .csv.                        *//* -------------------------------------------------------------------- */    int nNotCSVCount = 0, i;    char **papszNames = CPLReadDir( pszFilename );    for( i = 0; papszNames != NULL && papszNames[i] != NULL; i++ )    {        CPLString oSubFilename =             CPLFormFilename( pszFilename, papszNames[i], NULL );        if( EQUAL(papszNames[i],".") || EQUAL(papszNames[i],"..") )            continue;        if( VSIStatL( oSubFilename, &sStatBuf ) != 0             || !VSI_ISREG(sStatBuf.st_mode)             || !EQUAL(CPLGetExtension(oSubFilename),"csv") )        {            nNotCSVCount++;            continue;        }        if( !OpenTable( oSubFilename ) )        {            CSLDestroy( papszNames );            nNotCSVCount++;            return FALSE;        }    }    CSLDestroy( papszNames );/* -------------------------------------------------------------------- *//*      We presume that this is indeed intended to be a CSV             *//*      datasource if over half the files were .csv files.              *//* -------------------------------------------------------------------- */    return bForceOpen || nNotCSVCount < nLayers;}/************************************************************************//*                              OpenTable()                             *//************************************************************************/int OGRCSVDataSource::OpenTable( const char * pszFilename ){/* -------------------------------------------------------------------- *//*      Open the file.                                                  *//* -------------------------------------------------------------------- */    FILE       * fp;    if( bUpdate )        fp = VSIFOpen( pszFilename, "rb+" );    else        fp = VSIFOpen( pszFilename, "rb" );    if( fp == NULL )    {        CPLError( CE_Warning, CPLE_OpenFailed,                   "Failed to open %s, %s.",                   pszFilename, VSIStrerror( errno ) );        return FALSE;    }/* -------------------------------------------------------------------- *//*      Read and parse a line.  Did we get multiple fields?             *//* -------------------------------------------------------------------- */    char **papszFields = CSVReadParseLine( fp );						    if( CSLCount(papszFields) < 2 )    {        VSIFClose( fp );        CSLDestroy( papszFields );        return FALSE;    }    VSIRewind( fp );    CSLDestroy( papszFields );/* -------------------------------------------------------------------- *//*      Create a layer.                                                 *//* -------------------------------------------------------------------- */    nLayers++;    papoLayers = (OGRCSVLayer **) CPLRealloc(papoLayers,                                              sizeof(void*) * nLayers);        papoLayers[nLayers-1] =         new OGRCSVLayer( CPLGetBasename(pszFilename), fp, pszFilename, FALSE, bUpdate );    return TRUE;}/************************************************************************//*                            CreateLayer()                             *//************************************************************************/OGRLayer *OGRCSVDataSource::CreateLayer( const char *pszLayerName,                                OGRSpatialReference *poSpatialRef,                               OGRwkbGeometryType eGType,                               char ** papszOptions  ){/* -------------------------------------------------------------------- *//*      Verify that the datasource is a directory.                      *//* -------------------------------------------------------------------- */    VSIStatBuf sStatBuf;    if( VSIStat( pszName, &sStatBuf ) != 0         || !VSI_ISDIR( sStatBuf.st_mode ) )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "Attempt to create csv layer (file) against a non-directory datasource." );        return NULL;    }/* -------------------------------------------------------------------- *//*      What filename would we use?                                     *//* -------------------------------------------------------------------- */    const char *pszFilename;    pszFilename = CPLFormFilename( pszName, pszLayerName, "csv" );/* -------------------------------------------------------------------- *//*      does this file already exist?                                   *//* -------------------------------------------------------------------- */        if( VSIStat( pszName, &sStatBuf ) != 0 )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "Attempt to create layer %s, but file %s already exists.",                  pszFilename );        return NULL;    }/* -------------------------------------------------------------------- *//*      Create the empty file.                                          *//* -------------------------------------------------------------------- */    FILE *fp;    fp = VSIFOpen( pszFilename, "w+b" );    if( fp == NULL )    {        CPLError( CE_Failure, CPLE_OpenFailed,                   "Failed to create %s:\n%s",                   pszFilename, VSIStrerror( errno ) );                                            return NULL;    }/* -------------------------------------------------------------------- *//*      Create a layer.                                                 *//* -------------------------------------------------------------------- */    nLayers++;    papoLayers = (OGRCSVLayer **) CPLRealloc(papoLayers,                                              sizeof(void*) * nLayers);        papoLayers[nLayers-1] = new OGRCSVLayer( pszLayerName, fp, pszFilename, TRUE, TRUE );/* -------------------------------------------------------------------- *//*      Was a partiuclar CRLF order requested?                          *//* -------------------------------------------------------------------- */    const char *pszCRLFFormat = CSLFetchNameValue( papszOptions, "LINEFORMAT");    int bUseCRLF;    if( pszCRLFFormat == NULL )    {#ifdef WIN32        bUseCRLF = TRUE;#else        bUseCRLF = FALSE;#endif    }    else if( EQUAL(pszCRLFFormat,"CRLF") )        bUseCRLF = TRUE;    else if( EQUAL(pszCRLFFormat,"LF") )        bUseCRLF = FALSE;    else    {        CPLError( CE_Warning, CPLE_AppDefined,                   "LINEFORMAT=%s not understood, use one of CRLF or LF.",                  pszCRLFFormat );#ifdef WIN32        bUseCRLF = TRUE;#else        bUseCRLF = FALSE;#endif    }        papoLayers[nLayers-1]->SetCRLF( bUseCRLF );    return papoLayers[nLayers-1];}/************************************************************************//*                            DeleteLayer()                             *//************************************************************************/OGRErr OGRCSVDataSource::DeleteLayer( int iLayer ){    char *pszFilename;    if( iLayer < 0 || iLayer >= nLayers )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "Layer %d not in legal range of 0 to %d.",                   iLayer, nLayers-1 );        return OGRERR_FAILURE;    }    pszFilename =         CPLStrdup(CPLFormFilename(pszName,papoLayers[iLayer]->GetLayerDefn()->GetName(),"csv"));    delete papoLayers[iLayer];    while( iLayer < nLayers - 1 )    {        papoLayers[iLayer] = papoLayers[iLayer+1];        iLayer++;    }    nLayers--;    VSIUnlink( pszFilename );    CPLFree( pszFilename );    return OGRERR_NONE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美激情插| 不卡免费追剧大全电视剧网站| 一本久久a久久免费精品不卡| 国产精品国产成人国产三级| av电影在线观看一区| 亚洲欧美中日韩| 欧美亚洲综合网| 免费观看30秒视频久久| 久久综合久久久久88| 成人综合日日夜夜| 亚洲成a人在线观看| 日韩一区二区电影在线| 国产精品小仙女| 亚洲综合在线视频| 精品国产免费人成在线观看| 国产成人免费视频精品含羞草妖精| 日本成人在线视频网站| 欧美另类变人与禽xxxxx| 美女mm1313爽爽久久久蜜臀| 欧美国产97人人爽人人喊| 91麻豆6部合集magnet| 蜜臀久久99精品久久久画质超高清| 精品粉嫩aⅴ一区二区三区四区| 波多野结衣中文一区| 偷拍一区二区三区四区| 国产欧美1区2区3区| 欧美午夜精品一区二区蜜桃| 国模冰冰炮一区二区| 一区二区高清在线| 久久蜜桃av一区二区天堂| 在线看不卡av| 国产黑丝在线一区二区三区| 亚洲成av人在线观看| 国产色产综合产在线视频| 欧美性受xxxx黑人xyx| 国产精品亚洲人在线观看| 一级做a爱片久久| 国产三级欧美三级日产三级99| 欧美视频精品在线观看| 丁香婷婷综合色啪| 久久国产婷婷国产香蕉| 亚洲一级在线观看| 中文字幕一区免费在线观看| 精品1区2区在线观看| 欧美探花视频资源| 一本到不卡免费一区二区| 国产黄色成人av| 老鸭窝一区二区久久精品| 亚洲制服欧美中文字幕中文字幕| 久久久精品国产免大香伊| 欧美一区二区三区免费在线看| 不卡视频在线观看| 国产伦精品一区二区三区免费迷 | 制服丝袜日韩国产| 91丨九色丨国产丨porny| 国产一区二区三区在线看麻豆| 亚洲福利一区二区| 亚洲欧美日韩小说| 亚洲欧洲av在线| 国产精品视频免费| 久久久精品综合| 久久一区二区视频| 欧美精品一区二区三区蜜桃视频 | a在线欧美一区| 国产精华液一区二区三区| 久久精品国产免费| 青青青爽久久午夜综合久久午夜 | 3d成人h动漫网站入口| 在线亚洲一区二区| 日本韩国欧美在线| 色婷婷亚洲综合| 日本韩国一区二区三区视频| 91首页免费视频| 91麻豆swag| 色久优优欧美色久优优| 日本高清成人免费播放| 蜜桃视频第一区免费观看| 精品国产污污免费网站入口| 日韩一区二区高清| 精品第一国产综合精品aⅴ| 欧美成人女星排行榜| 精品日韩av一区二区| 久久精品水蜜桃av综合天堂| 欧美韩国一区二区| 亚洲女爱视频在线| 一区二区视频在线| 亚洲h动漫在线| 日本视频一区二区| 紧缚捆绑精品一区二区| 国产成人免费在线视频| 波多野洁衣一区| 欧美日韩一级二级| 日韩片之四级片| 中文子幕无线码一区tr| 亚洲另类在线一区| 青青国产91久久久久久| 国产一区二区电影| 色一情一乱一乱一91av| 欧美精品久久久久久久久老牛影院| 91精品在线观看入口| 久久综合给合久久狠狠狠97色69| 91官网在线观看| 一区二区高清视频在线观看| 香蕉久久一区二区不卡无毒影院 | 国产女人水真多18毛片18精品视频 | 一区精品在线播放| 亚洲午夜在线视频| 久热成人在线视频| 99在线精品免费| 日韩一级二级三级精品视频| 国产日韩欧美麻豆| 天天色综合天天| 国产精品综合一区二区三区| 91亚洲精品久久久蜜桃网站| 欧美一级爆毛片| 中文字幕一区二区日韩精品绯色| 五月天丁香久久| 成人免费毛片app| 91精品福利在线一区二区三区 | 丁香六月综合激情| 7777精品伊人久久久大香线蕉完整版 | 高清不卡一二三区| 51午夜精品国产| 国产精品乱人伦中文| 欧美午夜片在线看| 91视频在线看| 久久伊人中文字幕| 亚洲成av人片www| 国产aⅴ综合色| 日韩精品中文字幕一区二区三区 | 亚州成人在线电影| 成人激情免费电影网址| 91精品国产综合久久久久久漫画| 国产精品拍天天在线| 男女视频一区二区| 欧美综合久久久| 中文av一区二区| 久久精品99国产精品日本| 欧美在线制服丝袜| 国产精品久久精品日日| 经典三级一区二区| 欧美日韩久久久一区| **网站欧美大片在线观看| 韩日欧美一区二区三区| 欧美精品免费视频| 亚洲夂夂婷婷色拍ww47| 成人动漫av在线| 国产色产综合产在线视频| 毛片av一区二区三区| 欧美日韩国产另类一区| 亚洲婷婷综合色高清在线| 国产一区二区福利视频| 日韩三级伦理片妻子的秘密按摩| 亚洲国产精品精华液网站| 99re热这里只有精品视频| 欧美国产精品一区二区三区| 激情文学综合插| 欧美一区二区三区四区高清| 亚洲影视在线播放| 欧美日韩精品久久久| 亚洲第一福利一区| 欧美人与禽zozo性伦| 亚洲综合男人的天堂| 色婷婷av一区| 午夜视黄欧洲亚洲| 777亚洲妇女| 首页国产欧美日韩丝袜| 欧美日韩精品系列| 日本视频一区二区| 精品免费国产二区三区 | 亚洲午夜免费电影| 欧美日韩中文一区| 天天影视色香欲综合网老头| 555www色欧美视频| 国产综合色在线| 久久精品一区二区三区av| 国产成人精品亚洲午夜麻豆| 国产精品色在线| 91麻豆福利精品推荐| 亚洲国产成人高清精品| 91麻豆精品国产91久久久久| 日本不卡不码高清免费观看| 日韩精品一区二区在线| 国产一区二区三区在线看麻豆| 久久久亚洲午夜电影| 99久久婷婷国产| 亚洲狠狠爱一区二区三区| 欧美精品日韩综合在线| 极品少妇xxxx精品少妇偷拍| 国产精品少妇自拍| 欧美日韩免费在线视频| 另类小说图片综合网| 亚洲国产高清在线| 在线精品视频一区二区三四| 免费日本视频一区| 国产精品欧美久久久久无广告 | 五月综合激情婷婷六月色窝| 欧美一级欧美三级在线观看| 国产综合色产在线精品| 伊人夜夜躁av伊人久久|