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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ogrshapelayer.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************** * $Id: ogrshapelayer.cpp 10682 2007-01-23 21:53:38Z warmerdam $ * * Project:  OpenGIS Simple Features Reference Implementation * Purpose:  Implements OGRShapeLayer class. * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 1999,  Les Technologies SoftMap Inc. * * 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 "ogrshape.h"#include "cpl_conv.h"#include "cpl_string.h"#if defined(_WIN32_WCE)#  include <wce_errno.h>#endifCPL_CVSID("$Id: ogrshapelayer.cpp 10682 2007-01-23 21:53:38Z warmerdam $");/************************************************************************//*                           OGRShapeLayer()                            *//************************************************************************/OGRShapeLayer::OGRShapeLayer( const char * pszName,                              SHPHandle hSHPIn, DBFHandle hDBFIn,                               OGRSpatialReference *poSRSIn, int bUpdate,                              OGRwkbGeometryType eReqType ){    poSRS = poSRSIn;    pszFullName = CPLStrdup(pszName);        hSHP = hSHPIn;    hDBF = hDBFIn;    bUpdateAccess = bUpdate;    iNextShapeId = 0;    panMatchingFIDs = NULL;    bCheckedForQIX = FALSE;    fpQIX = NULL;    bHeaderDirty = FALSE;    if( hSHP != NULL )        nTotalShapeCount = hSHP->nRecords;    else         nTotalShapeCount = hDBF->nRecords;        poFeatureDefn = SHPReadOGRFeatureDefn( CPLGetBasename(pszName),                                            hSHP, hDBF );    eRequestedGeomType = eReqType;}/************************************************************************//*                           ~OGRShapeLayer()                           *//************************************************************************/OGRShapeLayer::~OGRShapeLayer(){    if( m_nFeaturesRead > 0 && poFeatureDefn != NULL )    {        CPLDebug( "Shape", "%d features read on layer '%s'.",                  (int) m_nFeaturesRead,                   poFeatureDefn->GetName() );    }    CPLFree( panMatchingFIDs );    panMatchingFIDs = NULL;    CPLFree( pszFullName );    poFeatureDefn->Release();    poSRS->Release();    if( hDBF != NULL )        DBFClose( hDBF );    if( hSHP != NULL )        SHPClose( hSHP );    if( fpQIX != NULL )        VSIFClose( fpQIX );}/************************************************************************//*                            CheckForQIX()                             *//************************************************************************/int OGRShapeLayer::CheckForQIX(){    const char *pszQIXFilename;    if( bCheckedForQIX )        return fpQIX != NULL;    pszQIXFilename = CPLResetExtension( pszFullName, "qix" );    fpQIX = VSIFOpen( pszQIXFilename, "rb" );    bCheckedForQIX = TRUE;    return fpQIX != NULL;}/************************************************************************//*                            ScanIndices()                             *//*                                                                      *//*      Utilize optional spatial and attribute indices if they are      *//*      available.                                                      *//************************************************************************/int OGRShapeLayer::ScanIndices(){    iMatchingFID = 0;/* -------------------------------------------------------------------- *//*      Utilize attribute index if appropriate.                         *//* -------------------------------------------------------------------- */    if( m_poAttrQuery != NULL )    {        CPLAssert( panMatchingFIDs == NULL );        panMatchingFIDs = m_poAttrQuery->EvaluateAgainstIndices( this,                                                                 NULL );    }/* -------------------------------------------------------------------- *//*      Check for spatial index if we have a spatial query.             *//* -------------------------------------------------------------------- */    if( m_poFilterGeom != NULL && !bCheckedForQIX )        CheckForQIX();/* -------------------------------------------------------------------- *//*      Utilize spatial index if appropriate.                           *//* -------------------------------------------------------------------- */    if( m_poFilterGeom && fpQIX )    {        int nSpatialFIDCount, *panSpatialFIDs;        double adfBoundsMin[4], adfBoundsMax[4];        OGREnvelope oEnvelope;        m_poFilterGeom->getEnvelope( &oEnvelope );        adfBoundsMin[0] = oEnvelope.MinX;        adfBoundsMin[1] = oEnvelope.MinY;        adfBoundsMin[2] = 0.0;        adfBoundsMin[3] = 0.0;        adfBoundsMax[0] = oEnvelope.MaxX;        adfBoundsMax[1] = oEnvelope.MaxY;        adfBoundsMax[2] = 0.0;        adfBoundsMax[3] = 0.0;        panSpatialFIDs = SHPSearchDiskTree( fpQIX,                                             adfBoundsMin, adfBoundsMax,                                             &nSpatialFIDCount );        CPLDebug( "SHAPE", "Used spatial index, got %d matches.",                   nSpatialFIDCount );        // Use resulting list as matching FID list (but reallocate and        // terminate with OGRNullFID).        if( panMatchingFIDs == NULL )        {            int i;            panMatchingFIDs = (long *)                 CPLMalloc(sizeof(long) * (nSpatialFIDCount+1) );            for( i = 0; i < nSpatialFIDCount; i++ )                panMatchingFIDs[i] = (long) panSpatialFIDs[i];            panMatchingFIDs[nSpatialFIDCount] = OGRNullFID;            free( panSpatialFIDs );        }        // Cull attribute index matches based on those in the spatial index        // result set.  We assume that the attribute results are in sorted        // order.        else        {            int iRead, iWrite=0, iSpatial=0;            for( iRead = 0; panMatchingFIDs[iRead] != OGRNullFID; iRead++ )            {                while( iSpatial < nSpatialFIDCount                       && panSpatialFIDs[iSpatial] < panMatchingFIDs[iRead] )                    iSpatial++;                if( iSpatial == nSpatialFIDCount )                    continue;                if( panSpatialFIDs[iSpatial] == panMatchingFIDs[iRead] )                    panMatchingFIDs[iWrite++] = panMatchingFIDs[iRead];            }            panMatchingFIDs[iWrite] = OGRNullFID;        }    }    return TRUE;}/************************************************************************//*                            ResetReading()                            *//************************************************************************/void OGRShapeLayer::ResetReading(){/* -------------------------------------------------------------------- *//*      Clear previous index search result, if any.                     *//* -------------------------------------------------------------------- */    CPLFree( panMatchingFIDs );    panMatchingFIDs = NULL;    iMatchingFID = 0;    iNextShapeId = 0;    if( bHeaderDirty )        SyncToDisk();}/************************************************************************//*                           SetNextByIndex()                           *//*                                                                      *//*      If we already have an FID list, we can easily resposition       *//*      ourselves in it.                                                *//************************************************************************/OGRErr OGRShapeLayer::SetNextByIndex( long nIndex ){    // Eventually we should try to use panMatchingFIDs list     // if available and appropriate.     if( m_poFilterGeom != NULL || m_poAttrQuery != NULL )        return OGRLayer::SetNextByIndex( nIndex );    iNextShapeId = nIndex;    return OGRERR_NONE;}/************************************************************************//*                           GetNextFeature()                           *//************************************************************************/OGRFeature *OGRShapeLayer::GetNextFeature(){    OGRFeature  *poFeature = NULL;/* -------------------------------------------------------------------- *//*      Collect a matching list if we have attribute or spatial         *//*      indices.  Only do this on the first request for a given pass    *//*      of course.                                                      *//* -------------------------------------------------------------------- */    if( (m_poAttrQuery != NULL || m_poFilterGeom != NULL)        && iNextShapeId == 0 && panMatchingFIDs == NULL )    {        ScanIndices();    }    /* -------------------------------------------------------------------- *//*      Loop till we find a feature matching our criteria.              *//* -------------------------------------------------------------------- */    while( TRUE )    {        if( panMatchingFIDs != NULL )        {            if( panMatchingFIDs[iMatchingFID] == OGRNullFID )            {                return NULL;            }            poFeature = SHPReadOGRFeature( hSHP, hDBF, poFeatureDefn,                                            panMatchingFIDs[iMatchingFID++] );        }        else        {            if( iNextShapeId >= nTotalShapeCount )            {                return NULL;            }                if( hDBF && DBFIsRecordDeleted( hDBF, iNextShapeId ) )                poFeature = NULL;            else                poFeature = SHPReadOGRFeature( hSHP, hDBF, poFeatureDefn,                                               iNextShapeId );            iNextShapeId++;        }        if( poFeature != NULL )        {            if( poFeature->GetGeometryRef() != NULL )            {                poFeature->GetGeometryRef()->assignSpatialReference( poSRS );            }            m_nFeaturesRead++;            if( (m_poFilterGeom == NULL || FilterGeometry( poFeature->GetGeometryRef() ) )                && (m_poAttrQuery == NULL || m_poAttrQuery->Evaluate( poFeature )) )            {                return poFeature;            }            delete poFeature;        }    }            /*     * NEVER SHOULD GET HERE     */    CPLAssert(!"OGRShapeLayer::GetNextFeature(): Execution never should get here!");}/************************************************************************//*                             GetFeature()                             *//************************************************************************/OGRFeature *OGRShapeLayer::GetFeature( long nFeatureId ){    OGRFeature *poFeature = NULL;    poFeature = SHPReadOGRFeature( hSHP, hDBF, poFeatureDefn, nFeatureId );    if( poFeature != NULL )    {        if( poFeature->GetGeometryRef() != NULL )            poFeature->GetGeometryRef()->assignSpatialReference( poSRS );        m_nFeaturesRead++;            return poFeature;    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品日韩综合在线| 91丝袜美女网| 最好看的中文字幕久久| 欧美女孩性生活视频| 懂色一区二区三区免费观看| 亚洲国产成人av| 欧美国产亚洲另类动漫| 日韩欧美一区二区免费| 91啪九色porn原创视频在线观看| 久久er99热精品一区二区| 成人欧美一区二区三区白人 | 国产不卡视频在线播放| 日韩中文字幕91| 日韩美女精品在线| 久久久久久免费| 日韩视频国产视频| 在线观看亚洲精品视频| 99免费精品在线| 国产精品18久久久久久久网站| 亚洲一区影音先锋| 亚洲日本护士毛茸茸| 国产欧美视频一区二区| 精品裸体舞一区二区三区| 欧美日韩国产综合一区二区 | 91精品国产综合久久精品图片 | 精品免费国产二区三区| 欧美日韩免费在线视频| 91久久精品一区二区二区| 岛国精品一区二区| 国产一区二区在线视频| 麻豆精品一区二区综合av| 亚洲一区二区五区| 一区二区三区美女视频| 国产精品久久一级| 国产精品日产欧美久久久久| 久久精品视频在线免费观看| 精品国产污网站| 日韩欧美国产一二三区| 欧美成人精品福利| 日韩欧美一二三| 精品三级在线观看| 精品国产一区二区精华| 欧美一级日韩免费不卡| 欧美高清激情brazzers| 4438x成人网最大色成网站| 欧洲激情一区二区| 91色.com| 欧美图区在线视频| 制服视频三区第一页精品| 欧美在线免费视屏| 欧美日韩中文字幕精品| 在线成人免费观看| 欧美一级视频精品观看| 精品国产髙清在线看国产毛片| 欧美成人一区二区三区| 久久影院午夜片一区| 中文一区二区在线观看| 日韩伦理电影网| 亚洲高清免费视频| 麻豆精品一区二区三区| 国产白丝精品91爽爽久久 | 欧美二区在线观看| 国产视频在线观看一区二区三区| 国产欧美日韩麻豆91| 国产精品女上位| 亚洲网友自拍偷拍| 久久99久久精品欧美| 成人性视频免费网站| 色偷偷一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 色悠悠久久综合| 欧美老女人第四色| 欧美精品一区二区三区在线播放 | 国产欧美综合在线观看第十页| 国产精品久久午夜| 亚洲va欧美va国产va天堂影院| 青青青爽久久午夜综合久久午夜 | 欧美日韩国产片| 26uuu亚洲综合色| 国产精品不卡在线| 午夜精品久久久久| 国产高清不卡二三区| 色悠悠久久综合| 精品99999| 亚洲三级视频在线观看| 日日摸夜夜添夜夜添精品视频| 国产伦精一区二区三区| 欧美影视一区在线| 久久嫩草精品久久久久| 夜夜夜精品看看| 国产一区二三区| 欧美日韩黄色影视| 中文字幕在线一区免费| 秋霞电影网一区二区| 丰满白嫩尤物一区二区| 欧美福利一区二区| 国产精品久久久久久久第一福利 | 国内外精品视频| 色婷婷综合久久久中文字幕| 欧美精品一区二区在线播放 | 亚洲国产视频一区| 丁香一区二区三区| 日韩免费性生活视频播放| 亚洲人成精品久久久久| 久久精品国产亚洲高清剧情介绍 | 久久久久88色偷偷免费| 亚洲成人在线免费| 91一区二区在线观看| 久久综合狠狠综合久久综合88| 亚洲一区二区三区四区在线| 国产精品99久久久久久似苏梦涵| 欧美日韩国产精选| 日韩美女啊v在线免费观看| 极品少妇一区二区| 337p亚洲精品色噜噜| 一区二区三区日本| a4yy欧美一区二区三区| 精品成人a区在线观看| 丝袜美腿亚洲综合| 91视频免费播放| 欧美激情中文不卡| 国产高清精品久久久久| 日韩精品一区二区在线观看| 亚洲国产精品久久一线不卡| 972aa.com艺术欧美| 亚洲国产精品传媒在线观看| 国产在线播放一区| 日韩免费视频一区| 久久精品二区亚洲w码| 欧美精品xxxxbbbb| 亚洲风情在线资源站| 91国偷自产一区二区三区成为亚洲经典| 国产亚洲欧美一级| 蜜臀a∨国产成人精品| 精品视频在线视频| 亚洲 欧美综合在线网络| 在线观看www91| 亚洲欧美另类久久久精品2019| av一二三不卡影片| 免费成人小视频| 日韩亚洲欧美在线观看| 日产国产欧美视频一区精品| 欧美日韩中文另类| 日韩高清电影一区| 精品入口麻豆88视频| 精品亚洲aⅴ乱码一区二区三区| 91精品国产手机| 日本v片在线高清不卡在线观看| 欧美久久久久久久久| 日韩成人dvd| 精品久久人人做人人爽| 国模娜娜一区二区三区| 国产午夜亚洲精品午夜鲁丝片 | 国产精品一区二区不卡| 国产亚洲精久久久久久| 99久久免费视频.com| 亚洲欧美二区三区| 欧美色综合网站| 青青青爽久久午夜综合久久午夜 | 日韩美女主播在线视频一区二区三区| 日韩成人一级大片| 久久综合九色综合欧美就去吻| 国产精品88av| 亚洲免费在线电影| 在线不卡一区二区| 国产一区不卡精品| |精品福利一区二区三区| 欧美日韩黄色一区二区| 久久国产剧场电影| 国产精品第五页| 69堂国产成人免费视频| 精品在线观看免费| 自拍av一区二区三区| 欧美高清视频一二三区| 懂色av一区二区三区蜜臀| 亚洲欧美国产77777| 精品国产区一区| 91成人在线免费观看| 久久av中文字幕片| 夜夜揉揉日日人人青青一国产精品| 欧美精品色一区二区三区| 国产福利91精品一区| 亚洲成人资源网| 国产精品色噜噜| 欧美一级精品大片| 91最新地址在线播放| 毛片基地黄久久久久久天堂| 亚洲欧洲韩国日本视频| 日韩欧美国产一二三区| 日本道免费精品一区二区三区| 久久精品免费观看| 国产精品资源站在线| 亚洲国产成人av网| 国产精品久久久一区麻豆最新章节| 欧美日韩一区二区在线视频| 风流少妇一区二区| 日本色综合中文字幕| 亚洲欧美电影一区二区| 精品福利二区三区| 欧美一区二区视频网站|