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

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

?? ogrfmelayerdb.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
字號:
/****************************************************************************** * $Id: ogrfmelayerdb.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  FMEObjects Translator * Purpose:  Implementation of the OGRFMELayerDB class.  This is the *           class implementing behaviour for layers that are built on *           smart readers representing databases with spatial constraints,  *           and where clause support.  * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 1999, 2001 Safe Software Inc. * All Rights Reserved * * This software may not be copied or reproduced, in all or in part,  * without the prior written consent of Safe Software Inc. * * The entire risk as to the results and performance of the software, * supporting text and other information contained in this file * (collectively called the "Software") is with the user.  Although * Safe Software Incorporated has used considerable efforts in preparing  * the Software, Safe Software Incorporated does not warrant the * accuracy or completeness of the Software. In no event will Safe Software  * Incorporated be liable for damages, including loss of profits or  * consequential damages, arising out of the use of the Software. ****************************************************************************/#include "fme2ogr.h"#include "cpl_conv.h"#include "cpl_string.h"CPL_CVSID("$Id: ogrfmelayerdb.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                           OGRFMELayerDB()                            *//************************************************************************/OGRFMELayerDB::OGRFMELayerDB( OGRFMEDataSource *poDSIn,                               const char *pszReaderNameIn,                               const char *pszDatasetIn,                              IFMEStringArray *poUserDirectivesIn )        : OGRFMELayer( poDSIn ){    nPreviousFeature = -1;    poReader = NULL;    pszReaderName = CPLStrdup( pszReaderNameIn );    pszDataset = CPLStrdup( pszDatasetIn );    poUserDirectives = poDS->GetFMESession()->createStringArray();    for( FME_UInt32 i = 0; i < poUserDirectivesIn->entries(); i++ )    {        CPLDebug( "FMEOLEDB", "userDirective[%d] = %s\n",                   i, (const char *) (*poUserDirectivesIn)(i) );        poUserDirectives->append( (*poUserDirectivesIn)(i) );    }}/************************************************************************//*                           ~OGRFMELayerDB()                           *//************************************************************************/OGRFMELayerDB::~OGRFMELayerDB(){    if( poReader != NULL )        poDS->GetFMESession()->destroyReader( poReader );    CPLFree( pszReaderName );    CPLFree( pszDataset );}/************************************************************************//*                           TestCapability()                           *//************************************************************************/int OGRFMELayerDB::TestCapability( const char * pszCap ){    if( EQUAL(pszCap,OLCRandomRead) )        return FALSE;    else if( EQUAL(pszCap,OLCSequentialWrite)              || EQUAL(pszCap,OLCRandomWrite) )        return FALSE;    else if( EQUAL(pszCap,OLCFastFeatureCount) )        return TRUE;    else if( EQUAL(pszCap,OLCFastSpatialFilter) )        return TRUE;    else         return FALSE;}/************************************************************************//*                           GetNextFeature()                           *//************************************************************************/OGRFeature *OGRFMELayerDB::GetNextFeature(){    OGRFeature      *poFeature;    FME_Boolean     eEndOfSchema;    FME_MsgNum      err;    poDS->AcquireSession();    if( poReader == NULL )    {        if( !CreateReader() )        {            return NULL;            poDS->ReleaseSession();        }    }    err = poReader->read( *poFMEFeature, eEndOfSchema );    if( err )    {        CPLFMEError( poDS->GetFMESession(), "Error while reading feature." );        poDS->ReleaseSession();        return NULL;    }    if( eEndOfSchema == FME_TRUE )    {        poDS->ReleaseSession();        return NULL;    }    poFeature = poDS->ProcessFeature( this, poFMEFeature );    if( nPreviousFeature == -1 )        CPLDebug( "FMEOLEDB", "Fetching first feature from layer `%s'.",                   GetLayerDefn()->GetName() );    poFeature->SetFID( ++nPreviousFeature );    m_nFeaturesRead++;    poDS->ReleaseSession();    return poFeature;}/************************************************************************//*                            ResetReading()                            *//************************************************************************/ void OGRFMELayerDB::ResetReading(){    nPreviousFeature = -1;    poDS->AcquireSession();/* -------------------------------------------------------------------- *//*      Blow away existing reader, if we have one.                      *//* -------------------------------------------------------------------- */    if( poReader != NULL )        poDS->GetFMESession()->destroyReader( poReader );    poReader = NULL;    poDS->ReleaseSession();}/************************************************************************//*                              SetMacro()                              *//*                                                                      *//*      Set the value of one macro within a set of macros stored in     *//*      comma delimeted name value pairs (as per RUNTIME_MACROS in      *//*      user directives).                                               *//************************************************************************/static void SetMacro( IFMEString *poMacros, const char *pszTarget,                       const char *pszNewValue ){    char      *pszWorking, *pszValStart;    int       nOldValLength;    pszWorking = (char *) CPLMalloc(strlen(poMacros->data())                                     + strlen(pszNewValue)                                     + strlen(pszTarget) + 20 );    strcpy( pszWorking, poMacros->data() );    pszValStart = strstr( pszWorking, pszTarget );    if( pszValStart == NULL         || pszValStart[strlen(pszTarget)] != ',' )    {        if( strlen(pszWorking) > 0 )            strcat( pszWorking, "," );        sprintf( pszWorking + strlen(pszWorking), "%s,%s",                  pszTarget, pszNewValue );        *poMacros = pszWorking;        CPLFree( pszWorking );        return;    }    pszValStart += strlen(pszTarget) + 1;    for( nOldValLength = 0;          pszValStart[nOldValLength] != ','              && pszValStart[nOldValLength] != '\0';          nOldValLength++ ) {}    memmove( pszValStart + strlen(pszNewValue),             pszValStart + nOldValLength,             strlen(pszValStart + nOldValLength)+1 );    memcpy( pszValStart, pszNewValue, strlen( pszNewValue ) );    *poMacros = pszWorking;    CPLFree( pszWorking );}/************************************************************************//*                         SetAttributeFilter()                         *//************************************************************************/OGRErr OGRFMELayerDB::SetAttributeFilter( const char *pszNewFilter ){    CPLFree( pszAttributeFilter );    pszAttributeFilter = NULL;    if( pszNewFilter != NULL )        pszAttributeFilter = CPLStrdup( pszNewFilter );    ResetReading();    return OGRERR_NONE;}/************************************************************************//*                            CreateReader()                            *//************************************************************************/int OGRFMELayerDB::CreateReader(){    FME_MsgNum    err;    IFMESession  *poSession = poDS->GetFMESession();    FME_UInt32   i;    CPLAssert( poReader == NULL && nPreviousFeature == -1 );/* -------------------------------------------------------------------- *//*      Make a copy of the user directives, so we won't be altering     *//*      the originals.                                                  *//* -------------------------------------------------------------------- */    IFMEStringArray  *poUDC = poSession->createStringArray();    for( i = 0; i < poUserDirectives->entries(); i++ )        poUDC->append( (*poUserDirectives)(i) );    /* -------------------------------------------------------------------- *//*      Update the IDLIST to just select the desired table.             *//* -------------------------------------------------------------------- */        for( i = 0; i < poUDC->entries(); i++ )    {        if( EQUAL((const char *) (*poUDC)(i),"IDLIST") )        {            IFMEString    *poIDList = poSession->createString();            *poIDList = GetLayerDefn()->GetName();            poUDC->setElement( i+1, *poIDList );            poSession->destroyString( poIDList );            break;        }    }    if( i == poUDC->entries() )    {        poUDC->append( "IDLIST" );        poUDC->append( GetLayerDefn()->GetName() );    }/* -------------------------------------------------------------------- *//*      Update the macros for source information, if needed.            *//* -------------------------------------------------------------------- */    if( m_poFilterGeom != NULL )    {        const char *pszDirective = "RUNTIME_MACROS";        if( !poUDC->contains(pszDirective) )        {            poUDC->append(pszDirective);            poUDC->append("");        }        for( i = 0; i < poUDC->entries(); i++ )        {            if( EQUAL((const char *) (*poUDC)(i),pszDirective) )            {                IFMEString  *poMacroValue = poSession->createString();                char      szSEARCH_ENVELOPE[1024];                OGREnvelope      oEnvelope;                poUDC->getElement( i+1, *poMacroValue );                m_poFilterGeom->getEnvelope( &oEnvelope );                                if( EQUALN(pszReaderName,"SDE",3) )                {                    sprintf( szSEARCH_ENVELOPE, "%.16f", oEnvelope.MinX );                    SetMacro( poMacroValue, "_SDE3MINX", szSEARCH_ENVELOPE );                                        sprintf( szSEARCH_ENVELOPE, "%.16f", oEnvelope.MinY );                    SetMacro( poMacroValue, "_SDE3MINY", szSEARCH_ENVELOPE );                                        sprintf( szSEARCH_ENVELOPE, "%.16f", oEnvelope.MaxX );                    SetMacro( poMacroValue, "_SDE3MAXX", szSEARCH_ENVELOPE );                                        sprintf( szSEARCH_ENVELOPE, "%.16f", oEnvelope.MaxY );                    SetMacro( poMacroValue, "_SDE3MAXY", szSEARCH_ENVELOPE );                }                else                {                    sprintf( szSEARCH_ENVELOPE, "%.16f", oEnvelope.MinX );                    SetMacro( poMacroValue, "_ORACLE_MINX", szSEARCH_ENVELOPE);                                        sprintf( szSEARCH_ENVELOPE, "%.16f", oEnvelope.MinY );                    SetMacro( poMacroValue, "_ORACLE_MINY", szSEARCH_ENVELOPE);                                        sprintf( szSEARCH_ENVELOPE, "%.16f", oEnvelope.MaxX );                    SetMacro( poMacroValue, "_ORACLE_MAXX", szSEARCH_ENVELOPE);                                        sprintf( szSEARCH_ENVELOPE, "%.16f", oEnvelope.MaxY );                    SetMacro( poMacroValue, "_ORACLE_MAXY", szSEARCH_ENVELOPE);                }                poUDC->setElement( i+1, *poMacroValue );                CPLDebug( "FMEOLEDB", "Update %s to:\n%s",                           pszDirective, poMacroValue->data() );                poSession->destroyString( poMacroValue );                break;            }        }    }    /* -------------------------------------------------------------------- *//*      Create new reader with desired constraints.                     *//* -------------------------------------------------------------------- */    poReader = poSession->createReader(pszReaderName, FME_FALSE, poUDC);    poSession->destroyStringArray( poUDC );    if( poReader == NULL )    {        CPLFMEError( poSession,                     "Failed to create reader of type `%s'.\n",                     pszReaderName );        return FALSE;    }/* -------------------------------------------------------------------- *//*      Setup constraints applied in open().                            *//* -------------------------------------------------------------------- */    IFMEStringArray     *poParms = poSession->createStringArray();    if( pszAttributeFilter != NULL && strlen(pszAttributeFilter) > 0 )    {        if( EQUALN(pszReaderName,"SDE",3) )            poParms->append( "WHERE" );        else            poParms->append( "WHERE_CLAUSE" );        poParms->append( pszAttributeFilter );    }#ifdef notdef    if( m_poFilterGeom != NULL )    {        char      szSEARCH_ENVELOPE[1024];        OGREnvelope      oEnvelope;        m_poFilterGeom->getEnvelope( &oEnvelope );        sprintf( szSEARCH_ENVELOPE, "%.16f", oEnvelope.MinX );        poParms->append( "SEARCH_ENVELOPE" );        poParms->append( szSEARCH_ENVELOPE );        sprintf( szSEARCH_ENVELOPE, "%.16f", oEnvelope.MinY );        poParms->append( "SEARCH_ENVELOPE" );        poParms->append( szSEARCH_ENVELOPE );        sprintf( szSEARCH_ENVELOPE, "%.16f", oEnvelope.MaxX );        poParms->append( "SEARCH_ENVELOPE" );        poParms->append( szSEARCH_ENVELOPE );        sprintf( szSEARCH_ENVELOPE, "%.16f", oEnvelope.MaxY );        poParms->append( "SEARCH_ENVELOPE" );        poParms->append( szSEARCH_ENVELOPE );    }#endif    for( i = 0; i < poParms->entries(); i++ )    {        CPLDebug( "FMEOLEDB", "openParms[%d] = %s",                   i, (const char *) (*poParms)(i) );    }/* -------------------------------------------------------------------- *//*      Now try to open the dataset.                                    *//* -------------------------------------------------------------------- */    err = poReader->open( pszDataset, *poParms );    if( err )    {        CPLFMEError( poSession,                     "Failed to open dataset `%s' with reader of type `%s'.\n",                     pszDataset, pszReaderName );        return FALSE;    }    poSession->destroyStringArray( poParms );    return TRUE;}/************************************************************************//*                          GetFeatureCount()                           *//************************************************************************/int OGRFMELayerDB::GetFeatureCount( int bForce ){    /*    ** This could be improved by just reading through the FME Features    ** without having to convert to OGRFeatures.  Optimization deferred.    */    return OGRLayer::GetFeatureCount( bForce );}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丰满美乳xxx高潮www| 国产欧美日韩卡一| 欧美在线免费播放| 99国产一区二区三精品乱码| 成人免费看片app下载| 丰满白嫩尤物一区二区| 成人黄色一级视频| www.日韩在线| 日本韩国一区二区三区视频| 在线视频一区二区三| 欧美性生交片4| 91精品国产aⅴ一区二区| 91精品国产综合久久久久| 日韩欧美国产电影| 国产亚洲va综合人人澡精品| 中日韩av电影| 亚洲福利视频一区| 久久99国产精品免费网站| 国产在线精品不卡| 成人高清视频在线观看| 欧美视频一二三区| 精品理论电影在线观看| 欧美国产精品一区二区三区| 亚洲人妖av一区二区| 国产亚洲女人久久久久毛片| 中文字幕中文字幕一区二区| 一区二区三区丝袜| 久久99精品久久久久婷婷| 成人午夜碰碰视频| 欧美老年两性高潮| 国产色产综合产在线视频| 一区二区三区四区在线播放| 久久精品国产成人一区二区三区| 国产成人综合在线播放| 欧美伊人精品成人久久综合97| 欧美xxx久久| 亚洲精品视频在线| 激情欧美一区二区| 国产成人精品午夜视频免费 | 欧美日韩激情一区二区三区| 国产精品嫩草久久久久| 亚洲精品欧美二区三区中文字幕| 不卡一区中文字幕| 亚洲欧美日韩一区| 成人激情文学综合网| 久久精品亚洲精品国产欧美kt∨| 卡一卡二国产精品| 久久久久国产免费免费| 成人sese在线| 亚洲一区影音先锋| 日韩限制级电影在线观看| 国产一区二区免费在线| 中文字幕永久在线不卡| 日本高清无吗v一区| 视频一区在线播放| 日韩免费电影网站| 亚洲欧洲av另类| 97aⅴ精品视频一二三区| 亚洲综合精品久久| 欧美一级专区免费大片| 国产精品 欧美精品| 亚洲欧洲成人av每日更新| 在线播放91灌醉迷j高跟美女| 久久精品99国产精品| 国产精品少妇自拍| 欧美日韩精品福利| 国产a视频精品免费观看| 亚洲人成亚洲人成在线观看图片| 欧美另类一区二区三区| 国产精品亚洲专一区二区三区| 亚洲欧美视频在线观看| 日韩一区二区视频在线观看| av网站免费线看精品| 日韩精品电影在线| 中文字幕精品在线不卡| 欧美性大战久久久久久久蜜臀| 国产真实乱对白精彩久久| 亚洲精品免费播放| 欧美精品一区二区不卡| 91论坛在线播放| 麻豆精品视频在线观看| 中文字幕一区二区日韩精品绯色| 制服丝袜亚洲精品中文字幕| 成人av在线看| 久久99热99| 亚洲一区二区三区四区的| 国产欧美va欧美不卡在线| 欧美日韩一卡二卡三卡| 成人av免费在线播放| 久久精品国产亚洲高清剧情介绍 | 亚洲欧美视频在线观看视频| 久久久久久久久久久电影| 91麻豆精品91久久久久同性| 成人aaaa免费全部观看| 国产综合色在线视频区| 五月天一区二区三区| 综合久久综合久久| 国产精品日日摸夜夜摸av| 日韩一区二区三区电影在线观看 | 色吧成人激情小说| 国产91色综合久久免费分享| 蜜桃av一区二区| 亚洲第一综合色| 有坂深雪av一区二区精品| 亚洲人成在线播放网站岛国| 欧美激情资源网| 久久久久高清精品| 久久综合999| 精品成人免费观看| 日韩欧美国产三级| 欧美草草影院在线视频| 日韩欧美国产三级电影视频| 欧美一级黄色大片| 欧美一级xxx| 欧美成人猛片aaaaaaa| 欧美成人午夜电影| 欧美tickling网站挠脚心| 91精品国产综合久久蜜臀| 欧美一区二区福利在线| 精品国产乱码久久久久久久久 | 男人操女人的视频在线观看欧美 | 欧美欧美午夜aⅴ在线观看| 欧美日韩一区三区四区| 欧美日韩大陆在线| 欧美一区二区三区视频在线观看| 日韩欧美区一区二| 久久综合九色欧美综合狠狠 | 99精品久久只有精品| 99久久亚洲一区二区三区青草| 色综合夜色一区| 欧美午夜一区二区三区| 欧美精品黑人性xxxx| 日韩精品中文字幕一区| 欧美激情一区二区三区蜜桃视频 | 国产女同互慰高潮91漫画| 国产精品久久久久久久浪潮网站| 亚洲视频电影在线| 亚洲成av人片www| 激情综合色综合久久综合| 成人动漫在线一区| 欧美日韩视频不卡| 日韩欧美激情在线| 中文字幕一区二区视频| 日韩和欧美的一区| 处破女av一区二区| 欧美亚洲丝袜传媒另类| 欧美一区三区四区| 亚洲欧洲日韩综合一区二区| 午夜精品久久久久久久久| 国产九九视频一区二区三区| 成人av一区二区三区| 777精品伊人久久久久大香线蕉| 久久免费精品国产久精品久久久久 | 久久精品国产久精国产爱| 成人免费观看av| 制服.丝袜.亚洲.另类.中文| 国产亚洲欧美中文| 亚洲成a人v欧美综合天堂| 日本网站在线观看一区二区三区| 国产精品一线二线三线| 成人高清av在线| 欧美日本国产视频| 久久久久国产精品人| 亚洲一区日韩精品中文字幕| 国产麻豆精品一区二区| 欧美性淫爽ww久久久久无| 久久久国际精品| 青青青爽久久午夜综合久久午夜| 成人午夜视频网站| 精品久久久三级丝袜| 亚洲成av人片一区二区| 成人精品视频一区二区三区 | 国产精品国产精品国产专区不片| 日本欧美肥老太交大片| 色综合久久综合网97色综合| 久久久精品综合| 蜜臀a∨国产成人精品| 日本丶国产丶欧美色综合| 国产欧美精品在线观看| 久久国产精品色| 欧美三级三级三级| 亚洲黄色在线视频| bt欧美亚洲午夜电影天堂| 26uuu色噜噜精品一区| 免费在线观看日韩欧美| 欧美男人的天堂一二区| 玉米视频成人免费看| 一本色道亚洲精品aⅴ| 综合电影一区二区三区| 99re成人在线| 亚洲欧洲色图综合| 99久久精品国产麻豆演员表| 中文字幕av免费专区久久| 国产成人精品亚洲午夜麻豆| 国产欧美一区二区精品性色 | 这里是久久伊人| 日韩精品免费专区| 欧美日韩黄色影视| 午夜免费久久看| 欧美另类高清zo欧美|