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

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

?? ogrocitablelayer.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/****************************************************************************** * $Id: ogrocitablelayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  Oracle Spatial Driver * Purpose:  Implementation of the OGROCITableLayer class.  This class provides *           layer semantics on a table, but utilizing alot of machinery from *           the OGROCILayer base class. * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 2002, 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_oci.h"#include "cpl_conv.h"#include "cpl_string.h"CPL_CVSID("$Id: ogrocitablelayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $");static int nDiscarded = 0;static int nHits = 0;#define HSI_UNKNOWN  -2/************************************************************************//*                          OGROCITableLayer()                          *//************************************************************************/OGROCITableLayer::OGROCITableLayer( OGROCIDataSource *poDSIn,                                     const char * pszTableName,                                    int nSRIDIn, int bUpdate, int bNewLayerIn ){    poDS = poDSIn;    pszQuery = NULL;    pszWHERE = CPLStrdup( "" );    pszQueryStatement = NULL;        bUpdateAccess = bUpdate;    bNewLayer = bNewLayerIn;    iNextShapeId = 0;    iNextFIDToWrite = 1;    bValidTable = FALSE;    if( bNewLayerIn )        bHaveSpatialIndex = FALSE;    else        bHaveSpatialIndex = HSI_UNKNOWN;    poFeatureDefn = ReadTableDefinition( pszTableName );    nSRID = nSRIDIn;    if( nSRID == -1 )        nSRID = LookupTableSRID();            poSRS = poDSIn->FetchSRS( nSRID );    if( poSRS != NULL )        poSRS->Reference();    hOrdVARRAY = NULL;    hElemInfoVARRAY = NULL;    poBoundStatement = NULL;    nWriteCacheMax = 0;    nWriteCacheUsed = 0;    pasWriteGeoms = NULL;    papsWriteGeomMap = NULL;    pasWriteGeomInd = NULL;    papsWriteGeomIndMap = NULL;    papWriteFields = NULL;    papaeWriteFieldInd = NULL;    panWriteFIDs = NULL;    ResetReading();}/************************************************************************//*                         ~OGROCITableLayer()                          *//************************************************************************/OGROCITableLayer::~OGROCITableLayer(){    int   i;    if( bNewLayer )        FinalizeNewLayer();    CPLFree( panWriteFIDs );    if( papWriteFields != NULL )    {        for( i = 0; i < poFeatureDefn->GetFieldCount(); i++ )        {            CPLFree( papWriteFields[i] );            CPLFree( papaeWriteFieldInd[i] );        }    }    CPLFree( papWriteFields );    CPLFree( papaeWriteFieldInd );    if( poBoundStatement != NULL )        delete poBoundStatement;    CPLFree( pasWriteGeomInd );    CPLFree( papsWriteGeomIndMap );        CPLFree( papsWriteGeomMap );    CPLFree( pasWriteGeoms );    CPLFree( pszQuery );    CPLFree( pszWHERE );    if( poSRS != NULL && poSRS->Dereference() == 0 )        delete poSRS;}/************************************************************************//*                        ReadTableDefinition()                         *//*                                                                      *//*      Build a schema from the named table.  Done by querying the      *//*      catalog.                                                        *//************************************************************************/OGRFeatureDefn *OGROCITableLayer::ReadTableDefinition( const char * pszTable ){    OGROCISession      *poSession = poDS->GetSession();    sword               nStatus;    OGRFeatureDefn *poDefn = new OGRFeatureDefn( pszTable );    poDefn->Reference();/* -------------------------------------------------------------------- *//*      Do a DescribeAll on the table.                                  *//* -------------------------------------------------------------------- */    OCIParam *hAttrParam = NULL;    OCIParam *hAttrList = NULL;    nStatus =         OCIDescribeAny( poSession->hSvcCtx, poSession->hError,                         (dvoid *) pszTable, strlen(pszTable), OCI_OTYPE_NAME,                         OCI_DEFAULT, OCI_PTYPE_TABLE, poSession->hDescribe );    if( poSession->Failed( nStatus, "OCIDescribeAny" ) )    {        CPLErrorReset();        nStatus =            OCIDescribeAny(poSession->hSvcCtx, poSession->hError,                           (dvoid *)pszTable, strlen(pszTable), OCI_OTYPE_NAME,                           OCI_DEFAULT, OCI_PTYPE_VIEW, poSession->hDescribe );        if( poSession->Failed( nStatus, "OCIDescribeAny" ) )            return poDefn;    }        if( poSession->Failed(         OCIAttrGet( poSession->hDescribe, OCI_HTYPE_DESCRIBE,                     &hAttrParam, 0, OCI_ATTR_PARAM, poSession->hError ),        "OCIAttrGet(ATTR_PARAM)") )        return poDefn;    if( poSession->Failed(         OCIAttrGet( hAttrParam, OCI_DTYPE_PARAM, &hAttrList, 0,                     OCI_ATTR_LIST_COLUMNS, poSession->hError ),        "OCIAttrGet(ATTR_LIST_COLUMNS)" ) )        return poDefn;/* -------------------------------------------------------------------- *//*      What is the name of the column to use as FID?  This defaults    *//*      to OGR_FID but we allow it to be overridden by a config         *//*      variable.  Ideally we would identify a column that is a         *//*      primary key and use that, but I'm not yet sure how to           *//*      accomplish that.                                                *//* -------------------------------------------------------------------- */    const char *pszExpectedFIDName =         CPLGetConfigOption( "OCI_FID", "OGR_FID" );/* -------------------------------------------------------------------- *//*      Parse the returned table information.                           *//* -------------------------------------------------------------------- */    for( int iRawFld = 0; TRUE; iRawFld++ )    {        OGRFieldDefn    oField( "", OFTString);        OCIParam     *hParmDesc;        ub2          nOCIType;        ub4          nOCILen;        sword        nStatus;        nStatus = OCIParamGet( hAttrList, OCI_DTYPE_PARAM,                               poSession->hError, (dvoid**)&hParmDesc,                                (ub4) iRawFld+1 );        if( nStatus != OCI_SUCCESS )            break;        if( poSession->GetParmInfo( hParmDesc, &oField, &nOCIType, &nOCILen )            != CE_None )            return poDefn;        if( oField.GetType() == OFTBinary )        {            if( nOCIType == 108 && pszGeomName == NULL )            {                CPLFree( pszGeomName );                pszGeomName = CPLStrdup( oField.GetNameRef() );                iGeomColumn = iRawFld;            }            continue;                           }        if( EQUAL(oField.GetNameRef(),pszExpectedFIDName)             && oField.GetType() == OFTInteger )        {            pszFIDName = CPLStrdup(oField.GetNameRef());            continue;        }        poDefn->AddFieldDefn( &oField );    }    bValidTable = TRUE;    return poDefn;}/************************************************************************//*                          SetSpatialFilter()                          *//************************************************************************/void OGROCITableLayer::SetSpatialFilter( OGRGeometry * poGeomIn ){    if( !InstallFilter( poGeomIn ) )        return;    BuildWhere();    ResetReading();}/************************************************************************//*                        TestForSpatialIndex()                         *//************************************************************************/void OGROCITableLayer::TestForSpatialIndex( const char *pszSpatWHERE ){    OGROCIStringBuf oTestCmd;    OGROCIStatement oTestStatement( poDS->GetSession() );            oTestCmd.Append( "SELECT COUNT(*) FROM " );    oTestCmd.Append( poFeatureDefn->GetName() );    oTestCmd.Append( pszSpatWHERE );    if( oTestStatement.Execute( oTestCmd.GetString() ) != CE_None )        bHaveSpatialIndex = FALSE;    else        bHaveSpatialIndex = TRUE;}/************************************************************************//*                             BuildWhere()                             *//*                                                                      *//*      Build the WHERE statement appropriate to the current set of     *//*      criteria (spatial and attribute queries).                       *//************************************************************************/void OGROCITableLayer::BuildWhere(){    OGROCIStringBuf oWHERE;    CPLFree( pszWHERE );    pszWHERE = NULL;    if( m_poFilterGeom != NULL && bHaveSpatialIndex )    {        OGREnvelope  sEnvelope;        m_poFilterGeom->getEnvelope( &sEnvelope );        oWHERE.Append( " WHERE sdo_filter(" );        oWHERE.Append( pszGeomName );        oWHERE.Append( ", MDSYS.SDO_GEOMETRY(2003," );        if( nSRID == -1 )            oWHERE.Append( "NULL" );        else            oWHERE.Appendf( 15, "%d", nSRID );        oWHERE.Append( ",NULL," );        oWHERE.Append( "MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1)," );        oWHERE.Append( "MDSYS.SDO_ORDINATE_ARRAY(" );        oWHERE.Appendf( 600,                "%.16g,%.16g,%.16g,%.16g,%.16g,%.16g,%.16g,%.16g,%.16g,%.16g",                        sEnvelope.MinX, sEnvelope.MinY,                        sEnvelope.MaxX, sEnvelope.MinY,                        sEnvelope.MaxX, sEnvelope.MaxY,                        sEnvelope.MinX, sEnvelope.MaxY,                        sEnvelope.MinX, sEnvelope.MinY);        oWHERE.Append( ")), 'querytype=window') = 'TRUE' " );    }    if( bHaveSpatialIndex == HSI_UNKNOWN )    {        TestForSpatialIndex( oWHERE.GetString() );        if( !bHaveSpatialIndex )            oWHERE.Clear();    }    if( pszQuery != NULL )    {        if( oWHERE.GetLast() == '\0' )            oWHERE.Append( "WHERE " );        else            oWHERE.Append( "AND " );        oWHERE.Append( pszQuery );    }    pszWHERE = oWHERE.StealString();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色狠狠av一区二区三区| 麻豆一区二区三| 色婷婷av一区| 一区二区三区在线免费观看| 欧美在线观看你懂的| 亚洲一区二区三区三| 欧美一区二区在线观看| 麻豆91在线看| 久久久.com| 色婷婷香蕉在线一区二区| 亚洲自拍偷拍网站| 日韩一区二区免费电影| 韩日av一区二区| 亚洲欧洲性图库| 欧美无人高清视频在线观看| 久久精品国产精品亚洲精品| 国产欧美一区二区三区网站 | 国产永久精品大片wwwapp| 久久久国产精华| 99久久精品免费看国产免费软件| 夜夜亚洲天天久久| 日韩精品一区二区三区在线 | 久久新电视剧免费观看| 成人av在线看| 全国精品久久少妇| 亚洲国产精品精华液2区45| 色噜噜狠狠成人网p站| 麻豆国产欧美日韩综合精品二区 | 免费成人av在线| 中文字幕久久午夜不卡| 欧美日韩一区二区电影| 国产一区二区三区黄视频 | 精品国精品自拍自在线| 94-欧美-setu| 精品一区二区免费看| 亚洲欧美日韩一区二区三区在线观看| 制服丝袜在线91| 不卡av免费在线观看| 老鸭窝一区二区久久精品| 亚洲成人自拍偷拍| 久久久www免费人成精品| 欧美午夜宅男影院| 成人黄页在线观看| 久久精品免费观看| 夜夜嗨av一区二区三区四季av| 久久久国产综合精品女国产盗摄| 欧美性感一区二区三区| av在线不卡免费看| 国产曰批免费观看久久久| 午夜精品久久久久久久99樱桃| 日本一二三不卡| 精品国产99国产精品| 制服.丝袜.亚洲.中文.综合 | 欧美精三区欧美精三区| 91在线观看美女| 国产精品69毛片高清亚洲| 日本伊人精品一区二区三区观看方式| 亚洲你懂的在线视频| 欧美激情一区二区三区不卡| 日韩精品一区二区三区老鸭窝| 欧美精品成人一区二区三区四区| 91麻豆精东视频| 91女厕偷拍女厕偷拍高清| 成人免费看片app下载| 国产福利不卡视频| 国产一区二区三区最好精华液| 蜜臀av性久久久久蜜臀aⅴ| 视频一区二区三区在线| 一级女性全黄久久生活片免费| 成人免费在线视频观看| 国产精品毛片无遮挡高清| 国产午夜亚洲精品羞羞网站| 日韩欧美国产综合一区| 91精品国产91久久久久久最新毛片| 在线观看欧美精品| 在线视频国内一区二区| 色天使色偷偷av一区二区| 99re在线视频这里只有精品| 成人性生交大片免费看中文 | 色天天综合久久久久综合片| 狠狠色狠狠色综合| 免费欧美在线视频| 日本不卡一区二区| 日本免费在线视频不卡一不卡二| 亚洲国产精品尤物yw在线观看| 亚洲一二三区不卡| 五月天一区二区三区| 日本亚洲一区二区| 美女在线一区二区| 国产精品自拍毛片| 成人美女在线观看| 色www精品视频在线观看| 91视频一区二区| 欧美婷婷六月丁香综合色| 欧美日韩不卡一区二区| 日韩欧美成人一区二区| 国产亚洲人成网站| 亚洲色图欧洲色图| 亚洲无线码一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产综合色视频| www.在线成人| 欧美日韩一区二区三区视频 | 国产亚洲精品aa| 1024亚洲合集| 亚洲成人综合网站| 久久99热这里只有精品| 不卡高清视频专区| 欧美日韩在线一区二区| 欧美一区二区三区四区久久 | 日韩一区二区三区观看| 欧美高清一级片在线观看| 亚洲精品v日韩精品| 日本系列欧美系列| 粉嫩绯色av一区二区在线观看| 日本韩国一区二区三区| 日韩精品一区二区三区中文不卡| 国产精品久久久久久久蜜臀| 午夜成人免费电影| 成熟亚洲日本毛茸茸凸凹| 欧美日韩成人综合天天影院| 国产日韩亚洲欧美综合| 日韩主播视频在线| 丁香婷婷综合激情五月色| 欧美三区在线视频| 国产精品理伦片| 蜜乳av一区二区| 日韩欧美在线1卡| 一区二区三区欧美日| 日产欧产美韩系列久久99| 国产 日韩 欧美大片| 欧美亚洲高清一区| 久久免费视频色| 偷拍亚洲欧洲综合| 成人国产电影网| 日韩精品一区二区三区swag| 亚洲欧美日韩国产一区二区三区| 日韩精品1区2区3区| 99久久精品久久久久久清纯| 欧美mv和日韩mv的网站| 亚洲韩国精品一区| 99re热视频精品| 久久精品夜色噜噜亚洲aⅴ| 日韩精品一二三四| 欧美午夜理伦三级在线观看| 国产精品久久福利| 国产高清不卡一区二区| 日韩一区二区在线观看视频播放| 洋洋成人永久网站入口| 成人a级免费电影| 国产三级精品在线| 久久国产精品第一页| 欧美日韩国产综合视频在线观看| 欧美视频你懂的| 精品美女被调教视频大全网站| 亚洲主播在线播放| 91丨九色丨蝌蚪富婆spa| 日本一区二区三区四区在线视频| 久久er精品视频| 欧美成人aa大片| 九一久久久久久| 久久影院午夜论| 国产呦精品一区二区三区网站| 精品国产一区二区三区av性色| 蜜臀精品久久久久久蜜臀| 在线播放日韩导航| 亚洲成av人片一区二区梦乃 | 91在线你懂得| 中文字幕在线不卡| 91视频你懂的| 一区二区三区高清| 欧美专区亚洲专区| 亚洲一二三四区不卡| 欧美日韩一区二区三区四区五区| 日韩在线a电影| 欧美美女bb生活片| 美女视频黄免费的久久 | 国产精品美女久久久久久久久久久| 国产乱码精品一区二区三| 精品99一区二区| 福利电影一区二区| 亚洲日本在线天堂| 欧美日韩一级片在线观看| 日本麻豆一区二区三区视频| 精品日韩欧美在线| 风间由美性色一区二区三区| 亚洲欧洲另类国产综合| 91成人免费在线视频| 亚洲午夜一二三区视频| 欧美另类久久久品| 免费在线观看一区| 国产无人区一区二区三区| 成人激情视频网站| 亚洲成人福利片| 精品国产免费视频| 99久久精品99国产精品| 日本不卡中文字幕| 国产精品天美传媒沈樵| 欧美性猛片xxxx免费看久爱| 卡一卡二国产精品 |