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

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

?? ogrreclayer.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
字號:
/****************************************************************************** * $Id: ogrreclayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  EPIInfo .REC Reader * Purpose:  Implements OGRRECLayer 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 "ogr_rec.h"#include "cpl_conv.h"#include "cpl_string.h"CPL_CVSID("$Id: ogrreclayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                            OGRRECLayer()                             *//*                                                                      *//*      Note that the OGRRECLayer assumes ownership of the passed       *//*      file pointer.                                                   *//************************************************************************/OGRRECLayer::OGRRECLayer( const char *pszLayerNameIn,                           FILE * fp, int nFieldCountIn ){    fpREC = fp;    bIsValid = FALSE;    nStartOfData = 0;    nNextFID = 1;    poFeatureDefn = new OGRFeatureDefn( pszLayerNameIn );    poFeatureDefn->Reference();    nFieldCount = 0;    panFieldOffset = (int *) CPLCalloc(sizeof(int),nFieldCountIn);    panFieldWidth = (int *) CPLCalloc(sizeof(int),nFieldCountIn);/* -------------------------------------------------------------------- *//*      Read field definition lines.                                    *//* -------------------------------------------------------------------- */    int         iField;    for( nFieldCount=0, iField = 0; iField < nFieldCountIn; iField++ )    {        const char *pszLine = CPLReadLine( fp );        int         nTypeCode;        OGRFieldType eFType = OFTString;        if( pszLine == NULL )            return;        if( strlen(pszLine) < 44 )            return;        // Extract field width.         panFieldWidth[nFieldCount] = atoi( RECGetField( pszLine, 37, 4 ) );        // Is this an real, integer or string field?  Default to string.        nTypeCode = atoi(RECGetField(pszLine,33,4));        if( nTypeCode == 12 )            eFType = OFTInteger;        else if( nTypeCode > 100 && nTypeCode < 120 )        {            eFType = OFTReal;        }        else if( nTypeCode == 0 || nTypeCode == 6 || nTypeCode == 102 )        {            if( panFieldWidth[nFieldCount] < 3 )                eFType = OFTInteger;            else                eFType = OFTReal;        }        else            eFType = OFTString;        OGRFieldDefn oField( RECGetField( pszLine, 2, 10 ), eFType );        // Establish field offset.         if( nFieldCount > 0 )            panFieldOffset[nFieldCount]                = panFieldOffset[nFieldCount-1] + panFieldWidth[nFieldCount-1];        if( nTypeCode > 100 && nTypeCode < 120 )        {            oField.SetWidth( panFieldWidth[nFieldCount] );            oField.SetPrecision( nTypeCode - 100 );        }        else if( eFType == OFTReal )        {            oField.SetWidth( panFieldWidth[nFieldCount]*2 );            oField.SetPrecision( panFieldWidth[nFieldCount]-1 );        }        else            oField.SetWidth( panFieldWidth[nFieldCount] );        // Skip fields that are only screen labels.        if( panFieldWidth[nFieldCount] == 0 )            continue;        poFeatureDefn->AddFieldDefn( &oField );        nFieldCount++;    }    nRecordLength = panFieldOffset[nFieldCount-1]+panFieldWidth[nFieldCount-1];    bIsValid = TRUE;    nStartOfData = VSIFTell( fp );}/************************************************************************//*                           ~OGRRECLayer()                           *//************************************************************************/OGRRECLayer::~OGRRECLayer(){    if( m_nFeaturesRead > 0 && poFeatureDefn != NULL )    {        CPLDebug( "REC", "%d features read on layer '%s'.",                  (int) m_nFeaturesRead,                   poFeatureDefn->GetName() );    }        if( fpREC != NULL )        VSIFClose( fpREC );    if( poFeatureDefn )        poFeatureDefn->Release();    CPLFree( panFieldOffset );    CPLFree( panFieldWidth );}/************************************************************************//*                            ResetReading()                            *//************************************************************************/void OGRRECLayer::ResetReading(){    VSIFSeek( fpREC, nStartOfData, SEEK_SET );    nNextFID = 1;}/************************************************************************//*                      GetNextUnfilteredFeature()                      *//************************************************************************/OGRFeature * OGRRECLayer::GetNextUnfilteredFeature(){/* -------------------------------------------------------------------- *//*      Read and assemble the source data record.                       *//* -------------------------------------------------------------------- */    int        nDataLen = 0;    char       *pszRecord = (char *) CPLMalloc(nRecordLength + 2 );    while( nDataLen < nRecordLength )    {        const char *pszLine = CPLReadLine( fpREC );        int         iSegLen;        if( pszLine == NULL )        {            CPLFree( pszRecord );            return NULL;        }        if( *pszLine == 26 /* Cntl-Z - DOS EOF */ )        {            CPLFree( pszRecord );            return NULL;        }        // If the end-of-line markers is '?' the record is deleted.        iSegLen = strlen(pszLine);        if( pszLine[iSegLen-1] == '?' )        {            pszRecord[0] = '\0';            nDataLen = 0;            continue;        }        // Strip off end-of-line '!' marker.         if( pszLine[iSegLen-1] != '!'             && pszLine[iSegLen-1] != '^' )        {            CPLError( CE_Failure, CPLE_AppDefined,                       "Apparent corrupt data line .. record FID=%d",                       nNextFID );            CPLFree( pszRecord );            return NULL;        }        iSegLen--;        if( nDataLen + iSegLen > nRecordLength )        {            CPLError( CE_Failure, CPLE_AppDefined,                       "Too much data for record %d.",                       nNextFID );            CPLFree( pszRecord );            return NULL;        }        strncpy( pszRecord+nDataLen, pszLine, iSegLen );        pszRecord[nDataLen+iSegLen] = '\0';        nDataLen += iSegLen;    }/* -------------------------------------------------------------------- *//*      Create the OGR feature.                                         *//* -------------------------------------------------------------------- */    OGRFeature *poFeature;    poFeature = new OGRFeature( poFeatureDefn );/* -------------------------------------------------------------------- *//*      Set attributes for any indicated attribute records.             *//* -------------------------------------------------------------------- */    int         iAttr;        for( iAttr = 0; iAttr < nFieldCount; iAttr++)    {        const char *pszFieldText =             RECGetField( pszRecord,                          panFieldOffset[iAttr] + 1,                         panFieldWidth[iAttr] );        if( strlen(pszFieldText) != 0 )            poFeature->SetField( iAttr, pszFieldText );    }    /* -------------------------------------------------------------------- *//*      Translate the record id.                                        *//* -------------------------------------------------------------------- */    poFeature->SetFID( nNextFID++ );    m_nFeaturesRead++;    CPLFree( pszRecord );    return poFeature;}/************************************************************************//*                           GetNextFeature()                           *//************************************************************************/OGRFeature *OGRRECLayer::GetNextFeature(){    OGRFeature  *poFeature = NULL;    /* -------------------------------------------------------------------- *//*      Read features till we find one that satisfies our current       *//*      spatial criteria.                                               *//* -------------------------------------------------------------------- */    while( TRUE )    {        poFeature = GetNextUnfilteredFeature();        if( poFeature == NULL )            break;        if( m_poAttrQuery == NULL || m_poAttrQuery->Evaluate( poFeature ) )            break;        delete poFeature;    }    return poFeature;}/************************************************************************//*                           TestCapability()                           *//************************************************************************/int OGRRECLayer::TestCapability( const char * pszCap ){    return FALSE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品是欧美日韩精品| 久久久亚洲精品石原莉奈| 久久99深爱久久99精品| 中文字幕中文字幕一区| 欧美成人欧美edvon| 色偷偷久久一区二区三区| 久久91精品久久久久久秒播| 一个色综合av| 欧美激情中文字幕一区二区| 日韩一区二区麻豆国产| 在线观看国产一区二区| 成人v精品蜜桃久久一区| 精品一区二区三区欧美| 偷偷要91色婷婷| 亚洲伦理在线精品| 中文av一区特黄| 久久蜜桃香蕉精品一区二区三区| 欧美日韩国产另类一区| 色狠狠色狠狠综合| 成人动漫中文字幕| 国产一区二区三区美女| 日本不卡免费在线视频| 亚洲成人在线观看视频| 亚洲黄色片在线观看| 国产精品久久久久久久久搜平片 | 天天色天天爱天天射综合| 综合中文字幕亚洲| 国产片一区二区三区| 26uuu另类欧美亚洲曰本| 欧美一个色资源| 欧美一区二区高清| 91精品国产综合久久精品图片| 在线视频国产一区| 欧美亚洲高清一区二区三区不卡| 91视视频在线直接观看在线看网页在线看| 国产成人亚洲综合a∨猫咪 | 欧美羞羞免费网站| 在线免费av一区| 欧洲色大大久久| 在线观看国产日韩| 欧美美女视频在线观看| 欧美一区二区视频网站| 91精品免费在线观看| 日韩精品一区二区三区视频在线观看| 91精品国产手机| 日韩女优av电影| 久久亚洲精华国产精华液 | 99久久综合色| 99re热视频这里只精品| 色综合久久66| 欧美视频第二页| 欧美一区二区日韩| 精品精品欲导航| 久久久国产午夜精品| 国产日韩欧美综合一区| 国产精品久久久久9999吃药| 国产精品嫩草影院av蜜臀| 一区二区中文视频| 亚洲大片在线观看| 麻豆精品视频在线观看免费| 国产原创一区二区| 99精品视频中文字幕| 欧洲一区在线电影| 日韩视频在线观看一区二区| 久久综合色综合88| 国产精品三级视频| 亚洲韩国精品一区| 九九久久精品视频| av高清久久久| 6080国产精品一区二区| 久久精品在这里| 一区二区三区在线视频免费| 人禽交欧美网站| 国产在线国偷精品免费看| 99精品视频在线免费观看| 欧美顶级少妇做爰| 国产精品免费免费| 日韩精品91亚洲二区在线观看| 国产精品一区二区久久不卡| 91精品1区2区| 精品国产a毛片| 亚洲精品久久久久久国产精华液| 麻豆一区二区三| 91一区在线观看| 精品久久久久久久久久久院品网| 亚洲欧美日韩中文播放 | 欧美男同性恋视频网站| 久久久久国产一区二区三区四区| 亚洲精品一二三四区| 国产在线精品免费| 欧美日韩成人高清| 国产精品国产a级| 黄页网站大全一区二区| 欧美专区亚洲专区| 国产精品免费丝袜| 精品一区二区日韩| 精品视频一区二区三区免费| 国产午夜精品福利| 日本不卡在线视频| 91麻豆蜜桃一区二区三区| 日韩精品专区在线影院观看| 一区二区三区在线视频免费观看 | 99re这里都是精品| 久久久久久久久久久电影| 亚洲福利国产精品| 99久久婷婷国产| 国产免费成人在线视频| 久久精品二区亚洲w码| 欧美亚洲动漫制服丝袜| 国产精品美女www爽爽爽| 黑人精品欧美一区二区蜜桃| 欧美三级蜜桃2在线观看| 亚洲天堂成人网| www.日韩在线| 国产精品美日韩| 国产成人精品三级| 久久伊99综合婷婷久久伊| 秋霞午夜鲁丝一区二区老狼| 在线影视一区二区三区| 亚洲激情欧美激情| 91丝袜呻吟高潮美腿白嫩在线观看| 国产欧美日本一区视频| 国产一区二区三区四区五区美女| 欧美一区二区三区四区久久| 午夜视频在线观看一区二区| 色综合久久久久久久| 国产精品美女久久久久久久网站| 国产一区二区在线观看视频| 日韩欧美国产成人一区二区| 日韩 欧美一区二区三区| 欧美人妖巨大在线| 天堂va蜜桃一区二区三区漫画版| 欧美视频三区在线播放| 性做久久久久久免费观看| 欧美亚洲一区二区三区四区| 一区二区三区在线观看视频| 欧洲一区二区三区在线| 一区二区高清视频在线观看| 在线观看国产91| 午夜伦欧美伦电影理论片| 69久久99精品久久久久婷婷| 日产精品久久久久久久性色| 欧美电影影音先锋| 极品少妇xxxx精品少妇偷拍| 欧美精品一区二区久久久| 国产高清无密码一区二区三区| 欧美激情中文字幕一区二区| 成人av电影在线网| 一区二区免费看| 欧美日本韩国一区| 韩国av一区二区三区在线观看| 精品国产第一区二区三区观看体验| 国产在线看一区| 国产精品女人毛片| 欧美视频你懂的| 美国十次了思思久久精品导航| 久久综合久久综合久久综合| 国产sm精品调教视频网站| 亚洲色图欧美偷拍| 欧美猛男男办公室激情| 蓝色福利精品导航| 国产精品国产三级国产| 欧美日韩精品一区二区三区蜜桃| 美女www一区二区| 国产欧美视频在线观看| 色哟哟一区二区三区| 视频一区欧美精品| 久久九九国产精品| 欧美主播一区二区三区| 精品亚洲欧美一区| 亚洲三级久久久| 日韩一级黄色片| 97久久久精品综合88久久| 日韩av一级片| 国产精品三级av在线播放| 欧美日韩一区二区欧美激情| 国产一区不卡视频| 一区二区在线看| 久久久国产午夜精品| 欧美最猛性xxxxx直播| 国产乱码精品一品二品| 亚洲综合久久av| 久久久精品天堂| 欧美女孩性生活视频| 成人午夜精品在线| 三级欧美韩日大片在线看| 久久久久久久久伊人| 欧美日韩国产首页在线观看| 国产成人午夜精品影院观看视频| 亚洲午夜影视影院在线观看| 久久精品欧美一区二区三区不卡 | 高清在线观看日韩| 五月婷婷激情综合| 国产精品国产自产拍高清av| 51精品国自产在线| 一本色道久久综合狠狠躁的推荐| 国产在线看一区| 日本欧美韩国一区三区| 亚洲黄网站在线观看| 国产精品久久久久久户外露出|