Google Summer of Code 2012

See also Google_Summer_of_Code_2011.

QGIS for Mobile Phone Devices

Proposed by: Pirmin Kalberer and Marco Bernasocchi

Last years GSoC student Marco Bernasocchi did a successful port of the QGIS libraries and the desktop GUI to Android. He made the desktop GUI usable for tablets and added support for the built-in GPS. The goal of this GSoC project is to create a new QGIS GUI specialized for mobile phone devices (maybe using QML would be an interesting option).

Main functionality:

  • Display (local) map data
  • Show current location
  • Digitizing / Editing
  • Adapt Offline Editing plugin
  • (Use providers do allow wfs, wms, postgis,...)
Further functionality
  • web map caching of osm tiles the way gvsig mobile does
  • syncing of qgis projects from the desktop to the mobile device maybe in a way similar to qgis cloud pushing
  • seamless connection/no connection mode

All-in-one Projects

Proposed by: Martin Dobias

Currently QGIS project files are XML files that contain all the project settings and links to resources: map layers, symbols etc. Often it would be useful to put everything (including data of map layers) into one project 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 even more complicated when working with map layers from databases, web services or temporary (in-memory) data.

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). All map layers should be converted to a common file-based format - SpatiaLite/RasterLite database seem to be good candidate. 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)

Implementation is underway (February 2014) by Tobias Schmitz & Rafael Krucker (Geometa Lab HSR ) => .

See also Google Summer of Code 2014

Improvements to Browser

Proposed by: Martin Dobias

From version 1.8 there is an integrated data browser: it can be run either as a separate application (QBrowser) or embedded in QGIS (dock widget), allowing quick access to map layers from local storage, databases or web services in an unified way.

Currently the browser has mainly features for loading map layers. The idea is to extend capabilities of the browser so that it would serve as a manager of any spatial data. There are various possibilities how the browser could be extended, for example:
  • allow dragging of map layers from legend to the browser to copy data to other file format/database
  • add support for further map layer formats - there are formats supported by GDAL/OGR, but no GUI exists to open them
  • asynchronous updates to browser tree: currently the GUI freezes when a big directory is opened and crawled - ideally this should happen in background
  • add file system watching and do automatic update of the browser tree when expanded directories are changed

New Symbology Improvements

Proposed by: Alexander Bruy and Martin Dobias

New symbology is a powerful vector rendering engine that will completely replace original symbology in QGIS 2.0 (right now it coexists with original symbology engine and user is able to switch between them). The purpose of this project is to improve the new symbology in one or more directions:
  • handling of larger collections of symbols: it should be possible to create groups of symbols and organize them in hierarchies (currently only a flat list of symbols is supported). The style manager should have functionality to add/move/rename/delete groups, move/copy symbols between groups and import/export libraries of symbols. The symbol selector then should support easy navigation in the hierarchy. The implementation should use model/view approach to ensure that everything will work smoothly also with hundreds of symbols.
  • usability improvements of symbol selection and properties. When dealing with symbols that contain another symbols, the current implementation spawns series of dialogs. This is sometimes confusing for the user - only one dialog should be used for the selection of symbol (and its properties), without recursively opening more dialogs. Another issue to address is that vector layer symbology is configured only within modal "vector layer properties" dialog. When styling the layer, it is desirable to have a non-modal widget (e.g. dock widget) that would allow changes of symbols on-the-fly.

SVG Repository for Point Symbols and Patterns

Proposed by: Andreas Neumann

There is a need for a central repository (at with symbols contributed by community that are ready to be used in vector layer styling in QGIS. The users should be able to download and upload individual symbols or work with symbol themes (e.g. traffic, geology, etc).

The project would consist of two parts: 1. implement symbol repository in our Django-based web application; 2. create a plugin in Python for seamless download and upload of symbols. Some points to consider:
  • separation of suitable SVG symbols for point symbols/markers and patterns
  • standardized metadata in the header of the SVG symbol, using Dublin Core - potentially multilanguage (e.g. titles/keywords)
  • ability to search for keywords and metadata

Improved Vector Digitizing Tools

Proposed by: Martin Dobias

Quantum GIS has a variety of vector editing tools - from basic tools for capturing of simple shapes to advanced functionality like merging of features. However some features are available only from third-party plugins. It would be good to have this functionality at one place directly in QGIS without the necessity to install additional plugins and with more consistent behavior. Tools that might be added:
  • swap line direction
  • freehand shape capturing
  • expand existing line
  • numerical editing

Another part of the project could be optimization of existing editing capabilities to better handle editing of map layers with large amounts of features.

Python Support in Project Files

Proposed by: Martin Dobias

Creating a plugin in Python is currently the most common way how to extend QGIS functionality. Sometimes it makes sense to add Python scripting just for a particular project - usually when a piece of functionality is expected to work only with concrete data. Right now there are two options how to make use of Python in project-specific customization: 1. actions defined on vector layers, 2. feature form behavior.

This project should add project-wide Python support: a project could include some Python routines that would be executed when the project is loaded/saved. The routines should be able to access QGIS application with the use of the interface in the same way how plugins do, therefore allowing the project to customize the GUI e.g. by adding some toolbar actions or adding a dock widget. There should be also enough focus on security: a project file from someone else may contain malicious code, therefore by default the code should be run only when approved by the user.

Visual GeoReferencing Tool

Proposed by: rduivenvoorde / Richard Duivenvoorde (extended for vector data by Andreas Neumann)

  • While QGIS has a working georeferencing tool, people sometimes ask for a more visually oriented georeferencing tool. What the want, is to load a project with a reference map, then (like current georeferencing tool) open a raster which will be shown (transparent) over/overlaying the map. By visually moving, stretching and turning the raster, a couple of gcp's will be defined. Though this will not be working for higher order transformations, it will be good enough for scans which you only have to rotate and scale.
  • I can help by providing high-res scans of (historical) maps and pointing where they are supposed to come on a map. Not enough into c++ to be helpfull as a technical mentor I'm afraid
  • It would be nice to also transform/georeference vector data (often CAD/DXF files come with a local (unknown) coordinate system that needs to be matched with the projects coordinate system by using similar points in both coordinate systems)
  • Example of how this might work -
  • please feel free to add/change this proposal

Add more backends to the Processing Framework

Proposed by: Paolo Cavallini

  • Last year GSoC produced a Processing Framework plugin0, and added SAGA and OTB to it; it would be good to add more backends:
    • GEOS (replacing fTools)
    • GRASS (replacing current plugin)
    • GDAL (replacing GDALTools)
    • WPS (replacing current plugin)


Make the Processing Framework scriptable and add a workflow builder

Proposed by: Paolo Cavallini

  • adding a graphical tool to put various commands in sequence, and make all the framework scriptable, would add tremendous power to QGIS, making it the most powerful analytical tool available; see [1]


QGIS -> Inkscape (Cartography)

Proposed by: Brylie Oxley

  • Create an extension that would allow QGIS to easily send data directly to Inkscape
  • Inkscape symbology and filters can enhance QGIS cartographic output
  • Inkscape can directly query spatial data (shapefiles, spatial dbs) through QGIS API

QGIS tool for vector data merging

Proposed by: Maris Nartiss

Currently QGIS provides a tool to merge multiple ESRI Shapefile format vector data sets into one (provided by fTools). The enhanced version this tool should provide a ability to merge any two or more QGIS vector data layers into a new one in any of supported formats. It also should provide a graphical interface to define attribute data merging rules. Attribute merging configuration tool should provide:
  • ability to disable copying existing attribute form any source layer to the destination;
  • ability to rename any of existing attributes to a new name in the destination;
  • ability to merge data from different attributes from different source layers into single attribute in the destination layer.

A bonus feature - ability to define result merging overlapping geometries.