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

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

?? ogridbdatasource.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
字號:
/****************************************************************************** * $Id: ogridbdatasource.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  OpenGIS Simple Features Reference Implementation * Purpose:  Implements OGRIDBDataSource class *           (based on ODBC and PG drivers). * Author:   Oleg Semykin, oleg.semykin@gmail.com * ****************************************************************************** * Copyright (c) 2006, Oleg Semykin * * 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_idb.h"#include "cpl_conv.h"#include "cpl_string.h"CPL_CVSID("$Id: ogridbdatasource.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                         OGRIDBDataSource()                          *//************************************************************************/OGRIDBDataSource::OGRIDBDataSource(){    pszName = NULL;    papoLayers = NULL;    nLayers = 0;    poConn = 0;}/************************************************************************//*                         ~OGRIDBDataSource()                         *//************************************************************************/OGRIDBDataSource::~OGRIDBDataSource(){    int         i;    CPLFree( pszName );    for( i = 0; i < nLayers; i++ )        delete papoLayers[i];    CPLFree( papoLayers );    delete poConn;}/************************************************************************//*                                Open()                                *//************************************************************************/int OGRIDBDataSource::Open( const char * pszNewName, int bUpdate,                             int bTestOpen ){    CPLAssert( poConn == NULL );/* -------------------------------------------------------------------- *//*  URL: DBI:dbname=.. server=.. user=.. pass=.. table=..               *//*  Any of params is optional, table param can repeat more than once    *//* -------------------------------------------------------------------- */    char * pszDbName    = NULL;    char * pszServer    = NULL;    char * pszUser      = NULL;    char * pszPass      = NULL;    char **papszTables  = NULL;    char **papszGeomCol = NULL;    char ** papszTokens = CSLTokenizeString2(pszNewName + 4, " ", 0);    char * pszToken = 0;    int i = 0;     while ( pszToken = papszTokens[i++] )    {        if ( EQUALN( pszToken, "dbname=", 7 ) )            pszDbName = CPLStrdup( pszToken + 7 );        else if ( EQUALN( pszToken, "server=", 7 ) )            pszServer = CPLStrdup( pszToken + 7 );        else if ( EQUALN( pszToken, "user=", 5 ) )            pszUser = CPLStrdup( pszToken + 5 );        else if ( EQUALN( pszToken, "pass=", 5 ) )            pszPass = CPLStrdup( pszToken + 5 );        else if ( EQUALN( pszToken, "table=", 6 ) )        {            papszTables = CSLAddString( papszTables, pszToken + 6 );            papszGeomCol = CSLAddString( papszGeomCol, "" );        }    }/* -------------------------------------------------------------------- *//*      Initialize based on the DSN.                                    *//* -------------------------------------------------------------------- */    ITDBInfo oDbInfo(pszDbName,pszUser,pszServer,pszPass);    CPLDebug( "OGR_IDB",              "Connect to: db:'%s' server:'%s', user:'%s', pass:'%s'",              pszDbName ? pszDbName : "",              pszServer ? pszServer : "",              pszUser ? pszUser : "",              pszPass ? pszPass : "" );    CPLFree( pszDbName );    CPLFree( pszServer );    CPLFree( pszUser );    CPLFree( pszPass );    poConn = new ITConnection( oDbInfo );    poConn->AddCallback( IDBErrorHandler, 0 );    if( !poConn->Open() )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "Unable to initialize IDB connection to %s",                  pszNewName+4);        CSLDestroy( papszTables );        return FALSE;    }    pszName = CPLStrdup( pszNewName );    bDSUpdate = bUpdate;/* -------------------------------------------------------------------- *//*      If no explicit list of tables was given, check for a list in    *//*      a geometry_columns table.                                       *//* -------------------------------------------------------------------- */    if( papszTables == NULL )    {        ITCursor oCurr( *poConn );        if( oCurr.Prepare(" SELECT f_table_name, f_geometry_column,"                          " geometry_type FROM geometry_columns" ) &&            oCurr.Open(ITCursor::ReadOnly) )        {            ITRow * row = 0;            while( (row = oCurr.NextRow()) )            {                papszTables =                     CSLAddString( papszTables, row->Column(0)->Printable() );                papszGeomCol =                     CSLAddString( papszGeomCol, row->Column(1)->Printable() );                row->Release();            }        }    }/* -------------------------------------------------------------------- *//*      Otherwise our final resort is to return all tables as           *//*      non-spatial tables.                                             *//* -------------------------------------------------------------------- */    if( papszTables == NULL )    {        ITCursor oTableList( *poConn );        if ( oTableList.Prepare("select tabname from systables where tabtype='T' and tabid > 99") &&             oTableList.Open(ITCursor::ReadOnly) )        {            ITRow * row = 0;            while( (row = oTableList.NextRow()) )            {                papszTables =                     CSLAddString( papszTables, row->Column(0)->Printable() );                papszGeomCol = CSLAddString(papszGeomCol,"");                row->Release();            }        }        else            CPLError( CE_Failure, CPLE_AppDefined,                      "Unable to open cursor for '%s'",                      oTableList.QueryText().Data() );    }/* -------------------------------------------------------------------- *//*      If we have an explicit list of requested tables, use them       *//*      (non-spatial).                                                  *//* -------------------------------------------------------------------- */    for( int iTable = 0;          papszTables != NULL && papszTables[iTable] != NULL;          iTable++ )    {        char * pszGeomCol = NULL;        if( strlen(papszGeomCol[iTable]) > 0 )            pszGeomCol = papszGeomCol[iTable];        OpenTable( papszTables[iTable], pszGeomCol, bUpdate );    }    CSLDestroy( papszTables );    CSLDestroy( papszGeomCol );    return TRUE;}/************************************************************************//*                             OpenTable()                              *//************************************************************************/int OGRIDBDataSource::OpenTable( const char *pszNewName,                                 const char *pszGeomCol,                                 int bUpdate ){/* -------------------------------------------------------------------- *//*      Create the layer object.                                        *//* -------------------------------------------------------------------- */    OGRIDBTableLayer  *poLayer;    poLayer = new OGRIDBTableLayer( this );    if( poLayer->Initialize( pszNewName, pszGeomCol, bUpdate ) )    {        delete poLayer;        return FALSE;    }/* -------------------------------------------------------------------- *//*      Add layer to data source layer list.                            *//* -------------------------------------------------------------------- */    papoLayers = (OGRIDBLayer **)        CPLRealloc( papoLayers,  sizeof(OGRIDBLayer *) * (nLayers+1) );    papoLayers[nLayers++] = poLayer;    return TRUE;}/************************************************************************//*                           TestCapability()                           *//************************************************************************/int OGRIDBDataSource::TestCapability( const char * pszCap ){    if( EQUAL(pszCap,ODsCCreateLayer) )        return TRUE;    else        return FALSE;}/************************************************************************//*                              GetLayer()                              *//************************************************************************/OGRLayer *OGRIDBDataSource::GetLayer( int iLayer ){    if( iLayer < 0 || iLayer >= nLayers )        return NULL;    else        return papoLayers[iLayer];}/************************************************************************//*                             ExecuteSQL()                             *//************************************************************************/OGRLayer * OGRIDBDataSource::ExecuteSQL( const char *pszSQLCommand,                                          OGRGeometry *poSpatialFilter,                                          const char *pszDialect ){/* -------------------------------------------------------------------- *//*      Use generic imlplementation for OGRSQL dialect.                 *//* -------------------------------------------------------------------- */    if( pszDialect != NULL && EQUAL(pszDialect,"OGRSQL") )        return OGRDataSource::ExecuteSQL( pszSQLCommand,                                           poSpatialFilter,                                           pszDialect );/* -------------------------------------------------------------------- *//*      Execute statement.                                              *//* -------------------------------------------------------------------- */    ITCursor *poCurr = new ITCursor( *poConn );    poCurr->Prepare( pszSQLCommand );    if( !poCurr->Open(ITCursor::ReadOnly) )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "Error execute SQL: %s", pszSQLCommand );        return NULL;    }/* -------------------------------------------------------------------- *//*      Are there result columns for this statement?                    *//* -------------------------------------------------------------------- */    if( poCurr->RowType()->ColumnCount() == 0 )    {        delete poCurr;        CPLErrorReset();        return NULL;    }/* -------------------------------------------------------------------- *//*      Create a results layer.  It will take ownership of the          *//*      statement.                                                      *//* -------------------------------------------------------------------- */    OGRIDBSelectLayer *poLayer = NULL;    poLayer = new OGRIDBSelectLayer( this, poCurr );    if( poSpatialFilter != NULL )        poLayer->SetSpatialFilter( poSpatialFilter );    return poLayer;}/************************************************************************//*                          ReleaseResultSet()                          *//************************************************************************/void OGRIDBDataSource::ReleaseResultSet( OGRLayer * poLayer ){    delete poLayer;}ITCallbackResultIDBErrorHandler( const ITErrorManager &err, void * , long ){    if ( err.Error() )        CPLError( CE_Failure, CPLE_AppDefined,                  "IDB Error: %s", err.ErrorText().Data() );    /*if ( err.Warn() )        CPLError( CE_Warning, CPLE_AppDefined,                  "IDB Warning: %s", err.WarningText().Data() );    */    return IT_NOTHANDLED;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一二三四区| 久久综合色天天久久综合图片| 国产麻豆精品久久一二三| 免费在线一区观看| 经典三级一区二区| 国产精品一级在线| av中文字幕不卡| 91蝌蚪porny| 欧美在线999| 91精品国产黑色紧身裤美女| 91精品欧美福利在线观看| 日韩欧美亚洲国产另类| 精品久久久久久无| 国产精品乱码妇女bbbb| 亚洲三级免费观看| 视频一区二区三区中文字幕| 日韩电影免费在线观看网站| 精品在线观看视频| 成人av网站在线观看| 色哟哟国产精品免费观看| 欧美老女人第四色| 国产亚洲精品精华液| 亚洲另类在线制服丝袜| 五月天网站亚洲| 国产精品亚洲а∨天堂免在线| 99视频精品免费视频| 在线成人小视频| 国产精品午夜久久| 午夜激情久久久| 成人黄色av电影| 制服.丝袜.亚洲.另类.中文| 亚洲国产精品传媒在线观看| 午夜久久久久久久久| 粉嫩在线一区二区三区视频| 欧美精品1区2区| 国产欧美在线观看一区| 日韩精品一二三四| 成人看片黄a免费看在线| 欧美高清你懂得| 国产精品剧情在线亚洲| 另类专区欧美蜜桃臀第一页| 91视频免费看| 2014亚洲片线观看视频免费| 亚洲国产欧美一区二区三区丁香婷| 国产一区二区三区在线看麻豆| 91麻豆文化传媒在线观看| 久久综合给合久久狠狠狠97色69| 夜夜嗨av一区二区三区网页| 国产**成人网毛片九色 | 国产精品亚洲第一区在线暖暖韩国| 一本色道a无线码一区v| 久久久久久麻豆| 日韩精品电影在线观看| 色综合久久88色综合天天| 中文字幕欧美国产| 国产精品羞羞答答xxdd| 精品国产91九色蝌蚪| 五月天欧美精品| 欧美三级电影在线看| 亚洲久本草在线中文字幕| 国产成人精品影视| 精品国产伦一区二区三区观看体验| 亚洲午夜在线电影| 在线观看91精品国产入口| 国产精品乱人伦中文| 高清国产一区二区三区| 久久久久久久电影| 国产乱码精品一品二品| 欧美精品一区二区久久婷婷| 麻豆精品新av中文字幕| 日韩一二在线观看| 精品一区二区免费在线观看| 欧美一区二区三区白人| 日韩成人一级片| 欧美一级片在线观看| 老汉av免费一区二区三区| 日韩丝袜情趣美女图片| 美女在线一区二区| 久久综合久久综合久久| 国产99精品国产| 亚洲欧美日韩国产综合| 91久久精品网| 免费黄网站欧美| 久久久久久毛片| 99久久免费视频.com| 亚洲精品视频在线看| 欧美中文一区二区三区| 日韩中文字幕区一区有砖一区| 日韩亚洲欧美高清| 久久精品国产亚洲高清剧情介绍 | 精品国产一区久久| 久久99精品国产.久久久久久| 欧美一区二区三区播放老司机| 狠狠色丁香久久婷婷综合_中| 久久亚洲一区二区三区明星换脸| 成人一区二区三区| 亚洲另类中文字| 日韩三级电影网址| 国产白丝精品91爽爽久久| 伊人婷婷欧美激情| 欧美刺激脚交jootjob| 成人一道本在线| 亚洲自拍偷拍欧美| 日韩精品一区二区三区视频播放| 国产精品亚洲人在线观看| 亚洲一区自拍偷拍| 精品久久人人做人人爽| 一本色道久久综合狠狠躁的推荐 | 一区二区三区91| 26uuu精品一区二区| 色先锋aa成人| 国产乱码精品一区二区三| 夜夜嗨av一区二区三区中文字幕 | 亚洲天堂2016| 日韩欧美在线1卡| 99视频一区二区| 久久国产尿小便嘘嘘尿| 亚洲伦理在线精品| 久久久久久黄色| 91精品福利在线一区二区三区| 成人精品免费看| 久久精品国产亚洲高清剧情介绍 | 欧美日韩一区成人| 国产成人啪免费观看软件| 亚洲精品第一国产综合野| 久久噜噜亚洲综合| 欧美一区二区视频免费观看| 97久久人人超碰| 国产91色综合久久免费分享| 五月激情综合网| 一区二区三区四区中文字幕| 国产精品三级在线观看| 亚洲精品一区二区精华| 欧美情侣在线播放| 在线观看国产精品网站| 91在线你懂得| av一二三不卡影片| 国产东北露脸精品视频| 国产伦精一区二区三区| 久久精品国产精品青草| 日本特黄久久久高潮| 亚洲第一搞黄网站| 亚洲国产婷婷综合在线精品| 亚洲日本一区二区| 亚洲欧洲日韩av| 中文字幕国产一区二区| 国产欧美中文在线| 中文字幕av一区二区三区免费看| 久久精品欧美一区二区三区麻豆| 26uuu精品一区二区三区四区在线| 欧美一区二区视频在线观看2022| 777奇米四色成人影色区| 欧美日韩高清一区二区不卡 | 成人丝袜18视频在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 另类欧美日韩国产在线| 欧美a一区二区| 玖玖九九国产精品| 国产精品一级黄| 成人国产精品免费| 91日韩一区二区三区| 91成人网在线| 日韩亚洲欧美在线| 久久无码av三级| 最新日韩在线视频| 亚洲午夜免费视频| 麻豆成人免费电影| 夫妻av一区二区| 欧美最猛黑人xxxxx猛交| 制服.丝袜.亚洲.另类.中文| 欧美va亚洲va国产综合| 欧美激情一区二区三区四区 | 欧美一区二区三区白人| 精品久久一区二区| 亚洲色图另类专区| 日韩电影网1区2区| 国产999精品久久久久久绿帽| 色综合欧美在线视频区| 欧美一区二区久久久| 日本一区二区久久| 亚欧色一区w666天堂| 国产一本一道久久香蕉| 一本到高清视频免费精品| 欧美一区二区三区婷婷月色| 国产肉丝袜一区二区| 午夜久久福利影院| 丰满亚洲少妇av| 欧美一级理论性理论a| 中文字幕在线不卡视频| 免费的国产精品| 色欧美片视频在线观看在线视频| 欧美sm美女调教| 一个色综合av| 国产91高潮流白浆在线麻豆| 欧美精品v日韩精品v韩国精品v| 亚洲国产岛国毛片在线| 毛片基地黄久久久久久天堂| 色婷婷精品久久二区二区蜜臂av | 亚洲码国产岛国毛片在线| 精品亚洲aⅴ乱码一区二区三区|