10 Commits

Author SHA1 Message Date
Nyall Dawson
b0bc763475 Bump minimum GDAL version to 2.0, remove old version #ifdefs 2017-01-03 15:10:28 +10:00
Even Rouault
a5a18c2eb1 [OGR provider] Make feature iterator work on GeometryCollection sublayers
When trying to reproduce http://hub.qgis.org/issues/10485, I noticed a regression.
Now attribute table no longer shows features with OGR GeometryCollection.

Fixes also issues where sublayer geometry type is too strict regarding 2D vs 2.5D
geometry types.

Fixes #15675
2016-10-07 13:42:05 +02:00
Nyall Dawson
d49b656055 Permantly convert python tests to python 3 2016-09-21 09:12:54 +10:00
Matthias Kuhn
bb79d13e82 Remove deprecated Qgis::WKBType and API cleanup (#3325)
* Remove deprecated Qgis::WKBType and API cleanup

Renames QgsWKBTypes to QgsWkbTypes

Replaces usage of the enums:

* Qgis::WKBType with QgsWkbTypes::Type
* Qgis::GeometryType with QgsWkbTypes::GeometryType

Their values should be forward compatible (a fact that was already
explited up to now by casting between the types)

Renames some SSLxxx to SslXxx and URIxxx to UriXxx

* Fix build warnings and simplify type handling

* Add a fixer to rewrite imports

* The forgotten rebase conflictThe forgotten rebase conflicts

* QgsDataSourcURI > QgsDataSourceUri

* QgsWKBTypes > QgsWkbTypes

* Qgis.WKBGeom > QgsWkbTypes.Geom

* Further python fixes

* Guess what... Qgis::wkbDimensions != QgsWkbTypes::wkbDimensions

* Fix tests

* Python 3 updates

* [travis] pull request caching cannot be disabled

so at least use it in r/w mode

* Fix python3 print in plugins
2016-08-04 09:10:08 +02:00
Nyall Dawson
bd7d913379 Refine QgsFeature geometry getters/setters
All pointer based methods have been removed.

Now we have only:

  void setGeometry( const QgsGeometry& geom )

and

  QgsGeometry geometry() const

Benefits include avoiding a whole lot of tricky pointer lifetime
issues, potential memory leaks, and finally closing #777, which
has survived for over 9 years!...

Impacts on PyQGIS code:
- no more need for the messy
  g = QgsGeometry( feature.geometry() )
  workaround, just use g = feature.geometry() instead
- IMPORTANT: you can no longer test whether a feature has geometry
 using `if f.geometry():`, since QgsFeature::geometry() will
 *always* return an object. Instead, use
 `if not f.geometry().isEmpty():`, or preferably the new method
 `if not f.hasGeometry():`

Fix #777
2016-08-01 16:25:46 +10:00
Even Rouault
2d825bcdf0 [OGR provider] Make sure to release dangling connections on provider closing
Fixes #15137
2016-06-30 17:09:02 +02:00
Nyall Dawson
4080aad0ee [ogr] Read GPX elevation values as geometry Z values 2016-06-27 19:34:28 +10:00
Even Rouault
22dfd764eb [OGR provider] Avoid considering mix of Polygon and CurvePolygon as 2 sublayers
Fixes #15066
2016-06-18 19:21:10 +02:00
Even Rouault
3b65568c73 [OGR provider] Improve detection of layer geometry type
When a OGR layer is of geometry type "unknown", we use the
geometry of the first feature to guess the geometry type. But
if this feature has no geometry, then we assume that we have no
geometry for the whole layer. This is a bit extreme. Let us
allow to probe a few features before giving up.

Fixes #15065
2016-06-18 18:36:47 +02:00
Even Rouault
dc18b5b36b [BUGFIX / FEATURE] [OGR] Allow concurrent edition of Shapefiles and Tabfiles in QGIS & MapInfo
- Closes https://hub.qgis.org/issues/14378
- Adds new virtual methods in QgsDataProvider(): enterUpdateMode() and leaveUpdateMode()
  and implement them in the OGR provider. Limited to shapefiles and tabfiles
- Implements QgsOGRProvider:reloadData()
- Robustify OGR provider methods so they don't crash if dataset re-opening fails.
2016-05-04 22:00:30 +02:00