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

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

?? ogrgmllayer.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
字號:
/****************************************************************************** * $Id: ogrgmllayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  OGR * Purpose:  Implements OGRGMLLayer 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_gml.h"#include "cpl_conv.h"#include "cpl_port.h"#include "cpl_string.h"CPL_CVSID("$Id: ogrgmllayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                           OGRGMLLayer()                              *//************************************************************************/OGRGMLLayer::OGRGMLLayer( const char * pszName,                          OGRSpatialReference *poSRSIn, int bWriterIn,                          OGRwkbGeometryType eReqType,                          OGRGMLDataSource *poDSIn ){    if( poSRSIn == NULL )        poSRS = NULL;    else        poSRS = poSRSIn->Clone();        iNextGMLId = 0;    nTotalGMLCount = -1;        poDS = poDSIn;    if ( EQUALN(pszName, "ogr:", 4) )      poFeatureDefn = new OGRFeatureDefn( pszName+4 );    else      poFeatureDefn = new OGRFeatureDefn( pszName );    poFeatureDefn->Reference();    poFeatureDefn->SetGeomType( eReqType );    bWriter = bWriterIn;/* -------------------------------------------------------------------- *//*      Reader's should get the corresponding GMLFeatureClass and       *//*      cache it.                                                       *//* -------------------------------------------------------------------- */    if( !bWriter )        poFClass = poDS->GetReader()->GetClass( pszName );    else        poFClass = NULL;}/************************************************************************//*                           ~OGRGMLLayer()                           *//************************************************************************/OGRGMLLayer::~OGRGMLLayer(){    if( poFeatureDefn )        poFeatureDefn->Release();    if( poSRS != NULL )        poSRS->Release();}/************************************************************************//*                            ResetReading()                            *//************************************************************************/void OGRGMLLayer::ResetReading(){    iNextGMLId = 0;    poDS->GetReader()->ResetReading();}/************************************************************************//*                           GetNextFeature()                           *//************************************************************************/OGRFeature *OGRGMLLayer::GetNextFeature(){    GMLFeature  *poGMLFeature = NULL;    OGRGeometry *poGeom = NULL;    if( iNextGMLId == 0 )        ResetReading();/* ==================================================================== *//*      Loop till we find and translate a feature meeting all our       *//*      requirements.                                                   *//* ==================================================================== */    while( TRUE )    {/* -------------------------------------------------------------------- *//*      Cleanup last feature, and get a new raw gml feature.            *//* -------------------------------------------------------------------- */        if( poGMLFeature != NULL )            delete poGMLFeature;        if( poGeom != NULL )            delete poGeom;        poGMLFeature = poDS->GetReader()->NextFeature();        if( poGMLFeature == NULL )            return NULL;/* -------------------------------------------------------------------- *//*      Is it of the proper feature class?                              *//* -------------------------------------------------------------------- */        // We count reading low level GML features as a feature read for        // work checking purposes, though at least we didn't necessary        // have to turn it into an OGRFeature.        m_nFeaturesRead++;        if( poGMLFeature->GetClass() != poFClass )            continue;        iNextGMLId++;/* -------------------------------------------------------------------- *//*      Does it satisfy the spatial query, if there is one?             *//* -------------------------------------------------------------------- */        if( poGMLFeature->GetGeometry() != NULL )        {            poGeom = OGRGeometryFactory::createFromGML( poGMLFeature->GetGeometry() );            // We assume the createFromGML() function would have already            // reported the error.             if( poGeom == NULL )            {                delete poGMLFeature;                return NULL;            }                        if( m_poFilterGeom != NULL && !FilterGeometry( poGeom ) )                continue;        }        /* -------------------------------------------------------------------- *//*      Convert the whole feature into an OGRFeature.                   *//* -------------------------------------------------------------------- */        int iField;        OGRFeature *poOGRFeature = new OGRFeature( GetLayerDefn() );        poOGRFeature->SetFID( iNextGMLId );        for( iField = 0; iField < poFClass->GetPropertyCount(); iField++ )        {            const char *pszProperty = poGMLFeature->GetProperty( iField );                        if( pszProperty != NULL )                poOGRFeature->SetField( iField, pszProperty );        }/* -------------------------------------------------------------------- *//*      Test against the attribute query.                               *//* -------------------------------------------------------------------- */        if( m_poAttrQuery != NULL            && !m_poAttrQuery->Evaluate( poOGRFeature ) )        {            delete poOGRFeature;            continue;        }/* -------------------------------------------------------------------- *//*      Wow, we got our desired feature. Return it.                     *//* -------------------------------------------------------------------- */        delete poGMLFeature;        poOGRFeature->SetGeometryDirectly( poGeom );        return poOGRFeature;    }    return NULL;}/************************************************************************//*                          GetFeatureCount()                           *//************************************************************************/int OGRGMLLayer::GetFeatureCount( int bForce ){    if( poFClass == NULL )        return 0;    if( m_poFilterGeom != NULL || m_poAttrQuery != NULL )        return OGRLayer::GetFeatureCount( bForce );    else        return poFClass->GetFeatureCount();}/************************************************************************//*                             GetExtent()                              *//************************************************************************/OGRErr OGRGMLLayer::GetExtent(OGREnvelope *psExtent, int bForce ){    double dfXMin, dfXMax, dfYMin, dfYMax;    if( poFClass != NULL &&         poFClass->GetExtents( &dfXMin, &dfXMax, &dfYMin, &dfYMax ) )    {        psExtent->MinX = dfXMin;        psExtent->MaxX = dfXMax;        psExtent->MinY = dfYMin;        psExtent->MaxY = dfYMax;        return OGRERR_NONE;    }    else         return OGRLayer::GetExtent( psExtent, bForce );}/************************************************************************//*                           CreateFeature()                            *//************************************************************************/OGRErr OGRGMLLayer::CreateFeature( OGRFeature *poFeature ){    FILE        *fp = poDS->GetOutputFP();    if( !bWriter )        return OGRERR_FAILURE;    VSIFPrintf( fp, "  <gml:featureMember>\n" );    if( poFeature->GetFID() == OGRNullFID )        poFeature->SetFID( iNextGMLId++ );    VSIFPrintf( fp, "    <ogr:%s fid=\"F%d\">\n",                 poFeatureDefn->GetName(),                poFeature->GetFID() );    // Write out Geometry - for now it isn't indented properly.    if( poFeature->GetGeometryRef() != NULL )    {        char    *pszGeometry;        OGREnvelope sGeomBounds;        pszGeometry = poFeature->GetGeometryRef()->exportToGML();        VSIFPrintf( fp, "      <ogr:geometryProperty>%s</ogr:geometryProperty>\n",                    pszGeometry );        CPLFree( pszGeometry );        poFeature->GetGeometryRef()->getEnvelope( &sGeomBounds );        poDS->GrowExtents( &sGeomBounds );    }    // Write all "set" fields.     for( int iField = 0; iField < poFeatureDefn->GetFieldCount(); iField++ )    {                OGRFieldDefn *poField = poFeatureDefn->GetFieldDefn( iField );        if( poFeature->IsFieldSet( iField ) )        {            const char *pszRaw = poFeature->GetFieldAsString( iField );            while( *pszRaw == ' ' )                pszRaw++;            char *pszEscaped = CPLEscapeString( pszRaw, -1, CPLES_XML );            VSIFPrintf( fp, "      <ogr:%s>%s</ogr:%s>\n",                         poField->GetNameRef(), pszEscaped,                         poField->GetNameRef() );            CPLFree( pszEscaped );        }    }    VSIFPrintf( fp, "    </ogr:%s>\n", poFeatureDefn->GetName() );    VSIFPrintf( fp, "  </gml:featureMember>\n" );    return OGRERR_NONE;}/************************************************************************//*                           TestCapability()                           *//************************************************************************/int OGRGMLLayer::TestCapability( const char * pszCap ){    if( EQUAL(pszCap,OLCSequentialWrite) )        return bWriter;    else if( EQUAL(pszCap,OLCCreateField) )        return bWriter && iNextGMLId == 0;    else if( EQUAL(pszCap,OLCFastGetExtent) )    {        double  dfXMin, dfXMax, dfYMin, dfYMax;        if( poFClass == NULL )            return FALSE;        return poFClass->GetExtents( &dfXMin, &dfXMax, &dfYMin, &dfYMax );    }    else if( EQUAL(pszCap,OLCFastFeatureCount) )    {        if( poFClass == NULL             || m_poFilterGeom != NULL             || m_poAttrQuery != NULL )            return FALSE;        return poFClass->GetFeatureCount() != -1;    }    else         return FALSE;}/************************************************************************//*                            CreateField()                             *//************************************************************************/OGRErr OGRGMLLayer::CreateField( OGRFieldDefn *poField, int bApproxOK ){    if( !bWriter || iNextGMLId != 0 )        return OGRERR_FAILURE;/* -------------------------------------------------------------------- *//*      Enforce XML naming semantics on element name.                   *//* -------------------------------------------------------------------- */    OGRFieldDefn oCleanCopy( poField );    char *pszName = CPLStrdup( poField->GetNameRef() );    CPLCleanXMLElementName( pszName );        if( strcmp(pszName,poField->GetNameRef()) != 0 )    {        if( !bApproxOK )        {            CPLFree( pszName );            CPLError( CE_Failure, CPLE_AppDefined,                       "Unable to create field with name '%s', it would not\n"                      "be valid as an XML element name.",                      poField->GetNameRef() );            return OGRERR_FAILURE;        }        oCleanCopy.SetName( pszName );        CPLError( CE_Warning, CPLE_AppDefined,                   "Field name '%s' adjusted to '%s' to be a valid\n"                  "XML element name.",                  poField->GetNameRef(), pszName );    }    CPLFree( pszName );        poFeatureDefn->AddFieldDefn( &oCleanCopy );    return OGRERR_NONE;}/************************************************************************//*                           GetSpatialRef()                            *//************************************************************************/OGRSpatialReference *OGRGMLLayer::GetSpatialRef(){    return poSRS;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu国产一区二区三区| 99久久久精品免费观看国产蜜| 欧美优质美女网站| 亚洲视频香蕉人妖| 欧洲亚洲国产日韩| 亚洲成av人片一区二区三区| 欧美日韩中文一区| 亚洲成a人v欧美综合天堂下载| 在线欧美日韩国产| 日韩和欧美一区二区三区| 日韩丝袜情趣美女图片| 韩国欧美国产一区| 欧美国产精品一区| 91丨国产丨九色丨pron| 亚洲一二三四区| 91精品国产综合久久婷婷香蕉| 久久国产婷婷国产香蕉| 久久久久久久久久电影| 成人免费福利片| 亚洲电影第三页| 精品国产sm最大网站| 不卡高清视频专区| 图片区小说区国产精品视频| 精品国产乱码久久久久久夜甘婷婷 | av在线综合网| 亚洲h动漫在线| 久久精品一区四区| 91香蕉视频mp4| 日韩在线一区二区| 中文字幕av在线一区二区三区| 91九色02白丝porn| 久久精品久久综合| 亚洲日本欧美天堂| www亚洲一区| 91女厕偷拍女厕偷拍高清| 麻豆一区二区在线| 亚洲精品成人天堂一二三| 精品日韩欧美在线| 在线欧美日韩国产| 懂色av中文一区二区三区| 亚洲一区二区三区不卡国产欧美 | 91麻豆国产福利精品| 日韩电影在线观看一区| 亚洲欧洲精品一区二区精品久久久| 777奇米四色成人影色区| 成人午夜电影久久影院| 美女视频黄a大片欧美| 亚洲婷婷综合色高清在线| 2021中文字幕一区亚洲| 欧美日韩一区二区三区不卡| 粉嫩嫩av羞羞动漫久久久| 麻豆精品视频在线观看| 亚洲一区二区欧美| 国产精品毛片无遮挡高清| 日韩欧美一级特黄在线播放| 欧美影片第一页| av在线综合网| 成人国产免费视频| 狠狠色丁香久久婷婷综合_中| 爽好久久久欧美精品| 亚洲欧洲综合另类| 国产精品久久久久影视| 久久久久国产成人精品亚洲午夜| 91精品午夜视频| 精品1区2区3区| 在线观看视频91| 色激情天天射综合网| www.爱久久.com| www.欧美.com| 成人av网在线| 成人免费va视频| 成人动漫一区二区| 国产成人综合网| 国产成人在线影院| 国产成人亚洲精品狼色在线 | 一区二区高清在线| 一区二区三区精品| 亚洲一区日韩精品中文字幕| 亚洲精选视频免费看| 中文字幕一区二区三区精华液| 欧美高清一级片在线观看| 国产无人区一区二区三区| 久久一二三国产| 国产喂奶挤奶一区二区三区| 国产视频一区二区在线观看| 久久精品亚洲精品国产欧美kt∨| www国产精品av| 久久综合成人精品亚洲另类欧美| 日韩欧美国产综合一区 | 免费一区二区视频| 蜜臀av一级做a爰片久久| 久久av资源站| 国产成人亚洲精品狼色在线| fc2成人免费人成在线观看播放| 成人激情av网| 色婷婷综合激情| 欧美另类z0zxhd电影| 日韩一级大片在线| 国产欧美日韩视频一区二区| 国产精品成人一区二区三区夜夜夜| 一色屋精品亚洲香蕉网站| 亚洲一卡二卡三卡四卡无卡久久| 亚洲成人精品影院| 美女一区二区在线观看| 国产精品一区免费在线观看| 高清不卡一区二区在线| 色婷婷综合久久久中文字幕| 91精品国产欧美一区二区成人| 精品国产91亚洲一区二区三区婷婷| 国产三区在线成人av| 有码一区二区三区| 九一九一国产精品| 99视频热这里只有精品免费| 欧美精品xxxxbbbb| 久久久久成人黄色影片| 亚洲另类在线制服丝袜| 麻豆精品精品国产自在97香蕉 | 国产性色一区二区| 亚洲综合一区二区精品导航| 蜜桃久久av一区| 91蜜桃传媒精品久久久一区二区| 51精品久久久久久久蜜臀| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲午夜免费视频| 国产激情一区二区三区桃花岛亚洲| 色天使久久综合网天天| 久久久久久久综合色一本| 亚洲夂夂婷婷色拍ww47| 国产麻豆精品在线| 欧美视频一区二| 国产精品美女久久久久aⅴ| 亚洲第一福利一区| 成人涩涩免费视频| 日韩欧美在线123| 亚洲精品伦理在线| 国产成人综合网站| 欧美一卡2卡3卡4卡| 一区二区三区在线视频播放| 国产成人免费高清| 日韩欧美国产一区二区三区| 一区二区视频免费在线观看| 国产成人精品一区二| 91精品一区二区三区在线观看| 亚洲欧美日韩国产一区二区三区 | 色激情天天射综合网| 国产亚洲欧美在线| 免费高清视频精品| 欧美日韩在线三区| 一区二区三区四区激情| 波多野结衣在线aⅴ中文字幕不卡| 日韩精品一区二区三区视频播放| 亚洲精品网站在线观看| 成人高清视频在线| 久久免费的精品国产v∧| 琪琪久久久久日韩精品| 欧美亚一区二区| 亚洲人吸女人奶水| 成人黄色在线网站| 国产欧美一区二区三区沐欲| 色爱区综合激月婷婷| 国产精品久久久久久一区二区三区 | 国产精品视频九色porn| 国产一区在线精品| 精品福利视频一区二区三区| 日韩av中文字幕一区二区| 欧美日韩在线观看一区二区| 一区二区三区色| 色综合久久久久久久| 亚洲视频一区在线| 色婷婷av一区| 一二三区精品福利视频| 色婷婷av一区二区三区gif| 一区二区三区视频在线看| 欧美午夜精品一区二区三区| 亚洲综合激情网| 欧美三级欧美一级| 日韩av在线发布| 26uuu另类欧美| 国产经典欧美精品| 中文字幕一区二区三区不卡在线 | 精品中文av资源站在线观看| 精品国产91洋老外米糕| 国产黄人亚洲片| 亚洲欧美在线另类| 日本韩国一区二区三区| 天堂一区二区在线| 欧美成人性福生活免费看| 韩日欧美一区二区三区| 国产日韩av一区| www.亚洲免费av| 亚洲高清在线视频| 欧美一区二区在线看| 国产精品资源在线看| 17c精品麻豆一区二区免费| 在线亚洲一区观看| 免费日本视频一区| 国产拍揄自揄精品视频麻豆| 91美女片黄在线| 欧美aⅴ一区二区三区视频| 国产日韩欧美综合在线|