亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
99热精品一区二区| 麻豆国产精品777777在线| 91小宝寻花一区二区三区| 国产精品美女久久久久久久网站| 国产激情视频一区二区在线观看| 久久精品一区二区| av亚洲精华国产精华精华| 亚洲精品美国一| 制服丝袜日韩国产| 国产一区二区三区电影在线观看 | 在线看不卡av| 午夜av区久久| www成人在线观看| 91在线一区二区三区| 亚洲成人动漫av| 久久久久久久久久久黄色| 91视频.com| 久久精品99国产国产精| 最新欧美精品一区二区三区| 欧美日韩中文字幕一区| 国内精品伊人久久久久av一坑| 国产精品视频在线看| 欧美日韩国产精品成人| 国产一区二区福利| 一区二区三区中文在线| 欧美精品一区二区三区蜜桃| 91片在线免费观看| 久久精品99久久久| 一区二区三区国产精华| 久久网站热最新地址| 欧美日韩一区久久| 东方欧美亚洲色图在线| 日韩专区在线视频| 国产精品毛片大码女人| 欧美一区二区福利视频| 91麻豆swag| 国产精品一区二区在线看| 午夜精品福利在线| 国产精品女上位| 精品av久久707| 欧美精品自拍偷拍| 97超碰欧美中文字幕| 国产综合成人久久大片91| 亚洲成人免费在线| 亚洲伦理在线免费看| 久久久久久亚洲综合影院红桃| 欧美区一区二区三区| 色美美综合视频| 成人禁用看黄a在线| 精品一区二区日韩| 亚洲va国产va欧美va观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美一级国产精品| 欧美日韩亚洲国产综合| 色偷偷88欧美精品久久久| 国产成人自拍在线| 精品一区二区免费| 裸体歌舞表演一区二区| 日韩电影免费一区| 午夜视频在线观看一区| 一区二区三区在线免费| 亚洲精品视频免费看| 最新热久久免费视频| 中文字幕亚洲视频| 国产精品电影院| 国产精品另类一区| 国产欧美一区二区三区鸳鸯浴| 精品毛片乱码1区2区3区| 日韩一区二区三区免费观看| 欧美一区二区三区在线电影 | 欧美日韩国产在线播放网站| 色成人在线视频| 欧美亚洲综合一区| 在线视频你懂得一区| 在线一区二区三区四区五区| 色狠狠色狠狠综合| 精品视频一区二区不卡| 欧美日韩在线播放三区| 91精品麻豆日日躁夜夜躁| 这里只有精品电影| 欧美tk—视频vk| 精品国产伦一区二区三区免费| 日韩欧美一级精品久久| 欧美一级在线视频| 精品电影一区二区三区| 久久精品视频在线免费观看| 久久久久久电影| 国产精品欧美一级免费| **性色生活片久久毛片| 亚洲精品中文字幕在线观看| 亚洲福利视频三区| 日本不卡在线视频| 国产在线精品不卡| 成人黄色综合网站| 欧美性生活影院| 日韩一区二区三区视频在线| 久久久高清一区二区三区| 自拍偷自拍亚洲精品播放| 亚洲综合成人在线视频| 美女性感视频久久| 成人精品免费视频| 欧美在线|欧美| 精品999在线播放| 亚洲免费在线视频| 毛片av一区二区| 99久久精品免费| 欧美日韩久久不卡| 久久久精品欧美丰满| 亚洲精品福利视频网站| 蜜臀99久久精品久久久久久软件| 国产91丝袜在线观看| 欧日韩精品视频| 欧美大尺度电影在线| 国产欧美一区视频| 亚洲成av人片在线观看无码| 国产一区二区按摩在线观看| 一本久道中文字幕精品亚洲嫩| 这里只有精品免费| 成人免费小视频| 免费观看日韩av| 一本大道久久精品懂色aⅴ| 精品久久久久一区二区国产| 自拍偷拍欧美精品| 九九热在线视频观看这里只有精品| 99视频在线观看一区三区| 日韩欧美亚洲国产精品字幕久久久| 国产精品天干天干在线综合| 天天综合日日夜夜精品| 春色校园综合激情亚洲| 91精品国产色综合久久不卡电影| 国产精品福利在线播放| 激情综合五月天| 欧美日韩精品综合在线| 亚洲天堂a在线| 国产一区在线观看麻豆| 555夜色666亚洲国产免| 亚洲欧美aⅴ...| 成人教育av在线| 久久精品综合网| 另类小说欧美激情| 欧美美女喷水视频| 亚洲乱码国产乱码精品精小说| 国产二区国产一区在线观看| 日韩三级免费观看| 亚洲国产成人va在线观看天堂| 成人性生交大片免费看在线播放 | 本田岬高潮一区二区三区| 日韩久久免费av| 天天av天天翘天天综合网色鬼国产| av不卡一区二区三区| 国产清纯白嫩初高生在线观看91 | 97久久超碰精品国产| 国产欧美一区二区精品性色| 久久精品国产免费| 欧美一级片在线| 午夜精品福利视频网站| 欧美日韩在线不卡| 亚洲一区二区三区在线看| 91久久线看在观草草青青| 亚洲特黄一级片| 91美女精品福利| 亚洲视频一区在线观看| 91网站在线播放| 亚洲色图欧美偷拍| 91麻豆免费在线观看| 国产精品不卡一区| av亚洲精华国产精华精| 亚洲日本va午夜在线影院| 91免费版在线| 一级做a爱片久久| 欧美三级电影网站| 日日摸夜夜添夜夜添精品视频 | 精品伊人久久久久7777人| 精品国产乱码久久久久久影片| 老司机午夜精品| 精品国产乱码久久久久久1区2区 | 免费高清视频精品| 日韩精品在线一区| 国产精品一区二区在线观看网站| 国产偷国产偷精品高清尤物| 国产精品影视在线| 综合激情成人伊人| 欧美色偷偷大香| 久久99久久精品| 亚洲国产精品激情在线观看| 99久久久免费精品国产一区二区 | 国产精品久久久久影院| 97久久超碰精品国产| 午夜激情一区二区三区| 精品国产乱码久久久久久影片| 国产99久久久久久免费看农村| 中文字幕精品在线不卡| 一本色道**综合亚洲精品蜜桃冫| 亚洲18影院在线观看| xf在线a精品一区二区视频网站| 波多野结衣欧美| 日本强好片久久久久久aaa| 国产无一区二区| 欧美日韩国产综合一区二区三区| 精品影院一区二区久久久|