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

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

?? ogrdodssequencelayer.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************** * $Id: ogrdodssequencelayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  OGR/DODS Interface * Purpose:  Implements OGRDODSSequenceLayer class, which implements the *           "Simple Sequence" access strategy. * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 2003, 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 "cpl_conv.h"#include "ogr_dods.h"#include "cpl_string.h"CPL_CVSID("$Id: ogrdodssequencelayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                        OGRDODSSequenceLayer()                        *//************************************************************************/OGRDODSSequenceLayer::OGRDODSSequenceLayer( OGRDODSDataSource *poDSIn,                                             const char *pszTargetIn,                                            AttrTable *poOGRLayerInfoIn )        : OGRDODSLayer( poDSIn, pszTargetIn, poOGRLayerInfoIn ){    pszSubSeqPath = "profile"; // hardcode for now.     panSubSeqSize = NULL;    iLastSuperSeq = -1;/* -------------------------------------------------------------------- *//*      What is the layer name?                                         *//* -------------------------------------------------------------------- */    string oLayerName;    const char *pszLayerName = pszTargetIn;    if( poOGRLayerInfo != NULL )    {        oLayerName = poOGRLayerInfo->get_attr( "layer_name" );        if( strlen(oLayerName.c_str()) > 0 )            pszLayerName = oLayerName.c_str();    }            poFeatureDefn = new OGRFeatureDefn( pszLayerName );    poFeatureDefn->Reference();/* -------------------------------------------------------------------- *//*      Fetch the target variable.                                      *//* -------------------------------------------------------------------- */    Sequence *seq = dynamic_cast<Sequence *>(poDS->poDDS->var( pszTargetIn ));    poTargetVar = seq;    poSuperSeq = FindSuperSequence( seq );/* -------------------------------------------------------------------- *//*      X/Y/Z fields.                                                   *//* -------------------------------------------------------------------- */    if( poOGRLayerInfo != NULL )    {        AttrTable *poField = poOGRLayerInfo->find_container("x_field");        if( poField != NULL )            oXField.Initialize( poField, poTargetVar, poSuperSeq );        poField = poOGRLayerInfo->find_container("y_field");        if( poField != NULL )            oYField.Initialize( poField, poTargetVar, poSuperSeq );        poField = poOGRLayerInfo->find_container("z_field");        if( poField != NULL )            oZField.Initialize( poField, poTargetVar, poSuperSeq );    }/* -------------------------------------------------------------------- *//*      If we have no layerinfo, then check if there are obvious x/y    *//*      fields.                                                         *//* -------------------------------------------------------------------- */    else    {        string oTargName = pszTargetIn;        string oSSTargName;        string x, y;        if( poSuperSeq != NULL )            oSSTargName = OGRDODSGetVarPath( poSuperSeq );        else            oSSTargName = "impossiblexxx";        if( poDS->poDDS->var( oTargName + ".lon" ) != NULL             && poDS->poDDS->var( oTargName + ".lat" ) != NULL )        {            oXField.Initialize( (oTargName + ".lon").c_str(), "dds",                                poTargetVar, poSuperSeq );            oYField.Initialize( (oTargName + ".lat").c_str(), "dds",                                poTargetVar, poSuperSeq );        }        else if( poDS->poDDS->var( oSSTargName + ".lon" ) != NULL                  && poDS->poDDS->var( oSSTargName + ".lat" ) != NULL )        {            oXField.Initialize( (oSSTargName + ".lon").c_str(), "dds",                                poTargetVar, poSuperSeq );            oYField.Initialize( (oSSTargName + ".lat").c_str(), "dds",                                poTargetVar, poSuperSeq );        }    }/* -------------------------------------------------------------------- *//*      Add fields for the contents of the sequence.                    *//* -------------------------------------------------------------------- */    Sequence::Vars_iter v_i;    for( v_i = seq->var_begin(); v_i != seq->var_end(); v_i++ )        BuildFields( *v_i, NULL, NULL );/* -------------------------------------------------------------------- *//*      Add fields for the contents of the super-sequence if we have    *//*      one.                                                            *//* -------------------------------------------------------------------- */    if( poSuperSeq != NULL )    {        for( v_i = poSuperSeq->var_begin();              v_i != poSuperSeq->var_end();              v_i++ )            BuildFields( *v_i, NULL, NULL );    }}/************************************************************************//*                       ~OGRDODSSequenceLayer()                        *//************************************************************************/OGRDODSSequenceLayer::~OGRDODSSequenceLayer(){}/************************************************************************//*                         FindSuperSequence()                          *//*									*//*      Are we a subsequence of a sequence?                             *//************************************************************************/Sequence *OGRDODSSequenceLayer::FindSuperSequence( BaseType *poChild ){    BaseType *poParent;    for( poParent = poChild->get_parent();          poParent != NULL;          poParent = poParent->get_parent() )    {        if( poParent->type() == dods_sequence_c )        {            return dynamic_cast<Sequence *>( poParent );        }    }    return NULL;}/************************************************************************//*                            BuildFields()                             *//*                                                                      *//*      Build the field definition or definitions corresponding to      *//*      the passed variable and it's children (if it has them).         *//************************************************************************/int OGRDODSSequenceLayer::BuildFields( BaseType *poFieldVar,                                        const char *pszPathToVar,                                       const char *pszPathToSequence )    {    OGRFieldDefn oField( "", OFTInteger );/* -------------------------------------------------------------------- *//*      Setup field name, including path if non-local.                  *//* -------------------------------------------------------------------- */    if( pszPathToVar == NULL )        oField.SetName( poFieldVar->name().c_str() );    else        oField.SetName( CPLSPrintf( "%s.%s", pszPathToVar,                                     poFieldVar->name().c_str() ) );                                    /* -------------------------------------------------------------------- *//*      Capture this field definition.                                  *//* -------------------------------------------------------------------- */    switch( poFieldVar->type() )    {      case dods_byte_c:      case dods_int16_c:      case dods_uint16_c:      case dods_int32_c:      case dods_uint32_c:        if( pszPathToSequence )            oField.SetType( OFTIntegerList );        else            oField.SetType( OFTInteger );        break;      case dods_float32_c:      case dods_float64_c:        if( pszPathToSequence )            oField.SetType( OFTRealList );        else            oField.SetType( OFTReal );        break;      case dods_str_c:      case dods_url_c:        if( pszPathToSequence )            oField.SetType( OFTStringList );        else            oField.SetType( OFTString );        break;      case dods_sequence_c:      {          Sequence *seq = dynamic_cast<Sequence *>( poFieldVar );          Sequence::Vars_iter v_i;          // We don't support a 3rd level of sequence nesting.          if( pszPathToSequence != NULL )              return FALSE;          // We don't explore down into the target sequence if we          // are recursing from a supersequence.           if( poFieldVar == this->poTargetVar )              return FALSE;          for( v_i = seq->var_begin(); v_i != seq->var_end(); v_i++ )          {              BuildFields( *v_i, oField.GetNameRef(), oField.GetNameRef() );          }      }      return FALSE;      default:        return FALSE;    }/* -------------------------------------------------------------------- *//*      Add field to feature defn, and capture mapping.                 *//* -------------------------------------------------------------------- */    poFeatureDefn->AddFieldDefn( &oField );    papoFields = (OGRDODSFieldDefn **)         CPLRealloc( papoFields, sizeof(void*) * poFeatureDefn->GetFieldCount());    papoFields[poFeatureDefn->GetFieldCount()-1] =         new OGRDODSFieldDefn();    papoFields[poFeatureDefn->GetFieldCount()-1]->Initialize(        OGRDODSGetVarPath(poFieldVar).c_str(), "dds",         poTargetVar, poSuperSeq );        if( pszPathToSequence )        papoFields[poFeatureDefn->GetFieldCount()-1]->pszPathToSequence             = CPLStrdup( pszPathToSequence );    return TRUE;}/************************************************************************//*                           GetFieldValue()                            *//************************************************************************/BaseType *OGRDODSSequenceLayer::GetFieldValue( OGRDODSFieldDefn *poFDefn,                                               int nFeatureId,                                               Sequence *seq ){    if( seq == NULL )        seq = dynamic_cast<Sequence *>(poTargetVar);    if( !poFDefn->bValid )        return NULL;/* ==================================================================== *//*      Fetch the actual value.                                         *//* ==================================================================== *//* -------------------------------------------------------------------- *//*      Simple case of a direct field within the sequence object.       *//* -------------------------------------------------------------------- */    if( poFDefn->iFieldIndex >= 0 && poFDefn->bRelativeToSequence )    {        return seq->var_value( nFeatureId, poFDefn->iFieldIndex );    }    else if( poFDefn->iFieldIndex >= 0 && poFDefn->bRelativeToSuperSequence )    {        return poSuperSeq->var_value( iLastSuperSeq, poFDefn->iFieldIndex );    }/* -------------------------------------------------------------------- *//*      More complex case where we need to drill down by name.          *//* -------------------------------------------------------------------- */    if( poFDefn->bRelativeToSequence )        return seq->var_value( nFeatureId, poFDefn->pszFieldName );    else if( poSuperSeq != NULL && poFDefn->bRelativeToSuperSequence )        return poSuperSeq->var_value( iLastSuperSeq, poFDefn->pszFieldName );    else        return poDataDDS->var( poFDefn->pszFieldName );}/************************************************************************//*                          BaseTypeToDouble()                          *//************************************************************************/double OGRDODSSequenceLayer::BaseTypeToDouble( BaseType *poBT ){    switch( poBT->type() )    {      case dods_byte_c:      {          signed char byVal;          void *pValPtr = &byVal;                        poBT->buf2val( &pValPtr );          return (double) byVal;      }      break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
首页国产欧美久久| 欧美精品vⅰdeose4hd| 国产精品综合网| 精品一区二区av| 久久电影网站中文字幕| 看国产成人h片视频| 久久国产欧美日韩精品| 国产真实乱偷精品视频免| 国产一区二区三区在线观看精品 | 久久午夜电影网| 精品成人免费观看| 久久综合狠狠综合久久综合88| 欧美xxx久久| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩精品久久理论片| 首页综合国产亚洲丝袜| 日韩不卡一二三区| 毛片一区二区三区| 国产精品1024久久| eeuss影院一区二区三区 | 久久久午夜电影| 国产精品视频你懂的| 亚洲精品免费电影| 日本亚洲天堂网| 国产精品影音先锋| 99亚偷拍自图区亚洲| 91黄色免费网站| 欧美电影免费观看高清完整版在 | 大白屁股一区二区视频| 91影院在线免费观看| 欧美在线视频全部完| 日韩视频123| 欧美激情艳妇裸体舞| 亚洲精品写真福利| 蜜桃av噜噜一区| www.66久久| 欧美日韩国产乱码电影| 精品久久国产老人久久综合| 国产精品天美传媒| 五月婷婷色综合| 国产91丝袜在线播放0| 色婷婷精品久久二区二区蜜臂av| 91精品国产一区二区三区香蕉| 久久精品人人做人人爽97| 亚洲乱码一区二区三区在线观看| 日韩精品乱码免费| 顶级嫩模精品视频在线看| 日本久久一区二区三区| 精品少妇一区二区| 亚洲免费资源在线播放| 麻豆成人91精品二区三区| av激情综合网| 精品国产一二三区| 一区二区三区四区激情| 国产一区二区三区| 欧美日韩在线亚洲一区蜜芽| 国产亚洲综合色| 午夜欧美电影在线观看| 成人av影院在线| 日韩欧美国产精品| 亚洲一卡二卡三卡四卡无卡久久| 国产美女在线精品| 欧美久久久久久蜜桃| 综合久久综合久久| 国产精品自产自拍| 欧美一卡2卡三卡4卡5免费| 亚洲精选一二三| 粉嫩绯色av一区二区在线观看| 在线播放/欧美激情| 国产精品白丝在线| 国产在线精品一区二区| 777亚洲妇女| 一区二区欧美在线观看| 不卡的av电影在线观看| 久久综合九色综合欧美98| 日韩在线一区二区| 欧美在线影院一区二区| 欧美国产97人人爽人人喊| 美女性感视频久久| 精品视频一区二区三区免费| 国产精品国产三级国产三级人妇 | 亚洲精品第一国产综合野| 国产老肥熟一区二区三区| 宅男噜噜噜66一区二区66| 亚洲影院理伦片| 日本福利一区二区| 亚洲人成精品久久久久久| 国产91综合网| 久久久国产精品午夜一区ai换脸| 久久国产人妖系列| 欧美一级国产精品| 日本va欧美va精品发布| 欧美日本不卡视频| 亚洲成人免费看| 欧美日韩精品一区二区三区| 亚洲不卡在线观看| 欧美日免费三级在线| 亚洲精品自拍动漫在线| 91麻豆精品视频| 亚洲男人的天堂av| 91福利小视频| 午夜欧美大尺度福利影院在线看| 欧美天堂一区二区三区| 亚洲成人综合网站| 欧美日精品一区视频| 亚洲高清在线视频| 欧美精品一卡二卡| 美日韩黄色大片| 亚洲精品在线免费播放| 国产精品自在欧美一区| 中文字幕不卡在线观看| 白白色亚洲国产精品| 亚洲视频电影在线| 色成年激情久久综合| 一区二区三区av电影| 欧美猛男超大videosgay| 丝袜美腿高跟呻吟高潮一区| 欧美成人精品高清在线播放| 国内成+人亚洲+欧美+综合在线| 久久一区二区三区四区| 成人aaaa免费全部观看| 亚洲一区二区三区四区中文字幕| 欧美放荡的少妇| 国产在线播放一区二区三区| 国产精品区一区二区三| 欧美曰成人黄网| 日韩av在线发布| 精品国产sm最大网站免费看| 国产成人一区在线| 亚洲天堂免费看| 欧美一二三在线| 国产成人在线视频网址| 亚洲色图欧美在线| 欧美剧情片在线观看| 久久66热偷产精品| 亚洲手机成人高清视频| 欧美日韩性生活| 国产最新精品精品你懂的| 中文字幕高清一区| 欧美色爱综合网| 狠狠色丁香久久婷婷综合_中| 国产精品超碰97尤物18| 欧美精品在线观看一区二区| 国产经典欧美精品| 亚洲高清一区二区三区| 久久网站最新地址| 91黄色激情网站| 激情五月婷婷综合网| 亚洲人午夜精品天堂一二香蕉| 51精品视频一区二区三区| 成人精品亚洲人成在线| 日本成人中文字幕| 亚洲欧洲精品成人久久奇米网| 欧美一区二区三级| 99久久精品99国产精品| 老司机精品视频线观看86| 亚洲美女免费视频| 久久奇米777| 欧美日韩一本到| 成人亚洲精品久久久久软件| 偷拍日韩校园综合在线| 国产精品久久久久久久第一福利| 欧美高清dvd| 色就色 综合激情| 国产成人精品综合在线观看| 日韩电影在线观看电影| 亚洲精品国产成人久久av盗摄| 久久青草欧美一区二区三区| 制服丝袜亚洲播放| 一本高清dvd不卡在线观看| 国产毛片一区二区| 午夜欧美在线一二页| 亚洲日本乱码在线观看| 精品国产sm最大网站| 欧美另类变人与禽xxxxx| 色综合夜色一区| 成a人片亚洲日本久久| 久草精品在线观看| 日本不卡123| 亚洲成av人片在www色猫咪| 日韩伦理av电影| 国产精品私房写真福利视频| 日韩精品一区二区三区在线观看 | 972aa.com艺术欧美| 精品一二三四在线| 热久久久久久久| 亚洲综合自拍偷拍| 一区二区中文视频| 国产三级精品视频| 久久免费视频一区| 26uuuu精品一区二区| 日韩天堂在线观看| 91麻豆精品国产91| 欧美日韩一区国产| 欧美午夜在线观看| 91久久精品一区二区三区| 色婷婷综合激情| 色老汉一区二区三区| 欧美亚洲综合在线| 在线观看91视频|