Related Plugins and Tags

QGIS Planet

Maps from memory

I came across this nice post about maps from memory – its a fun exercise and is quite revealing about how we perceive place & space.

Cuba

pixelstats trackingpixel

Video tutorial #2: Delimited Text Plugin

In this tutorial I demonstrate the QGIS  delimited text plugin, including how to load geometries from Well Known Text (WKT) descriptions rather than simple x,y values. This means that you can load non-point geometries from a text file now too. For more information on the WKT, wikipedia has a nice article.

pixelstats trackingpixel

A great guide to the new web

I came across this beautiful guide to the new web called ‘20 Things I Learned‘. It’s published by the Google Chrome team and it’s a really great resource if you are trying to introduce someone to all the jargon that surrounds our online life in a friendly way.

20 Things I Learned

20 Things I Learned

pixelstats trackingpixel

kCube Developer Poll Update

We still have a few days left to vote on what you would like the kCube Developer time to be spent on. Here is what the poll is looking like thus far. Go along and cast your vote if you haven’t already done so!

KCube developer poll status

KCube developer poll status

pixelstats trackingpixel

TanBIF Biodiversity Workbench

This month we have been wrapping up the work we have been doing for GBIF – the Global Biodiversity Information Facility. The aim of the project was to create a user friendly plugin for QGIS that provides openModeller functionality from within the QGIS environment. In addition, we implemented various other tools to enable Biodiversity Informatics activities to be carried out within QGIS.  Some of these tools have made their way into QGIS trunk, such as the new raster calculator tool.

It’s quite interesting actually that the reason I started hacking with QGIS in the first place was that I wanted to be able to visualise ecological niche models in QGIS. One of the first things I did when support was added for C++ plugins was to create a simple openModeller plugin. That work was shelved in favour of creating the openModeller Desktop application as we wanted a richer, niche modelling centric environment. So it was something of a return to origin to be reimplementing openModeller as a plugin. This time around the plugin provides much richer functionality (including the ability to project models into different climate scenarios) and provides a more natural way for a GIS user to embark on their first steps into the world of ecological niche modelling.

The installer we created is for Windows, and is based on the 1.6 installer, with some changes from the development version of QGIS included and extra tools and plugins bundled in. We have made a series of training videos to accompany the software (see below) – you may have seen them popping up in my YouTube channel.

The first video shows how to perform the basic installation and enable the openModeller plugin.

The second video shows how to run an ecological niche model in the most basic way.

The third video shows how to use layersets to project the niche model into a future climate scenario.

The final video shows how to use the raster calculator to produce a predicted change map between present and future scenarios.

The sample data used in the videos can be downloaded here (its around 14mb). The installer itself is available here:

http://linfiniti.com/downloads/QGIS-17-Dec-2010-TZ-Setup.exe

It’s around 105mb to download.

This is a first release of the software and we welcome you to try it out and let us know if you encounter any issues.

I would like to thank GBIF for funding this project and Costech / TanBIF for hosting us on our visits to Dar es Salaam. We had a great time doing this work and look forward to integrating more tools and training more people to use it further down the line!

Attendees on our training course in November 2010

Attendees on our training course in November 2010

pixelstats trackingpixel

Video tutorial #1: Creating a custom railway style

Here is the first in a (neverending?) series of screencasts I plan to make showing you how to do common tasks in FOSSGIS and QGIS. If you have requests for further tutorials let me know what you are looking for in the comments below. Enjoy!

Note:Just an update from Martin Dobias (author of the functionality I have demonstrated in the above video) that you don't need to be using trunk to do what I demonstrate in the video 1.5 or 1.6 should work fine too. See comments below. Thanks Martin!

A workflow for creating beautiful relief shaded dems using GDAL

Sometimes I create hillshades using the QGIS hillshade plugin and then overlay the original DEM over it. I set the DEM to have a false colour pallette and set it to be semi-transparent to produce something like this:

Typical usage of a hillshade with false colour overlay

That is all well and good but a bit impractical. It would be much nice to have the colour pallette permanetly assigned to the hillshade. Also I want to be able to clip and mask the resulting raster to the boundary specified in a shapefile. Fortunately, GDAL provides all the tools you need to make this happen. There are already some nice articles (like this one) that describe parts of this workflow but I am writing this because I wanted to note the additional steps that I took to make this work well for me.

Before you begin

Before you begin you should have:

  1. a raster containing digital elevation data (DEM) - in my case its called 'alt.tif'
  2. a vector layer (typically a shapefile) containing the area of interest for your final product - in my case its called 'tanzania.shp'

Create the hillshade image

The first thing we need to do is generate a hillshade. There is a nice python plugin for doing this in QGIS, you can do it in GRASS using the QGIS-GRASS plugin. But in this article I'm going for an all-GDAL approach so we will be using the handy **gdaldem** command line application.  I won't be explaining the parameters I have used here as they are well explained in the gdaldem manual pages.

So to create our hillshade we do something like this:

::
gdaldem hillshade alt.tif shade.tif -z 5 -s 111120 -az 90

Which will produce something like this: colorbrewer would be a good place to start if you want to learn more.  Another favourite site of mine is colourlovers.com and for this tutorial I decided to use a pallette from there to see how it would turn out.

Once you have selected a suitable colour pallette (around 5 or 6 colour classes should do it), the next thing you need to do is get some information about the range of values contained in your DEM. Once again you can easily point and click your way to this in QGIS, but here is the way to get it in gdal from the command line:

::
gdalinfo -mm alt.tif

The resulting output includes the computed min/max for Band 1 - which is what we are after:

::
Band 1 Block=1334x3 Type=UInt16, ColorInterp=Gray
Computed Min/Max=1.000,5768.000 NoData Value=65535

Ok so our minimum height is 1m and maximum is 5768m - Tanzania is the home of Kilimanjaro after all! So lets split that range up into 5 classes to match the 'Landcarpet Europe' colourlover pallette I selected. I set nearly white as an additional colour for the highest altitude range.

::
65535 255 255 255 5800 254 254 254 3000 121 117 10 1500 151 106 47 800 127 166 122 500 213 213 149 1 218 179 122

The value in the first column is the base of the scale range. The subsequent values are RGB triplets for that range. I saved this as a text file called 'ramp.txt' in the same directory as my 'alt.tiff' dataset. You will notice that I made the value ranges closer together at lower altitudes and wider appart at higher altitudes. You may want to experiment a little to get pleasing results - especially if you have a relatively small number of high lying terrain pixels and the rest confined to lower lying areas.

Also note that I assigned the highest terrain 'nearly white' so that I could reserve white (RGB: 255 255 255) for the nodata value (65535) in this dataset. We will use the fact that white is only used for nodata to our advantage when we do a clip further on in these instructions.

Ok now we can use gdaldem to generate the terrain map:

::
gdaldem color-relief alt.tif ramp.txt relief.tif

This is what my relief map looked like:

The terrain colour map I produced

Don't worry about the fact that it does not resemble the colour pallette you have chosen - it will do in the next step!

Merging the two rasters

The next step is to combine the two products. I used Frank Warmerdam's handy hsv_merge.py script for this purpose.

::
./hsv_merge.py relief.tif shade.tif colour_shade.tif

Which produced this:

The result of merging my hillshade and my terrain colour map

You may have noticed that it is only at this point that the colours of our product resemble the original pallette we used.

One little gotcha with the hsv_merge.py script is that it throws away our nodata values, so what was sea before (and nodata in my original alt.tif dataset) is now white (RGB: 255 255 255).

Clipping and masking

You may have everything you need from the above steps. Alternatively you can also clip and mask the dataset using a shapefile.

::
gdalwarp -co compress=deflate -dstnodata 255 -cutline Tanzania.shp
colour_shade.tif colour_shade_clipped.tif

My final image is now a compressed tif with nodata outside of the country of Tanzania and looks like this:

Final result: A false coloured elevation map for Tanzania

A final note

One of the things I love about the command line is the repeatable and reusable workflows it allows for. I can distill everything in this blog post into a sequence of commands and replay them any time. If you are still stuck doing things in a GUI only way, give BASH a try - you can really do powerful geospatial data processing with it!

QGIS & PostGIS Training at AIMS

This week we (Gavin Fleming, Sam Lee Pan and myself) are doing more training - a week of QGIS and PostGIS. Its a small group this time and they have GIS knowledge already so we get to go much deeper into the nuts & bolts of QGIS than I normally would do on a course (which is a real pleasure for me). Our attendees are a mix of people from industry, government and students - and we have one attendee from Botswana!

Also very interesting is the venue we are using to run the course in. AIMS (African Institute for Mathematical Sciences) is situated a stone's throw from the popular Muizenberg beach,  Cape Town.  Now this (AIMS) is one awesome place.  When you walk in the door there is a statue of Steven Hawking who paid a visit to the center. And the place is brimming with maths students from all over Africa. They are all on fully paid up scholarships to attend a residential diploma course in mathematics which will prepare them to go on to do masters and Phd courses in maths. So they get a room, full board and access to top notch tutors and leave with excellent skills and a network of friends around Africa with whom they can collaborate in future years. The best part is that the whole center runs on Linux. They have labs full of ubuntu machines where they beat out complicated formulas using SAGE and make python jump through mathematical hoops.

Now the funny thing is that I have been dreaming for the last few years of having just such a center for FOSSGIS - where people from all over Africa can come and do a residential course in using and programming FOSSGIS. So it was with fascination, pleasure and yes, a little bit of envy that I was taken around the AIMS facilities. One day hopefully someone with an unbelievable fortune and no idea what to do with it will see this blog post and contact me so that we can start AIFS (African Institute for FOSSGIS Studies) :-).  We are really grateful to AIMS for hosting us this week in their excellent facility, and showing us what a little foresight and ingenuity can achieve.

I'll leave you with a couple of pics of our course attendees doing their thing...

[gallery link="file" columns="2"]

QGIS & openModeller Training in Dar es Salaam

I'm back in Dar es Salaam for a training workshop (2 days QGIS, 1 day openModeller). Sam Lee Pan and Chris Yesson have joined me to help with presentation. Sam introduced herself in an earlier blog post and Chris is an ex-colleague from my time working for the University of Reading, UK. Chris has excellent knowledge of ecological niche modelling and its a real pleasure to have him joining us to share his knowledge with the course attendees.

Street scene in Dar es Salaam

The course is being held at the Dar es Salaam University's Institute of Technology. We have around 30 attendees who come from academia and state parastatals.

Chris Yesson (Left), Tim Sutton (Center) and Sam Lee Pan (Right) outside the University of Dar es Salaam institute of technology.

It's always refreshing to present QGIS courses and see how well received the software is and how easy it is for new users to  pick up and get running with quickly.

Sam showing one of our trainees the ropes!

During the course of the day we covered loading vector data, symbolisation, labelling and basic digitising.

Chris explaining the intricacies of QGIS to one of the course attendees.

The training course is part of the final stages of the work we have been doing for GBIF. Our work adds several new tools (non spatial table support, raster calculator, CSW client overhaul, darwin core data provider, openModeller plugin) - some of which have been added into the core of QGIS and will be in the upcoming QGIS 1.6 release.

We ended the day with a free form 'map a beautiful map' session and I was really impressed with the quality of work the attendees produced - all of them created nice neat projects with several layers, labels, customised symbology and so on.  I'm going to try to take some screenshots of a few of the better ones tomorrow and post them here for the world to see ... until then, happy QGIS'sing!

Raster Masks in QGIS/FOSSGIS

A common activity in GIS is to mask off parts of an image such that it has transparent pixels in the masked area. We can do this in QGIS too with a bit of help from gdal. Lets look at this niche model I ran for Anopheles gambiae:

Ecological Niche model for Anopheles gambiae

What I really want is all the parts of the model that fall outside of the borders of Tanzania to appear transparent. We will use a vector layer to delineate the masked area. I am going to make a mask for Tanzania. To make the mask from the vector layer we can use the gdal rasterize tool. But before we can do that we need to deal with the fact that rasterize is a bit awkward (in current version of GDAL) in that the image you are rasterizing must pre-exist. The simple work around is to just make a copy of my raster that I am trying to make a mask for using gdalwarp. I am using warp with the cutline option, in so doing assigning all cells outside of my country of interest to have a value of nodata. Unfortunately no gui tool exists for this yet so you need to run the command from the command line:

  gdalwarp -of GTiff -dstnodata 0 \
  -cutline Boundaries/Tanzania.shp Anopheles_gambiae__projection.tif maskbase.tif

|The first step to making our mask - all the non TZ areas are assigned a null value.|

Next I will load my vector layer containing the Tanzanian political boundary into QGIS:

Our base mask and the Tanzania boundaries loaded into QGIS.

Now I will use the Raster -> Rasterize tool to create the next phase mask - to fill the inside of the mask with the same value. Note that it will overwrite the contents of maskbase.tif - thats ok since we created maskbase specifically for that purpose. You can choose any attribute field for the mask, it doesn't really matter since we will be replacing all no data values in a few steps time:

Using the rasterize tool to assign areas inside the mask with the same value.
gdal_rasterize -a POP_CNTRY \
-l Tanzania \
/home/timlinux/gisdata/Africa/Tanzania/MasterDataSet/Boundaries/Tanzania.shp \
/home/timlinux/gisdata/Africa/Tanzania/MasterDataSet/maskbase.tif

After it has run we should have something like the image below. Note how the areas outside the country borders are transparent, while the areas inside all have the same value (in my case 222).

After rasterization, all non-masked areas are assigned a value from the vector layer.

Thats great, but I want a value of 1 inside all of the country so I use the shiny new raster calculator tool that will be in QGIS 1.6:

Layer -> Raster Calculator

And then create a simple boolean expression to assign all cells of value greate than 1 a value of 1.

Maskbase@1 > 1

I've called the resulting file mask.tif. I'll be throwing maskbase.tif away when I am done since is is a temporary working file. Note that the boolean (< and >) operators in the raster calculator are undocumented, and don't appear as buttons on the user interface - you will need to type the expression manually. Buttons for these will be added in QGIS 1.7. In the screen shot below if you look at the Value Tool dock window (ValueTool is a great plugin!), you will see that the final mask has a value of 1 where the cursor is placed while the maskbase layer has a value of 222.

The masked areas are now all assigned a value of 1.

Ok so now that we have a mask, we can apply it to arbitrary rasters to make areas of the raster transparent e.g. (Using Layer -> Raster Calculator again):

Mask@1 * Anopheles_gambiae__projection@1

Which produces this:

Our final masked model (shown in greyscale) over the original, non-masked model (shown in colour).

Some afterthoughts:

There are always many ways to do things with computers in general and with FOSSGIS in particular - and after writing this I thought of some ways to reduce the number of steps ... I'll leave it to my readers to post in the comments if they have other more efficient ways of going about this activity.

Also just a note that I am using the QGIS raster calculator from SVN with a patch applied from Marco for transparency support. The patch will make its way into SVN in the next day or two and the raster calculator in general will arrive in 1.6 release of QGIS (or grab a nightly test build).

Update:  The patch mentioned above is now in SVN trunk.

A week in Tanzania

I spent most of last week in Dar es Salaam, Tanzania. A lovely tropical country in the heart of Africa. I was there as part of a project I am working to create tools for Biodiversity Informatics practitioners. Of course the tools are based on Free Software:Quantum GIS and openModeller.

The attendees at the workshop were entertained by my talk about what FOSS is and why it is important, an introduction to QGIS slideshow (superbly presented by Marco Hugentobler), and ending with a tour of openModellerDesktop. We also did some live demonstrations of QGIS and openModeller, before going on to discuss details about how these tools can be used to support their Biodiversity Informatics workflows.

The meeting was funded by the Global Biodiversity Information Facility (GBIF) with Juan Bello as their representitive, and hosted by the Tanzanian Commission for Science and Technology (COSTECH).

In case you are unfamiliar with the aims of GBIF, they are facilitating the digitisation (or digitization for our american readers) of the worlds biodiversity records - herbarium records, museum collections and so on. COSTECH provides the local infrastructure and staff for the 'TanBif' node in Tanzania.

The meeting also included 'in-country' experts in the fields of GIS, Meteorology, Ecology, IT and so on. I think for all of the attendees, the concept of FOSS was a real eye-opener. African economies can't compare with those in Europe and the USA and the capital outlay for proprietary software that presents an irritation in the Western world is a major burden in the third world. So just knowing that they could dive in and use QGIS was a great revelation.

We finished our workshop a little early on the Friday so Marco and I offered to go along to the COSTECH offices and geo-enable their PostgreSQL species occurrence database and install QGIS on their desktop PC's running Windows XP. In the space of a couple of hours we were done - the major part of which was spent showing the TanBif staff members how to bring up the PostGIS layer in QGIS, perform simple queries and make maps. Having spent days in the past trying to get proprietary software like Oracle and Arc*** configured, optimised, licensed and generally usable, I was struck by just how easy and quick it is to get someone up and running with a robust enterprise ready PostGIS geospatial datastore and a user friendly Free Software desktop GIS like QGIS.

Thanks to the friendly Tanzanian folks for their hospitality - I look forward to my next visit! Here are some piccies from the trip...

image0

Juan Bello telling us about the cool things you can do with a good Biodiversity Information repository.

image1

The workshop attendees (Marco and Juan out of shot)

image2

Marco showing Godfrey how to use QGIS to bring up their PostGIS Biodiversity dataset.

image3

Godfrey proudly showing off his first map (made with QGIS)!

image4

Marco killing a mosquito - he became something of an expert!

Introduction to PostGIS

Horst and I are spending the week up in Johannesburg at the Satellite Applications Center in Hartebeeshoek. We are doing yet another week long training course (I hope I'm not working the poor guy too hard :-P ). This time we are doing:

- Two days QGIS (with a little GRASS)
- One day PostGIS
- Two days geospatial programming with Bash, Python and QGIS

Tomorrow we start with the PostGIS component. Horst and I have been compiling some course notes for the PostGIS module which we are making available to the world as per usual. The pdf still has some rendering issues - we are aware of that. The document tries to walk the reader through the basics of using SQL and then some basic activities with PostGIS and working with geometries.

I hope some of you out there find it useful - let us know if you do! Also if you have any improvements to make, we'd love to hear from you.

Here is a quick pic or two from the course:

image0
image1
image2
image3

QGIS 1.4 'Enceladus' released

I just sent out the official release announcement for QGIS 1.4 'Enceladus'....lets hope everyone loves it! The QGIS team has done a brilliant job for this one and I can't wait for 1.5 because things are only going to get better! Read the QGIS Blog for details.

I put the standalone windows installer on my own server this time so I can track downloads - it will be interesting to see just how many people grab it....I'll post some stats here later if there is anything worth reporting...

Report back on the QGIS hackfest in Vienna, November 2009

First a big 'thank you'

So I've just arrived back in Zurich en route to Johannesburg after a thrilling and tiring week hackfesting in Vienna. I'm going to try to summarise some of the major activities and outcomes from the hackfest and will ask others to fill in what I forget in the comments.

First off I would like to say a big thank you to Werner Macho and Dr. Reinfried Mansberger. Dr. Mansberger (Institute of Surveying, Remote Sensing and Land Information (IVFL), Vienna) kindly allowed for the use of facilities (meeting rooms, kitchen, LCD projector, internet access). The facilities were excellent, comfortable and the perfect fit for the twenty or so attendees at the hackfest. Werner Macho organised everything and provided for a hassle free and extremely pleasant hackfest where everything 'just worked'. As an additional bonus his girlfriend Verena baked up a storm keeping hungry hackers fed with an endless stream of delicious cakes! It should be noted that in three and a half days of hackfesting, the hackfest team consumed more coffee than is normally used in four months at the faculty! Dr. Mansberger kindly ensured that the bill for all that coffee was covered, a gesture which is heartily appreciated by the QGIS team who would otherwise been a bunch of zombies and not managed to hack into the wee hours of the morning!

Secondly let me thank the other attendees. I can honestly say that I would be hard pressed to find a nicer bunch of people to spend 3 days locked up in the same room with. Each person brought a little bit of magic to the meeting making the whole event a real pleasure. Above and beyond that, the attendees were extremely dedicated and enthusiastic QGIS and FOSSGIS users and the conversations I had with the various people I got to spend time with were extremely stimulating. It was also really great having virtual participation in the IRC channel from those who couldnt be there in person - the input from IRC was a great motivator and a good way to keep us on our toes and pick up any issues to commits to the code base.

Lastly, I would like to say a huge thank you for the people and companies who so kindly donated towards our hackfest funding drive. Personally I am self employed and needed to travel half way around the world to attend the hackfest so attending it means a week of no income for me before I even consider the travel costs. Others are in the same boat and the money that was donated was put to really good use in covering the travel expenses of a number of attendees. Not having to worry about travel and accommodation costs on top of losing a week of work time made it a lot easier for me to attend. Also some of the attendees had their presence at the hackfest paid for by their employers so thank you to those employers who made this possible. I do hope you will consider sponsoring our project or making a donation so that we can continue to hold these six monthly get togethers and keep up the momentum of the project.

Summarising the hackfest

With those thanks out of the way I would like to summarise the hackfest a little for you eager folks out there dying to know what we got up to. The hackfest is actually an 'unmeeting' in that we arrive with no real agenda except to 'make QGIS better' and then organise ourselves on the fly. This works well because it allows us to be dynamic and make the best use of the skills of the people that arrive at the hackfest. That said we did have some broad topic areas on the hackfest wiki page that we planned to cover.

Activities at the hackfest could broadly be broken up into:

- presentations
- group discussions
- break out discussions
- HACKING!

As you can see from my list, by far the most emphasised activity was hands-on work on the code base. Presentations were spread out across the event so that we did not get 'presentation overload' and had a chance to digest the contents.

Presentations

Martin Dobias gave the first presentation where he demonstrated the symbology-ng branch and his work on an improved labelling engine. The symbology-ng (next generation) branch is a complete overhaul of the existing symbology infrastructure in order to address some limitations of the current architecture and provide a capability to do high quality cartography within QGIS. These limitations include:

- no capability to do overpainting easily (for example needed to render freeways with a blue outline and white inner line).
- no capability to easily create new renderer types (e.g. based on different approach such as rendering a line composed of SVG symbols)
- no ability to create complex markers and markers that can be shaded (e.g. as continuous colours) beyond the current 'hard' markers implemented in QGIS

The symbology-ng implementation also provides a simpler interface for symbol selection and definition.

Martin's presentation spawned a huge amount of discussion, the outcome of which was that we all voted for Martin to merge his work into trunk as soon as possible. While the symbology-ng implementation still has outstanding issues, it can run alongside the existing symbology implementation and will be turned off by default. This will allow early adopters a chance to play with the technology from within the mainstream QGIS builds. It will also provide a platform for better bug reporting and feedback. We will aim for symbology-ng to be the default symbology rendering engine in the future QGIS 2.0 release. Here are a couple of screenshots of what you can expect when his work is merged into trunk. Note that all of the images below can be clicked on for a larger view.

New Symbology being enabled in options

New Symbology Editor

Symbolgy-ng rendering

Martin followed up his symbology-ng presentation with one on a new labelling engine based on PAL. This provides a way to address various deficiencies within the existing QGIS labelling implementation by providing collision detection, label priorities and optimal label placement capabilities. The new labelling engine is also able to make labels follow lines. Martin showed us the labelling engine calculating label placement in various situations and it was indeed impressive. As with the symbology-ng we voted to include the new labelling engine in trunk at Martin's earliest convenience since it runs as a plugin and will be disabled by default so is a low risk inclusion into the code base. Some screenies of the labelling plugin follow:

Labelling zoomed out

Labelling zoomed in

Massimo Di Stefano presented the work he has been involved in on the Google Summer of Code project they did to integrate QGIS and ossimPlanet. The integration work uses TCP/IP to update viewpoint position and send raster data over to the ossimPlanet application - where it is viewed on a 3D globe. The globe syncronises to the current QGIS view extents and additional tools provide fine tuned options for postioning the ossimPlanet view. We were all really impressed by their work. Some discussion followed with the general concensus being that we wouldnt be able to ship this as a core part of QGIS due to the number of dependencies it adds and the fact that it does not yet meet ease of use requirements. It is however a great step forward towards providing 3D visualisation capabilities within QGIS and we will work with the developers to make their work available as an add on to QGIS (not part of the standard installation) once the code matures and can be easily packaged.

Alexander Bruy presented work on two projects he has been involved in. In the first they have been building a high quality sample dataset for Ukranian and Russian open source GIS users to use as the basis for tutorials and learning GIS. The dataset has Russian place names etc. and so is more familiar to users than the traditionally English based datasets common in GIS tutorials. The second part of his presentations covered a plugin they have written for recording protected areas and the species that occurr in them. This work will be a great contribution towards and eventual open source EcoGIS implementation (see discussion section below). It was really gratifying to see Alex's presentation and the great use they are putting QGIS to in the Ukraine. Alex is not the only Russian QGIS hacker - other members of the GIS-Lab group have provided us with some great improvements to QGIS especially in the Image Registration tool.

Martin gave a final presentation where he showed off the work they did with the gismapper project. The project involved building tools to map infrastructure using a car fitted with GPS, spherical camera, compass and a computer fitted with a touch screen and running Ubuntu with QGIS. I posted an earlier video about which I am including again here for your convenience.

I know the video quality isn't brilliant but hopefully it gives you a feel for this excellent project (which is all open source by the way!). The presentation prompted some discussion about the project and which aspects of it make sense to include into QGIS core. The basic outcome of that discussion is that we will aim to include the GPS communication code and support for a moving GPS cursor on the map canvas into core, and evaluate what else makes sense to incorporate on a case-by-case basis.

Discussions

We had a number of great round table discussions covering a range of topics such as:

- the roadmap to QGIS 2.0,
- improved SVG support in QGIS,
- User Interface issues and consistency
- Adoption of the GIS icon theme
- Managing plugin repositories
- Managing plugins better within the QGIS user interface
- Forming an Ecology and Conservation management subgroup
- Dealing with user expectations
- Documentation

I am going to touch on the user interface related stuff briefly here and invite you to discuss other items in more detail on the QGIS mailing lists. Note that I did provide quite a bit of detail of the individual things people were working on over at the QGIS Blog

The main thing I worked on during the hackfest was a user interface consistency review. On the first day of the hackfest we formed a small team consisting of myself, Milena Nowotarska (Poland), Werner Macho (Austria), and Anita Graser (Austria). The goal of our work is to visit each and every dialog and ensure that it meets our Human Interface Guidelines (HIG). We started discussing the existing HIG and planning what things we were going to cover during the hackfest and beyond to the release of QGIS 2.0. This can be summarised as:

- Ensure all labels on dialogs end with no colons (there was a mish-mash of colon and non-colon based labels throughout the application)
- Ensure that all labels have a leading capital letter and then are written in lower case
- Ensure that all labels have word wrapping enabled
- Ensure that all labels have their buddies set (used for keyboard shortcut jumping between fields)
- Ensure that all forms have an appropriate tab order set
- Try to make all forms fit onto a netbook sized display
- When forms need to be horizontally constrained, use a vertical layout and place the widgets in a toolbox or scrollbox
- Ensure that all dialogs use QDialogButtonBox which gives appropriate locale and operating system rendering of buttons such as close / ok / help.
- Ensure that all dialogs have a context help button and associated context help
- Ensure that icons are consistent througout the user interface
- Ensure that plugins integrate into the userface into native menus and do away with the plugin menu
- Reduce the real estate consumed by toolbars and simplify, simplify, simplify the user interface as much as possible but removing little used elements (especially toolbar icons)
- Cleanup core plugin dialogs for visual consistency

Needless to say this is quite a tall order but we made a good dent by doing an initial pass through the dialogs - you should already be able to see quite a lot of the improvements that we have made in the nightly builds of QGIS or in your local svn checkout. The topic of icon usage within QGIS received quite a bit of attention. The GIS icon theme is great in that it is visually consistent but the feedback I received from most users was that they still preferred the 'old' default theme. We discussed why this may be the case, with the concensus being that it was down to:

- people who were already familiar with the old theme had to relearn to recognise the GIS theme icons so its easier just to not switch
- the contrast in the GIS theme icons is quite low so your brain has to do more work to figure out the important elements of each icon
- some of the icons contain concepts that are not recognisable - they don't provide any or enough visual clue as to what their function is (e.g. spatial bookmarks, add vector)
- Some of the icons break with existing user interface memes for example using a hand icon for a pan button and a four direction arrow to indicate that something can be moved.

We would really like to have a consistent icon theme in QGIS 2.0 so Anita has started a revision of the icons to try to address some of these issues. We will use this posting as a starting point for a discussion with Robert Szczepanek (the original authoer of the GIS theme) and try to work with him to pass our changes upstream where he is agreeable. You can see an example of the original icon theme from Robert (first image below) and the updates from Anita (second image below).

GIS Icons as provided by Robert Szczepanek

Updates to GIS icon them from Anita Graser

I spent quite a lot of time exploring how to improve the user friendliness of the map composer and other dialogs where there are many widgets and options. Below you can see the outcome of some of this work.

GUI Cleanup Example - Map Composer

Firstly you can see that the widgets are now arranged vertically - removing horizontal widget arrangment means that the form part of the composer (to the right of the split) can occupy a lot less space and degrades gracefully as it narrows. The previous implementation shrank the widgets into non-existence as it got too narrow. You will see that where widgets have labels (e.g. Title), the label is placed above the widget. This allows the label to be longer in translated versions of QGIS without causing the related widget ot disappear into oblivion. Experimentally we are also going to be placing lables into widgets as seen in the spinboxes in the above screenie since it saves vertical space and allows more options to be viewed on the screen at one go.

You will also notice that we are making use of a toolbox (areas marked 'General', 'Legend Items', and 'Item Options') in the above screenie. This allows us to pack a lot more information into a small space and easily access forms in each section. In the next screenie below, you can see what happens when another toolbox item is clicked.

Composer with next toolbox item open

These kind of user interface cleanups will be taking place throughout the application with the goal of completing them for 2.0. - I hope they are a step in the right direction for everyone.

No discussion of the QGIS user interface would be complete without a lengthy and heated debate about splash screens - and of course we had one! Suffice to say that the QGIS developers are getting a little tired of planetary moons as the theme for our releases and come version 2.0 we will be switching to a new theme for our splashscreens....you will have to wait a little to find out what that will be...

Planning for QGIS 2.0

We also had a discussion about the roadmap to version 2.0. QGIS 2.0 will break API compatibility with version 1.0 and thus presents an opportunity for us to overhaul various aspects of the API that we feel are not working well or could otherwise be improved. This will include changes needed for symbology-ng, labelling, better geometry classes and other yet to be determined changes. We will aim for a release of QGIS 1.4 by December 2009. Following that we will do one more feature focussed release, planned for around March or April 2010. After 1.5, we will do only bug fix 1.5.x releases and experimental builds of trunk. 1.5 will be the last API compatible general release and the next official release will be QGIS 2.0 which will require most plugin and third party application writers to update their work to the new API. The experimental releases leading up to version 2.0 will be numbered 1.9.x.

QGIS 2.0 will be released 'when its ready' but hopefully some time in the latter half of 2010.

Planning for hackfest #3

We discussed options for our next hackfest - we will aim to hold it in the first half of 2010 in Piza, Italy. Paolo Cavallini will be the local organiser / liason.

General thoughts on hackfest planning

- Plan for large volumes of coffee to be consumed
- If possible have the hackfest venue where attendees can hack, eat and sleep all in the same place.
- Dont plan for too many alternative activities during the hackfest - we are there to hack and can do tourism before or after the hackfest
- Have a good quality webcam and microphone will be useful for ustream sharing
- Arrange the desks in a large circle so that hackers are facing inwards and can talk to each other and have group discussions without leaving their seats
- Have an LCD projector available for ad-hoc presentations.
- Have a flip chart and pens for ad hoc brainstorming

That's it for now

I'm wrapping up this hackfest for summary, although I have only scratched the surface of what we did - hopefully other attendees will also blog about their activities or leave comments about what they were up to. Also don't forget to check out the developer profiles link I mentioned above. Now I'm off to catch up on 4 nights of missed sleep....

Back to Top

Sustaining Members