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

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

?? 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;    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米亚洲午夜久久精品| 丰满亚洲少妇av| 成人污污视频在线观看| 欧美综合天天夜夜久久| 久久久久久亚洲综合影院红桃| 亚洲午夜在线视频| 狠狠色丁香久久婷婷综合_中| 91激情五月电影| 国产精品免费aⅴ片在线观看| 视频一区二区欧美| 99久久99久久久精品齐齐| 久久这里只精品最新地址| 亚洲1区2区3区4区| 色综合久久综合中文综合网| 国产日产精品一区| 国产一区高清在线| 日韩欧美一二区| 天天操天天干天天综合网| 91免费视频网| 18成人在线观看| 国产99久久久国产精品潘金网站| 日韩你懂的在线观看| 日韩福利视频导航| 欧美日韩在线直播| 一区二区三区精品视频在线| 丁香另类激情小说| 国产精品丝袜91| 国产成人亚洲综合a∨猫咪| 日韩欧美国产麻豆| 久久精品国产成人一区二区三区| 91精品国产乱码久久蜜臀| 偷拍日韩校园综合在线| 欧美日韩精品专区| 日韩av网站在线观看| 日韩三级中文字幕| 捆绑调教美女网站视频一区| 欧美一区二区在线不卡| 青青草原综合久久大伊人精品优势 | 成人美女视频在线看| 中文字幕av资源一区| 成人免费看的视频| ...av二区三区久久精品| 色偷偷一区二区三区| 一区二区三区四区高清精品免费观看 | 久久久91精品国产一区二区精品 | 国产免费成人在线视频| 国产成人免费av在线| 亚洲国产成人私人影院tom| 99视频一区二区| 亚洲一卡二卡三卡四卡五卡| 在线国产电影不卡| 青青草视频一区| 欧美激情在线观看视频免费| 91视频你懂的| 日韩国产在线一| 久久久三级国产网站| 成av人片一区二区| 亚洲午夜久久久| 7777精品伊人久久久大香线蕉经典版下载| 日韩和欧美的一区| 国产性做久久久久久| 91影院在线观看| 日韩—二三区免费观看av| 久久久久久久性| 欧美唯美清纯偷拍| 精品一区二区三区日韩| 国产精品久久久久久久久久久免费看| 色哟哟亚洲精品| 另类成人小视频在线| 亚洲色图第一区| 555夜色666亚洲国产免| 成人一区二区三区| 天天色综合天天| 自拍偷拍亚洲综合| 精品国产乱码久久久久久闺蜜| 成人高清视频在线观看| 青青青爽久久午夜综合久久午夜 | 欧美不卡一区二区三区四区| www.成人网.com| 日韩中文字幕不卡| 中文字幕中文乱码欧美一区二区 | 色狠狠一区二区| 狠狠久久亚洲欧美| 一区二区视频在线| 国产欧美日韩在线| 91精品麻豆日日躁夜夜躁| 高清成人免费视频| 老鸭窝一区二区久久精品| 亚洲尤物视频在线| 国产精品毛片高清在线完整版| 91精品视频网| 欧美色综合久久| 国产91精品一区二区麻豆亚洲| 热久久国产精品| 亚洲一区二区三区中文字幕| 欧美国产一区在线| 精品久久久久久久一区二区蜜臀| 在线精品视频免费播放| 99九九99九九九视频精品| 国产一区二区三区蝌蚪| 欧美aaaaa成人免费观看视频| 一区二区三区国产精品| 国产精品日韩精品欧美在线| 久久综合av免费| 精品99一区二区三区| 欧美一区二区三区在线| 8v天堂国产在线一区二区| 色哟哟一区二区| 91在线精品一区二区| 9色porny自拍视频一区二区| 国产成人在线视频网址| 国产精品一区二区男女羞羞无遮挡| 蜜臀av国产精品久久久久 | 在线成人av影院| 欧美日韩国产影片| 日本电影亚洲天堂一区| 日本道在线观看一区二区| 欧美顶级少妇做爰| 欧美日本一道本| 67194成人在线观看| 91精品蜜臀在线一区尤物| 91精品国产色综合久久| 亚洲精品在线电影| 久久综合成人精品亚洲另类欧美| 久久久影院官网| 国产肉丝袜一区二区| 国产清纯白嫩初高生在线观看91| 中文字幕乱码日本亚洲一区二区 | 亚洲动漫第一页| 亚洲一区二区三区四区五区中文 | 国产馆精品极品| 成人福利视频网站| 91麻豆国产福利精品| 欧美日韩精品一区二区天天拍小说| 欧美色综合久久| 日韩欧美一级二级三级| 国产欧美精品一区二区色综合| 中文天堂在线一区| 亚洲精品国产a| 日本亚洲最大的色成网站www| 麻豆久久一区二区| 成人免费不卡视频| 欧美日韩一区二区三区四区 | 8v天堂国产在线一区二区| 精品剧情v国产在线观看在线| 日本一区二区三区免费乱视频| 伊人婷婷欧美激情| 久久99久久99精品免视看婷婷| 成人性生交大合| 欧美高清性hdvideosex| 久久久久久久久久久久久夜| 亚洲免费av在线| 男人的j进女人的j一区| 国产91丝袜在线播放九色| 欧美视频日韩视频在线观看| 久久奇米777| 亚洲一区二区三区爽爽爽爽爽| 久久国产综合精品| 色综合久久中文字幕| 日韩精品一区二区在线| 亚洲欧美偷拍三级| 韩国一区二区三区| 欧美乱妇15p| 国产精品久线观看视频| 蜜桃视频一区二区三区 | 欧美一区二区三区免费在线看| 欧美经典一区二区| 天天av天天翘天天综合网| 成人免费看黄yyy456| 欧美草草影院在线视频| 香蕉av福利精品导航| 成人av网址在线观看| 久久精品夜色噜噜亚洲a∨| 午夜精品久久久久久久99水蜜桃| 成人激情av网| 国产亚洲欧洲997久久综合| 日本欧美一区二区在线观看| 色综合天天综合色综合av| 久久久久亚洲综合| 久久狠狠亚洲综合| 91 com成人网| 亚洲高清不卡在线观看| 91视频国产资源| 自拍偷拍国产亚洲| av激情综合网| 国产精品丝袜在线| 成人黄色电影在线 | 久久久综合精品| av亚洲精华国产精华精| 精品久久人人做人人爽| 性做久久久久久久免费看| 在线这里只有精品| 国产精品色哟哟| 成人在线视频首页| 久久久噜噜噜久久人人看| 国产激情一区二区三区桃花岛亚洲| 欧美日韩国产一级二级| 一区av在线播放| 欧美色综合影院| 一区二区三区四区不卡视频|