[Qgis-developer] Corrections of QgsOgrProvider implementaion of GDAL 2.0

Mark Johnson mj10777 at googlemail.com
Tue Mar 21 02:34:32 PDT 2017


>
> So if both a layerid and layername, you would prever layerid over
> layername ?

no, the other way around

Default: layername, only when a duplicate layername exists, should the id
be used
Checking for duplicate names is done in subLayers()
- if layername is unique, id will be set to -1 and sent to QgsOgrProvider

QgsOgrProvider would
- use GDALDatasetGetLayer if id >= 0
otherwise
- use GDALDatasetGetLayerByName

To solve the issue of several geometry fields we also need a (optional)
> parameter with the geometry column name.


subLayers() will send the layer name in the 'table_name(field_name)' format

It was only with gdal 1 that GDALDatasetGetLayerByName could not use that
format.
That means the 'table_name(field_name)' format can always be used.

>From a robustness point of view, I think we should be robust to layerid
> being absent from the
> URI (and I'd prefer that when we generate URI, we don't set layerId = -1
> but just remove it)
> since URIs can also been built by users and not only through the UI.

Since it is not a mandatory parameter inside QgsOgrProvider where the
string is being parsed, the default value of -1 will be used.
- so there is no need to store a -1 value in the project.

> We shoud also be robust
> to layername from being absent as well, as done currently.

Yes, also not a mandatory parameter
- at the moment QgisApp::askUserForOGRSublayers removes the layername sent
by, so everything also works without a layername  being sent.

I have started a manual merge into the QGIS 3 version, making sure that the
many changes are not disturbed.

Also all gdal 1 switches and the '>= GDAL_COMPUTE_VERSION(2,0,0)' will be
removed.

So I hope to offer a QGIS 3 pull request in the next few days.

---
I would also like to adapt QgsOgrProvider::ogrWkbGeometryTypeName
- to use QgsWkbTypes::displayString first
and only when not found to check for geometry types not supported by qgis
when needed.

ogrWkbGeometryTypeFromName must remain, since there is no corresponding
function in QgsWkbTypes.

Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20170321/3332756d/attachment.html>


More information about the Qgis-developer mailing list