All-in-one Project QGIS Plugin

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche

This is a software project containing a (potential) plugin about sharing and using a QGIS project file including data layers and symbology (styles).

Often users ("producers") want to share a QGIS project file including possibly many layers (data sources), a related symbology (style/styling) and some common project settings. On the other hand, users ("consumers") want to get a single data source containing the same data and map layer styling.

About

Project Weblinks:

See also QGIS, QGIS-Materialien

Current state and recommendation

Given an existing project you can currently do the following

A. Prerequisites:

  • Given QGIS 2.x is installed.
  • A valid QGIS project with data and symbology you want to share;
  • and where you are legally allowed to do so (note the copyrights!)
  • Check the restrictions given below

A. Preliminary work:

  • Prepare or make sure, there is a single "project directory" which will contain everything to be shared.
  • Make sure, data, SVG files and color ramps are in the "project directory" (probably you want to make a subdirectories for data/, symbology/ etc.).
  • Check if QGIS Project setting have set "Saved paths" to "relative" (to QGIS project file).

B. ... Do the following:

Restrictions:

Recommendations:

Problem Statement

Main use cases are:

  • Producers users want to share a QGIS project including possibly many layers (data sources), a related symbology (style/styling) and some common settings.
  • Consumer users want to get a single data source which contains the same data and map layer styling.

In addition to the main use case, data and symbology currently is handled in QGIS as if there was a one-to-one relationship, meaning one dataset attached to one QGIS instance: A dataset is styled with one symbology using a user-specific project file where symbology files can be anywhere. But in fact, one dataset can be styled with different symbologies - and one symbology can style different datasets of same schema.

Related use cases:

  • Users ("producers") want to share a QGIS symbology which is common to several datasources of same schema. Other users ("consumers") get a new dataset (corresponding to this schema) and want to attach a common QGIS symbology to it.
  • There is a proposal to put all data and related styling info into a single specific GeoPackage file.
  • For sharing and downloading QGIS styles (.qml), QGIS symbols definitions (.xml) and SVG markers there's a GSoC project (see wiki.osgeo.org and @akbargumbira github) which implements a web application to allow users use them in QGIS.

Issues:

  • Data:
    • A map layer source is stored in local files somewhere in a directory.
    • A map layer source is a local or remote database (with credentials).
    • A map layer source is a remote web service which requires credentials.
    • A map layer is a temporary (in-memory) data layer.
  • Styling:
    • SVG files are stored somewhere locally or remote.
    • Color Ramps are stored somewhere locally or remote.
    • Required symbol fonts are installed locally.
  • Others:
    • While some functionality allows to manage changed data paths or styles of a single layer, it's tedious to manage thus when there are dozens layers.
    • A plugin enables or changes a Layer source functionality. There are data resources which require plugins, which are eventually not installed. See e.g. Editable_GeoCSV_QGIS_Plugin GeoCSV.
    • A styling default changed after in a new QGIS version.

Solution

An obvious approach for a QGIS project and data publisher is to put everything - including data, styles and project settings - into one file.

When copying/moving project files to other people, it is necessary to manually collect all required files and update the project file. This is complicated. and it getos even more complicated when working with databases and secured webservices and with style files on different places

See also Martin Dobias' GSoC 2012-Proposal. It's related to the proprietary ArcGIS Layer and ArcGIS Map Packages and the standardized GeoPackage.

Discussion

The user must be able to specify what should be inside the project:

  1. link everything (no zipping, just plain XML as before)
  2. include everything (put all files into zip),
  3. hybrid (put some resources into zip, keep something as a link, e.g. put symbol SVGs into ZIP but keep original links to layers)

Internally the all-in-one projects could work in a fashion similar to ODT from LibreOffice or KMZ from Google Earth: All files required by the projects would be identified and put into a ZIP file (together with the project XML file).