From: <mco...@us...> - 2005-11-10 22:32:31
|
Update of /cvsroot/qgis/qgis/providers/ogr In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8356/providers/ogr Modified Files: Tag: multiple-layers-branch qgsogrprovider.cpp qgsogrprovider.h Log Message: - data provider capabilities(), select(), getNextFeature(), and getProjectionWKT() now accept (or force) use of data provider layer number No loads all SDTS layers without bombing. Except it doesn't draw anything. And it _does_ bomb when you ask for layer properties. Index: qgsogrprovider.cpp =================================================================== RCS file: /cvsroot/qgis/qgis/providers/ogr/qgsogrprovider.cpp,v retrieving revision 1.38.2.12 retrieving revision 1.38.2.13 diff -C2 -d -r1.38.2.12 -r1.38.2.13 *** qgsogrprovider.cpp 9 Nov 2005 20:41:05 -0000 1.38.2.12 --- qgsogrprovider.cpp 10 Nov 2005 22:32:13 -0000 1.38.2.13 *************** *** 459,463 **** ! QString QgsOgrProvider::getProjectionWKT() { #ifdef QGISDEBUG --- 459,463 ---- ! QString QgsOgrProvider::getProjectionWKT(size_t dataSourceLayerNum) { #ifdef QGISDEBUG *************** *** 465,469 **** #endif ! OGRSpatialReference * mySpatialRefSys = imp_->layers[0].ogrLayer->GetSpatialRef(); if (! mySpatialRefSys ) --- 465,470 ---- #endif ! OGRSpatialReference * mySpatialRefSys = ! imp_->layers[dataSourceLayerNum].ogrLayer->GetSpatialRef(); if (! mySpatialRefSys ) *************** *** 1613,1622 **** ! int QgsOgrProvider::capabilities() const { int ability = NoCapabilities; // collect abilities reported by OGR ! if (imp_->layers[0].ogrLayer) // XXX first layer only? { // Whilst the OGR documentation (e.g. at --- 1614,1623 ---- ! int QgsOgrProvider::capabilities(size_t dataSourceLayerNum) const { int ability = NoCapabilities; // collect abilities reported by OGR ! if (imp_->layers[dataSourceLayerNum].ogrLayer) // XXX first layer only? { // Whilst the OGR documentation (e.g. at *************** *** 1627,1631 **** // the #defines we want to test for here. ! if (imp_->layers[0].ogrLayer->TestCapability("RandomRead")) // TRUE if the GetFeature() method works for this layer. { --- 1628,1632 ---- // the #defines we want to test for here. ! if (imp_->layers[dataSourceLayerNum].ogrLayer->TestCapability("RandomRead")) // TRUE if the GetFeature() method works for this layer. { *************** *** 1633,1637 **** } ! if (imp_->layers[0].ogrLayer->TestCapability("SequentialWrite")) // TRUE if the CreateFeature() method works for this layer. { --- 1634,1638 ---- } ! if (imp_->layers[dataSourceLayerNum].ogrLayer->TestCapability("SequentialWrite")) // TRUE if the CreateFeature() method works for this layer. { *************** *** 1639,1643 **** } ! if (imp_->layers[0].ogrLayer->TestCapability("RandomWrite")) // TRUE if the SetFeature() method is operational on this layer. { --- 1640,1644 ---- } ! if (imp_->layers[dataSourceLayerNum].ogrLayer->TestCapability("RandomWrite")) // TRUE if the SetFeature() method is operational on this layer. { *************** *** 1653,1657 **** } ! if (imp_->layers[0].ogrLayer->TestCapability("FastSpatialFilter")) // TRUE if this layer implements spatial filtering efficiently. // Layers that effectively read all features, and test them with the --- 1654,1658 ---- } ! if (imp_->layers[dataSourceLayerNum].ogrLayer->TestCapability("FastSpatialFilter")) // TRUE if this layer implements spatial filtering efficiently. // Layers that effectively read all features, and test them with the *************** *** 1663,1667 **** } ! if (imp_->layers[0].ogrLayer->TestCapability("FastFeatureCount")) // TRUE if this layer can return a feature count // (via OGRLayer::GetFeatureCount()) efficiently ... ie. without counting --- 1664,1668 ---- } ! if (imp_->layers[dataSourceLayerNum].ogrLayer->TestCapability("FastFeatureCount")) // TRUE if this layer can return a feature count // (via OGRLayer::GetFeatureCount()) efficiently ... ie. without counting *************** *** 1672,1676 **** } ! if (imp_->layers[0].ogrLayer->TestCapability("FastGetExtent")) // TRUE if this layer can return its data extent // (via OGRLayer::GetExtent()) efficiently ... ie. without scanning --- 1673,1677 ---- } ! if (imp_->layers[dataSourceLayerNum].ogrLayer->TestCapability("FastGetExtent")) // TRUE if this layer can return its data extent // (via OGRLayer::GetExtent()) efficiently ... ie. without scanning *************** *** 1681,1685 **** } ! if (imp_->layers[0].ogrLayer->TestCapability("FastSetNextByIndex")) // TRUE if this layer can perform the SetNextByIndex() call efficiently. { --- 1682,1686 ---- } ! if (imp_->layers[dataSourceLayerNum].ogrLayer->TestCapability("FastSetNextByIndex")) // TRUE if this layer can perform the SetNextByIndex() call efficiently. { Index: qgsogrprovider.h =================================================================== RCS file: /cvsroot/qgis/qgis/providers/ogr/qgsogrprovider.h,v retrieving revision 1.14.2.4 retrieving revision 1.14.2.5 diff -C2 -d -r1.14.2.4 -r1.14.2.5 *** qgsogrprovider.h 20 Oct 2005 21:13:45 -0000 1.14.2.4 --- qgsogrprovider.h 10 Nov 2005 22:32:13 -0000 1.14.2.5 *************** *** 54,58 **** /** Used to ask the layer for its projection as a WKT string. Implements * virtual method of same name in QgsDataProvider. */ ! QString getProjectionWKT(); /** --- 54,58 ---- /** Used to ask the layer for its projection as a WKT string. Implements * virtual method of same name in QgsDataProvider. */ ! QString getProjectionWKT(size_t dataSourceLayerNum = 0); /** *************** *** 115,119 **** * @param useIntersect Use geos functions to determine the selected set */ ! void select(QgsRect * mbr, bool useIntersect = false, size_t dataSourceLayerNum = 0); /** --- 115,119 ---- * @param useIntersect Use geos functions to determine the selected set */ ! void select(QgsRect * mbr, bool useIntersect, size_t dataSourceLayerNum = 0); /** *************** *** 184,188 **** See the OGRLayer::TestCapability API for details. */ ! int capabilities() const; void setEncoding(const QString& e); --- 184,188 ---- See the OGRLayer::TestCapability API for details. */ ! int capabilities(size_t dataSourceLayerNum = 0) const; void setEncoding(const QString& e); |