亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产亚洲1区2区3区| 在线观看精品一区| 精品日韩在线一区| 免费在线欧美视频| 亚洲精品一区二区三区蜜桃下载 | 免费人成网站在线观看欧美高清| 欧美人妖巨大在线| 日本欧美一区二区三区| 精品国产露脸精彩对白| 国产sm精品调教视频网站| 国产精品你懂的在线| 91免费观看视频在线| 偷拍自拍另类欧美| 久久伊人蜜桃av一区二区| 国产91露脸合集magnet| 亚洲综合丁香婷婷六月香| 欧美日韩国产高清一区| 久久精品免费观看| 中文字幕第一区二区| 色综合久久99| 蜜桃精品视频在线观看| 国产欧美日韩在线视频| 在线观看一区二区精品视频| 麻豆精品新av中文字幕| 国产精品久久毛片a| 欧美在线免费观看视频| 国产在线播放一区| 一区二区三区不卡在线观看| 日韩精品综合一本久道在线视频| 成人三级在线视频| 五月天激情综合网| 国产精品久久久久久久久动漫 | 白白色 亚洲乱淫| 午夜电影网一区| 国产欧美日本一区二区三区| 欧美亚洲一区二区在线| 国产成人小视频| 亚洲国产美女搞黄色| 久久久777精品电影网影网 | 91色婷婷久久久久合中文| 日韩精品一级二级 | 亚洲精品一区二区精华| 91久久国产综合久久| 国产美女精品一区二区三区| 午夜日韩在线电影| 国产精品日韩成人| 久久综合九色综合欧美亚洲| 一本大道av一区二区在线播放| 蜜桃视频免费观看一区| 一区二区三区精密机械公司| 国产日韩欧美激情| 日韩一区二区免费电影| 欧美中文字幕一二三区视频| 国产一区在线观看视频| 视频一区视频二区在线观看| 亚洲美女淫视频| 欧美精彩视频一区二区三区| 欧美mv日韩mv亚洲| 欧美三级中文字幕| 欧美日韩精品电影| 91蜜桃在线免费视频| 国产中文一区二区三区| 美国毛片一区二区| 日韩高清一区二区| 午夜免费久久看| 亚洲综合成人在线| 亚洲你懂的在线视频| 中文字幕一区二区三区在线观看 | 欧美日韩一区二区三区四区五区| 成人免费毛片app| 国产精品亚洲视频| 国产传媒欧美日韩成人| 国产一区二区0| 经典三级一区二区| 国产一区二区三区国产| 国内一区二区在线| 国产裸体歌舞团一区二区| 精品一区免费av| 久久丁香综合五月国产三级网站| 日韩福利电影在线观看| 秋霞电影一区二区| 欧美a一区二区| 美女性感视频久久| 久久99国产精品久久| 精品一区二区三区在线观看国产| 精品一区二区成人精品| 狠狠色丁香婷婷综合久久片| 久久99精品国产91久久来源| 国产一区二区在线观看免费| 国产自产2019最新不卡| 国产最新精品免费| 高潮精品一区videoshd| 99久久久久免费精品国产| 91麻豆国产福利在线观看| 色一情一伦一子一伦一区| 欧美午夜精品一区二区三区| 欧美三级在线看| 欧美一区二区在线播放| 精品国产乱码久久久久久夜甘婷婷| 精品理论电影在线| 中文字幕av一区二区三区高 | 亚洲午夜成aⅴ人片| 婷婷开心久久网| 九九精品一区二区| 高清视频一区二区| 在线观看免费视频综合| 精品毛片乱码1区2区3区| 国产色婷婷亚洲99精品小说| **网站欧美大片在线观看| 亚洲在线观看免费视频| 激情小说欧美图片| 99久久99久久精品免费观看| 欧美日韩免费高清一区色橹橹 | 亚洲欧洲日本在线| 亚洲国产精品一区二区久久恐怖片| 久久国产尿小便嘘嘘尿| 成人激情av网| 欧美久久久一区| 国产人成一区二区三区影院| 夜夜精品视频一区二区| 久久疯狂做爰流白浆xx| 一本在线高清不卡dvd| 日韩三级在线观看| 亚洲人成人一区二区在线观看| 日日嗨av一区二区三区四区| 成人h动漫精品| 欧美一区二区三区在线视频| 国产精品美女一区二区三区 | 亚洲综合成人在线视频| 国产一区不卡精品| 欧美日韩视频专区在线播放| 国产欧美日韩激情| 奇米影视一区二区三区| 色婷婷精品大在线视频| 久久久亚洲欧洲日产国码αv| 亚洲成人自拍网| www.性欧美| 久久亚洲一区二区三区明星换脸| 亚洲综合免费观看高清完整版| 国产精品888| 日韩欧美国产精品| 亚洲18女电影在线观看| 99国产一区二区三精品乱码| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲成人福利片| 91丝袜高跟美女视频| 久久精品一区二区三区不卡| 蜜臂av日日欢夜夜爽一区| 在线观看日韩电影| 日韩毛片在线免费观看| 国产99久久精品| 久久精品综合网| 国产精品一区二区在线播放| 日韩欧美亚洲另类制服综合在线| 亚洲va欧美va人人爽| 在线观看国产一区二区| 亚洲免费毛片网站| av电影天堂一区二区在线| 中文乱码免费一区二区| 国产精品1区2区3区| 久久综合五月天婷婷伊人| 麻豆精品一二三| 日韩欧美成人一区二区| 麻豆成人在线观看| 日韩视频免费直播| 麻豆精品新av中文字幕| 精品女同一区二区| 韩国三级在线一区| 欧美精品一区二区三| 韩国在线一区二区| 国产视频一区二区在线| www..com久久爱| 亚洲欧洲av在线| 色婷婷久久99综合精品jk白丝| 一区二区高清免费观看影视大全| 色婷婷久久久久swag精品 | 国产精品三级电影| 成人v精品蜜桃久久一区| 1000部国产精品成人观看| 91一区二区三区在线观看| 亚洲男人的天堂在线aⅴ视频| 91在线免费视频观看| 亚洲精品久久7777| 欧美亚洲丝袜传媒另类| 免费在线观看成人| 久久久777精品电影网影网 | 欧美日韩国产bt| 欧美a级理论片| 国产三级一区二区| 一本大道久久a久久综合| 五月天亚洲婷婷| 精品国产电影一区二区| 岛国精品在线观看| 亚洲一区二区三区四区不卡| 欧美电影一区二区| 国产乱一区二区| 玉米视频成人免费看| 日韩小视频在线观看专区| 国产91精品欧美| 亚洲国产一区二区视频|