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

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

?? ogrvrtlayer.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************** * $Id: ogrvrtlayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  OpenGIS Simple Features Reference Implementation * Purpose:  Implements OGRVRTLayer class. * 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_vrt.h"#include "cpl_string.h"#include <string>CPL_CVSID("$Id: ogrvrtlayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $");typedef struct {    OGRwkbGeometryType  eType;    const char          *pszName;} OGRGeomTypeName;static OGRGeomTypeName asGeomTypeNames[] = { /* 25D versions are implicit */    { wkbUnknown, "wkbUnknown" },    { wkbPoint, "wkbPoint" },    { wkbLineString, "wkbLineString" },    { wkbPolygon, "wkbPolygon" },    { wkbMultiPoint, "wkbMultiPoint" },    { wkbMultiLineString, "wkbLineString" },    { wkbMultiPolygon, "wkbPolygon" },    { wkbGeometryCollection, "wkbGeometryCollection" },    { wkbNone, "wkbNone" },    { wkbLinearRing, "wkbLinearRing" },    { wkbNone, NULL }};/************************************************************************//*                            OGRVRTLayer()                             *//************************************************************************/OGRVRTLayer::OGRVRTLayer(){    poFeatureDefn = NULL;    poSrcLayer = NULL;    poSRS = NULL;    bUseSpatialSubquery = FALSE;    iFIDField = -1;    eGeometryType = VGS_Direct;    iGeomField = iGeomXField = iGeomYField = iGeomZField = -1;    pszAttrFilter = NULL;    panSrcField = NULL;    pabDirectCopy = NULL;    bNeedReset = TRUE;    bSrcLayerFromSQL = FALSE;    bSrcClip = FALSE;    poSrcRegion = NULL;}/************************************************************************//*                            ~OGRVRTLayer()                            *//************************************************************************/OGRVRTLayer::~OGRVRTLayer(){    if( m_nFeaturesRead > 0 && poFeatureDefn != NULL )    {        CPLDebug( "VRT", "%d features read on layer '%s'.",                  (int) m_nFeaturesRead,                   poFeatureDefn->GetName() );    }    if( poSRS != NULL )        poSRS->Release();    if( poSrcDS != NULL )    {        if( bSrcLayerFromSQL && poSrcLayer )            poSrcDS->ReleaseResultSet( poSrcLayer );        OGRSFDriverRegistrar::GetRegistrar()->ReleaseDataSource( poSrcDS );    }    if( poFeatureDefn )        poFeatureDefn->Release();    CPLFree( panSrcField );    CPLFree( pabDirectCopy );    CPLFree( pszAttrFilter );    if( poSrcRegion != NULL )        delete poSrcRegion;}/************************************************************************//*                             Initialize()                             *//************************************************************************/int OGRVRTLayer::Initialize( CPLXMLNode *psLTree, const char *pszVRTDirectory ){        if( !EQUAL(psLTree->pszValue,"OGRVRTLayer") )        return FALSE;/* -------------------------------------------------------------------- *//*      Get layer name.                                                 *//* -------------------------------------------------------------------- */    const char *pszLayerName = CPLGetXMLValue( psLTree, "name", NULL );    if( pszLayerName == NULL )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "Missing name attribute on OGRVRTLayer" );        return FALSE;    }    poFeatureDefn = new OGRFeatureDefn( pszLayerName );    poFeatureDefn->Reference();/* -------------------------------------------------------------------- *//*      Figure out the data source name.  It may be treated relative    *//*      to vrt filename, but normally it is used directly.              *//* -------------------------------------------------------------------- */    OGRSFDriverRegistrar *poReg = OGRSFDriverRegistrar::GetRegistrar();    char *pszSrcDSName = (char *) CPLGetXMLValue(psLTree,"SrcDataSource",NULL);    if( pszSrcDSName == NULL )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "Missing SrcDataSource for layer %s.", pszLayerName );        return FALSE;    }    if( atoi(CPLGetXMLValue( psLTree, "SrcDataSource.relativetoVRT", "0")) )    {        pszSrcDSName = CPLStrdup(            CPLProjectRelativeFilename( pszVRTDirectory, pszSrcDSName ) );    }    else    {        pszSrcDSName = CPLStrdup(pszSrcDSName);    }/* -------------------------------------------------------------------- *//*      Try to access the datasource.                                   *//* -------------------------------------------------------------------- */    CPLErrorReset();    poSrcDS = poReg->OpenShared( pszSrcDSName, FALSE, NULL );    if( poSrcDS == NULL )     {        if( strlen(CPLGetLastErrorMsg()) == 0 )            CPLError( CE_Failure, CPLE_AppDefined,                       "Failed to open datasource `%s'.",                       pszSrcDSName );        CPLFree( pszSrcDSName );        return FALSE;    }/* -------------------------------------------------------------------- *//*      Is this layer derived from an SQL query result?                 *//* -------------------------------------------------------------------- */    const char *pszSQL = CPLGetXMLValue( psLTree, "SrcSQL", NULL );    if( pszSQL != NULL )    {        poSrcLayer = poSrcDS->ExecuteSQL( pszSQL, NULL, NULL );        if( poSrcLayer == NULL )        {            CPLError( CE_Failure, CPLE_AppDefined,                      "SQL statement failed, or returned no layer result:\n%s",                      pszSQL );					                  return FALSE;        }        bSrcLayerFromSQL = TRUE;    }/* -------------------------------------------------------------------- *//*      Fetch the layer if it is a regular layer.                       *//* -------------------------------------------------------------------- */    if( poSrcLayer == NULL )    {        const char *pszSrcLayerName = CPLGetXMLValue( psLTree, "SrcLayer",                                                       pszLayerName );                poSrcLayer = poSrcDS->GetLayerByName( pszSrcLayerName );        if( poSrcLayer == NULL )        {            CPLError( CE_Failure, CPLE_AppDefined,                  "Failed to find layer '%s' on datasource '%s'.",                       pszSrcLayerName, pszSrcDSName );            CPLFree( pszSrcDSName );            return FALSE;        }    }            CPLFree( pszSrcDSName );/* -------------------------------------------------------------------- *//*      Do we have a fixed geometry type?  If so use it, otherwise      *//*      derive from the source layer.                                   *//* -------------------------------------------------------------------- */     const char *pszGType = CPLGetXMLValue( psLTree, "GeometryType", NULL );          if( pszGType != NULL )     {         int iType;         for( iType = 0; asGeomTypeNames[iType].pszName != NULL; iType++ )         {             if( EQUALN(pszGType, asGeomTypeNames[iType].pszName,                         strlen(asGeomTypeNames[iType].pszName)) )             {                 poFeatureDefn->SetGeomType( asGeomTypeNames[iType].eType );                 if( strstr(pszGType,"25D") != NULL )                     poFeatureDefn->SetGeomType(                          (OGRwkbGeometryType)                         (poFeatureDefn->GetGeomType() | wkb25DBit) );                 break;             }         }         if( asGeomTypeNames[iType].pszName == NULL )         {             CPLError( CE_Failure, CPLE_AppDefined,                        "GeometryType %s not recognised.",                        pszGType );             return FALSE;         }     }     else     {         poFeatureDefn->SetGeomType(poSrcLayer->GetLayerDefn()->GetGeomType());     }     /* -------------------------------------------------------------------- *//*      For now we copy the schema directly from the source layer.      *//* -------------------------------------------------------------------- */     int iField;     OGRFeatureDefn *poSrcDefn = poSrcLayer->GetLayerDefn();     panSrcField = (int *) CPLMalloc(sizeof(int) * poSrcDefn->GetFieldCount());     pabDirectCopy = (int *) CPLMalloc(sizeof(int)*poSrcDefn->GetFieldCount());     for( iField = 0; iField < poSrcDefn->GetFieldCount(); iField++ )     {         poFeatureDefn->AddFieldDefn( poSrcDefn->GetFieldDefn( iField ) );         panSrcField[iField] = iField;         pabDirectCopy[iField] = TRUE;     }     /* -------------------------------------------------------------------- *//*      Apply a spatial reference system if provided, otherwise copy    *//*      from source.                                                    *//* -------------------------------------------------------------------- */     const char *pszLayerSRS = CPLGetXMLValue( psLTree, "LayerSRS", NULL );     if( pszLayerSRS != NULL )     {         if( EQUAL(pszLayerSRS,"NULL") )             poSRS = NULL;         else         {             OGRSpatialReference oSRS;             if( oSRS.SetFromUserInput( pszLayerSRS ) != OGRERR_NONE )             {                 CPLError( CE_Failure, CPLE_AppDefined,                            "Failed to import LayerSRS `%s'.", pszLayerSRS );                 return FALSE;             }             poSRS = oSRS.Clone();         }     }     else     {         if( poSrcLayer->GetSpatialRef() != NULL )             poSRS = poSrcLayer->GetSpatialRef()->Clone();         else             poSRS = NULL;     }/* -------------------------------------------------------------------- *//*      Handle GeometryField.                                           *//* -------------------------------------------------------------------- */     const char *pszEncoding;     pszEncoding = CPLGetXMLValue( psLTree,"GeometryField.encoding", "direct");     if( EQUAL(pszEncoding,"Direct") )         eGeometryType = VGS_Direct;     else if( EQUAL(pszEncoding,"None") )         eGeometryType = VGS_None;     else if( EQUAL(pszEncoding,"WKT") )         eGeometryType = VGS_WKT;     else if( EQUAL(pszEncoding,"WKB") )         eGeometryType = VGS_WKB;     else if( EQUAL(pszEncoding,"Shape") )         eGeometryType = VGS_Shape;     else if( EQUAL(pszEncoding,"PointFromColumns") )     {         eGeometryType = VGS_PointFromColumns;         bUseSpatialSubquery =              CSLTestBoolean(                 CPLGetXMLValue(psLTree,                                 "GeometryField.useSpatialSubquery",                                "TRUE"));         iGeomXField = poSrcLayer->GetLayerDefn()->GetFieldIndex(             CPLGetXMLValue( psLTree, "GeometryField.x", "missing" ) );         iGeomYField = poSrcLayer->GetLayerDefn()->GetFieldIndex(             CPLGetXMLValue( psLTree, "GeometryField.y", "missing" ) );         iGeomZField = poSrcLayer->GetLayerDefn()->GetFieldIndex(             CPLGetXMLValue( psLTree, "GeometryField.z", "missing" ) );         if( iGeomXField == -1 || iGeomYField == -1 )         {             CPLError( CE_Failure, CPLE_AppDefined,                        "Unable to identify source X or Y field for PointFromColumns encoding." );             return FALSE;         }     }     else     {         CPLError( CE_Failure, CPLE_AppDefined,                    "encoding=\"%s\" not recognised.", pszEncoding );         return FALSE;     }     if( eGeometryType == VGS_WKT          || eGeometryType == VGS_WKB          || eGeometryType == VGS_Shape )     {         const char *pszFieldName =              CPLGetXMLValue( psLTree, "GeometryField.field", "missing" );         iGeomField = poSrcLayer->GetLayerDefn()->GetFieldIndex(pszFieldName);         if( iGeomField == -1 )         {             CPLError( CE_Failure, CPLE_AppDefined,                        "Unable to identify source field '%s' for geometry.",                       pszFieldName );             return FALSE;         }     }                                               /* -------------------------------------------------------------------- *//*      Figure out what should be used as an FID.                       */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频在线免费看| 欧美大片国产精品| 亚洲精品一区二区三区影院| 亚洲欧洲日韩av| 国模无码大尺度一区二区三区| 99久久精品免费看国产免费软件| 欧美一区二区精品久久911| 亚洲人成在线观看一区二区| 精品一区二区三区在线视频| 91黄色小视频| 亚洲精品一二三| 国产精品18久久久久久久久久久久| 欧美日韩第一区日日骚| 亚洲少妇屁股交4| 国产69精品久久777的优势| 日韩一区二区三区视频在线| 欧美日韩第一区日日骚| 成人网男人的天堂| 麻豆国产欧美日韩综合精品二区| 欧美一级精品在线| 黄一区二区三区| 亚洲国产视频一区二区| 555www色欧美视频| 国产一区二区成人久久免费影院 | 中文字幕人成不卡一区| 欧美色大人视频| 日韩欧美亚洲国产另类| 一区二区视频在线看| 国产99精品在线观看| 久久久高清一区二区三区| 九色综合狠狠综合久久| 欧美白人最猛性xxxxx69交| 青青草97国产精品免费观看无弹窗版 | 蜜桃久久久久久久| 91精品国产全国免费观看| 日韩av午夜在线观看| 欧美精品乱码久久久久久| 日韩国产精品久久| 日韩欧美国产一区二区三区| 秋霞电影一区二区| 欧美大黄免费观看| 久久99热99| 中文字幕不卡在线播放| 99re亚洲国产精品| 亚洲一区在线电影| 欧美一级午夜免费电影| 精品中文字幕一区二区小辣椒| 欧美sm美女调教| 高清成人在线观看| 依依成人综合视频| 欧美精品在欧美一区二区少妇| 日韩成人精品在线观看| 国产午夜精品美女毛片视频| 本田岬高潮一区二区三区| 亚洲综合男人的天堂| 欧美一区二区福利在线| 国产精品白丝jk白祙喷水网站| 中文字幕亚洲一区二区av在线| 欧洲一区在线电影| 精品一区二区三区av| 国产精品成人免费精品自在线观看| 91丝袜美腿高跟国产极品老师| 一区二区三区四区不卡视频| 欧美一区二区三区四区久久| 国产精品一区二区三区四区| 一区二区在线观看视频在线观看| 欧美日韩成人在线| 国产一区二区三区四| 一区二区三区精品| 欧美变态凌虐bdsm| 在线影视一区二区三区| 国产精品羞羞答答xxdd| 一区二区三区不卡视频| 日韩视频免费观看高清完整版在线观看| 亚洲黄色片在线观看| 不卡的av网站| 天堂va蜜桃一区二区三区| 国产成人在线视频网址| 欧美精品一二三区| 一级中文字幕一区二区| 国产酒店精品激情| 日韩一级大片在线| 国产欧美日韩在线看| 久久精品国产久精国产| 欧美变态tickle挠乳网站| 久久综合九色综合欧美就去吻| 亚洲影院免费观看| 国产日韩精品一区二区三区在线| 欧美日韩三级视频| 9人人澡人人爽人人精品| 久久爱www久久做| 亚洲高清视频在线| 18欧美亚洲精品| 精品电影一区二区| 欧美精品高清视频| 欧洲精品一区二区| 91蝌蚪国产九色| 成人免费视频视频| 国产老肥熟一区二区三区| 免费国产亚洲视频| 男女男精品网站| 午夜激情综合网| 亚洲午夜电影在线| 亚洲一区电影777| 成人免费在线播放视频| 欧美国产丝袜视频| 国产农村妇女精品| 国产精品免费观看视频| 国产欧美日韩在线| 国产欧美1区2区3区| 久久久久久综合| 久久久久久久久蜜桃| 国产色产综合产在线视频| 亚洲精品一区二区三区蜜桃下载| 欧美不卡激情三级在线观看| 日韩美女一区二区三区四区| 91精品婷婷国产综合久久| 5858s免费视频成人| 欧美一级欧美三级| 日韩美一区二区三区| 免费观看在线综合色| 色综合婷婷久久| 国产一区二区三区在线观看免费| 极品少妇一区二区三区精品视频| 青青国产91久久久久久| 看电视剧不卡顿的网站| 久久国产精品色婷婷| 国产一区999| 波多野结衣中文一区| 色诱亚洲精品久久久久久| 欧美在线高清视频| 7777精品久久久大香线蕉| 精品国产区一区| 国产精品美女一区二区三区 | 国产日韩精品视频一区| 国产欧美一区二区精品性| 亚洲色图欧美激情| 午夜国产精品影院在线观看| 免费精品视频在线| 懂色av噜噜一区二区三区av| 国产精品12区| 精品婷婷伊人一区三区三| 日韩视频免费观看高清完整版在线观看| 亚洲mv在线观看| 韩日精品视频一区| 色就色 综合激情| 欧美日韩国产美女| 日韩视频在线永久播放| 8v天堂国产在线一区二区| 一本色道久久加勒比精品 | 欧美日本国产视频| **性色生活片久久毛片| 色狠狠av一区二区三区| 99re这里只有精品视频首页| 欧美日韩一区二区电影| 久久久久久久久久看片| 亚洲无线码一区二区三区| 久久99国产精品久久| 91无套直看片红桃| 精品日韩99亚洲| 亚洲综合丁香婷婷六月香| 黄色资源网久久资源365| 在线观看三级视频欧美| 久久免费看少妇高潮| 亚洲3atv精品一区二区三区| 国产69精品久久久久毛片 | 粉嫩av一区二区三区在线播放 | 99久久婷婷国产综合精品| 欧美一区二区三区视频免费| 中文字幕在线一区免费| 蜜臀久久99精品久久久画质超高清| 成人开心网精品视频| 日韩一区二区精品在线观看| 《视频一区视频二区| 国产精品香蕉一区二区三区| 3751色影院一区二区三区| 亚洲欧美激情视频在线观看一区二区三区| 秋霞电影网一区二区| 欧美性生活一区| 亚洲色图另类专区| a级精品国产片在线观看| 久久久国产午夜精品 | 日韩免费观看高清完整版| 一区二区三区不卡视频| eeuss鲁一区二区三区| 久久先锋影音av鲁色资源| 免费成人在线网站| 在线播放/欧美激情| 亚洲大片免费看| 欧美在线看片a免费观看| 亚洲精品视频一区| 91在线观看高清| 亚洲欧洲日本在线| 99这里只有久久精品视频| 国产日产欧美一区二区三区| 国产一区二区三区高清播放| 欧美精品一区二区三区一线天视频 | 91捆绑美女网站| 一区二区三区在线视频观看| 日本乱人伦aⅴ精品|