[Qgis-developer] URI

Radim Blazek radim.blazek at gmail.com
Wed May 25 03:37:26 EDT 2011


Hi,
I would like to discuss possible change of providers URI format.

Motivation:
- Each provider is using a different way to store additional parameters in URI
- Some providers (WMS) even don't store all parameters in URI and
require extra methods to add a new layer: addRasterLayer(
rasterLayerPath, baseName, providerKey, layers, styles, format, crs )
- provider key is not part of URI, so the current URI is not
sufficient to be used as QMimeData for drag and drop of layers to
legend.

Current URI formats:
OGR: data_source|layer_name
GDAL: file_path
PostGIS, SQLAnywhere, SQLite : space separated list of key=value
pairs, using QgsDataSourceURI
WMS: service URL + set of params which are not in URI
GRASS raster: file path to cellhd
GRASS vector: path_to_vector/layernumber_layertype
GPX: file_path?type=type
Delimited text, Memory: URL - using QUrl

Some possible solutions:
1) minimal:
  - add WMS additional params somehow to URI + parsing in WMS provider
(it is not clear to me why it was not done this way when WMS was
implemented)
  - encode / decode provider key + uri as single string only for drag and drop
2) maximal A:
  - use QUrl for all providers with providers key as scheme
3) maximal B:
  - use modified QgsDataSourceURI (it is not generic, works with set
of known params only) for all params including provider key

Other issues:
  - should it be possible to pass via URI also layer style hints?
  - how the QGIS should recognize layer type of a dropped URI? Should
it be a param in URI or the QGIS should recognize that from a provider
key (asking provider)?
  - what mime type should be used for QGIS URIs?


Radim


More information about the Qgis-developer mailing list