osgEarth 2.1.1

/home/cube/sources/osgearth/src/osgEarthDrivers/feature_ogr/FeatureCursorOGR

Go to the documentation of this file.
00001 /* -*-c++-*- */
00002 /* osgEarth - Dynamic map generation toolkit for OpenSceneGraph
00003  * Copyright 2008-2010 Pelican Mapping
00004  * http://osgearth.org
00005  *
00006  * osgEarth is free software; you can redistribute it and/or modify
00007  * it under the terms of the GNU Lesser General Public License as published by
00008  * the Free Software Foundation; either version 2 of the License, or
00009  * (at your option) any later version.
00010  *
00011  * This program is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  * GNU Lesser General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU Lesser General Public License
00017  * along with this program.  If not, see <http://www.gnu.org/licenses/>
00018  */
00019 #ifndef OSGEARTHFEATURES_FEATURE_CURSOR_OGR
00020 #define OSGEARTHFEATURES_FEATURE_CURSOR_OGR 1
00021 
00022 #include <osgEarthFeatures/Feature>
00023 #include <osgEarthFeatures/FeatureSource>
00024 #include <osgEarthFeatures/Filter>
00025 #include <osgEarthSymbology/Query>
00026 #include <ogr_api.h>
00027 #include <queue>
00028 
00029 using namespace osgEarth;
00030 using namespace osgEarth::Features;
00031 
00032 class FeatureCursorOGR : public FeatureCursor
00033 {
00034 public:
00047     FeatureCursorOGR(
00048         OGRLayerH dsHandle,
00049         OGRLayerH layerHandle,
00050         const FeatureProfile* profile,
00051         const Symbology::Query& query,
00052         const FeatureFilterList& filters );
00053 
00054 public: // FeatureCursor
00055 
00056     bool hasMore() const;
00057     Feature* nextFeature();
00058 
00059 protected:
00060     virtual ~FeatureCursorOGR();
00061 
00062 private:
00063     OGRDataSourceH _dsHandle;
00064     OGRLayerH _layerHandle;
00065     OGRLayerH _resultSetHandle;
00066     OGRGeometryH _spatialFilter;
00067     Symbology::Query _query;
00068     int _chunkSize;
00069     OGRFeatureH _nextHandleToQueue;
00070     osg::ref_ptr<const FeatureProfile> _profile;
00071     std::queue< osg::ref_ptr<Feature> > _queue;
00072     osg::ref_ptr<Feature> _lastFeatureReturned;
00073     const FeatureFilterList& _filters;
00074 
00075 private:
00076     void readChunk();    
00077 };
00078 
00079 
00080 #endif // OSGEARTHFEATURES_FEATURE_CURSOR_OGR
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines