57

In my project, I use a lot of geodata from different directories. Now I want to give the QGIS project to a colleague (eg on a CD).

Is it possible to copy the shapes from different directories automatically to one directory?

2
  • 1
    I know this question is very old, but I would be still very interested if there is any option to write all layers into a common folder? Or is there any other "best practice" of handling that? I mean I could always write out the temporary layers directly after creating them and then use them, but...
    – Lenn
    Nov 11, 2020 at 19:35
  • 2
    @Lenn Nowadays the QField export seems to fulfill this use case decently well. It exports layers to GeoPackages. It also allows merging exported data back into the main project.
    – Paul
    Nov 3, 2022 at 18:11

6 Answers 6

49

You're looking for the QConsolidate plugin, which works very well. It will transfer everything to a single directory and rewrite the .QGS project file (an XML file) to point to the new source locations.


QConsolidate is still listed as experimental - you'll have to enable "Show also experimental plugins" in the settings dialog.

However - it works very well. Notes:

  • You must have saved the project you're working on before attempting to consolidate it elsewhere;
  • The output format will be the project (.QGS) file, together with a folder called 'layers' that (surprise!) contains the layers;
  • QConsolidate will convert database layers into shapefiles and rewrite the project file to refer to the new shapefile;
  • While often you may want to share the consolidated project on an external / thumb drive, save it on a local hard drive first as the many write operations made will really slow things down if you try to consolidate directly onto slow media.
0
34

I have just tested the three plugins that attempt to do what you ask on a project file with a range of file based formats. Here are the results:

Plugins tested were:

  • QConsolidate 0.2.1
  • QPackage 1.3
  • relocator 0.9

Tests were run on QGIS 2.18.14 64bit on Windows 10

All three plugins handled shapefiles without problem, moved data into the target directory and created a project that referenced the local copies of the datasets.

QConsolidate

  • FileGDB: not copied or translated (data loss). Project file still references layer
  • Spatialite: translated to SHP
  • Geopackage: copied without translation
  • GeoTiff: copied intact

QPackage

  • FileGDB: translated to SHP
  • Spatialite: translated to SHP
  • Geopackage: translated to SHP
  • GeoTiff: copied intact

relocator

  • FileGDB: translated to SHP, incorrect path in project file
  • Spatialite: translated to SHP, incorrect path in project file
  • Geopackage: translated to SHP, incorrect path in project file
  • GeoTiff: copied intact

Of the three, QPackage appeared to work the best. Database connections and web service layers were not tested.

0
13

QGIS now (3.14+, possibly from 3.10?) has another option for packaging vector layers - the "Package layers" algorithm in Processing. This doesn't save the whole project as a package, but you can save all the styles together with the layers, which takes you much of the way there.

enter image description here

enter image description here

Clicking the 'input layers' options will bring up a list of all the layers in the canvas.

enter image description here

... then choose a location for the outputs.

enter image description here

7

I don't know about a way in QGIS itself, but the project file (.qgs) is just a text file. Therefore a primitive but effective way would be to copy everything manually into one directory, then alter the <datasource></datasource> tags in the .qgs file either using find and replace or a regular expression to point to the new directory.

If you've got a lot of different files/directories, one option would be to automate it in python by searching for each tag in the .qgs file, copying each related file with that name to a directory, and then replacing the .qgs tag with the new directory.

5

There is now also the new relocator plugin. (marked as experimental as well at this moment). Gives you the opportunity to save all layers with the project file into one directory or even in a zip-file.

2

QGis3 Plugin: Project Packager

This QGIS plugin exports a portable project by copying data scattered on storage into a specified folder. When exporting, you can choose to copy the original files or store the data in a single GeoPackage. Note that if there is data that cannot be stored in GeoPackage, storage in GeoPackage will be disabled.

The plugin works well for me.

Coordinate Reference System (CRS) and Mesh Datasets including Datasets and Layer Properties are lost. However, this can be corrected manually.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.