Category: GIS

Geotag and Import Photos plugin

20.07.2012 19:09 ·  GIS  ·  qgis, plugins

One type of data used in GIS is geotagged photos, i.e., photos whose metadata includes the coordinates of the location where the photo was taken. But there are not many tools for working with such photos in QGIS: all that comes to mind are eVis, photo2shape and its little-known ideological parent, ImagesToShape. In principle, these two modules are sufficient for many tasks. You can use photo2shape to map the locations of photos and use eVis to view geotagged photos and link them or other documents to features of a vector layer. Sooner or later, however, a task will arise for which the capabilities of the existing tools are not sufficient.

Geotag and Import Photos is a new QGIS plugin developed for NaturalGIS. It allows you to process geotagged photos, geotag them and create a point shapefile from them.

Key features:

QGIS is 10 years old

18.07.2012 21:00 ·  GIS  ·  qgis

Today, 19 July, Quantum GIS celebrates its 10th birthday. Over the years, QGIS has grown from a simple PostGIS data viewer developed by one person to a full-featured, extensible, cross-platform desktop GIS with support for multiple data formats, extensive analysis and design capabilities, which is developed by programmers from around the world and used successfully by individuals and organisations.

I suggest we remember how it all started.

Read more ››

TauDEM in QGIS

29.06.2012 18:35 ·  GIS  ·  qgis, plugins, processing

There is a software called TauDEM (Terrain Analysis Using Digital Elevation Models). It provides a free (GNU GPL v2) set of tools for extracting and analysing hydrological information from digital elevation models. TauDEM is developed by David Tarboton of the Water Research Laboratory at Utah State University.

The tools are written in C++, are cross-platform, and have a console interface. Users of ArcGIS 9.3.1 and 10.0 can install an add-on that allows them to run the tools from ArcToolbox using simple dialogs. For others, the only way to use TauDEM is the “scary” command line.

Recently, QGIS also got a powerful and convenient framework that allows easy integration of various tools and libraries (yes, I’m talking about SEXTANTE). Thanks to this framework, QGIS users who need hydrology tools now have a way to use TauDEM directly from QGIS.

Of course, you need to have TauDEM installed in order to use the plugin. While the installation on Windows is quite simple (there are compiled files and detailed installation instructions on the site), Linux users will have to build TauDEM themselves.

Read more ››

QGIS 1.8 "Lisboa"

21.06.2012 09:29 ·  GIS  ·  qgis, release

Almost a year has passed since the release of QGIS 1.7.0 “Wrocław”. It was supposed to be the last release of the 1.x branch, but time has taken its toll. The developers simply do not have enough resources to maintain several branches simultaneously, so it was decided to abandon the division into “stable” and “development” branches. All future releases will be based on the master branch. The result of these revised plans is the release of QGIS 1.8.0 “Lisboa” today.

This release contains many bug fixes and a significant number of new features. In addition, QGIS 1.8.0 has some minor API changes that affect the print composer. If you are using this part of the API in your plugin and are experiencing problems, the developers will be happy to help you adapt your code.

You can find a detailed description of the new features in the official announcement. I will only mention the most interesting ones:

How to open CSV files in QGIS

30.05.2012 18:51 ·  GIS  ·  qgis, howto

Recently, there have been a lot of questions about working with CSV files in QGIS. So here is my attempt to shed some light on this complex and confusing topic. Be prepared for a longread.

Read more ››

Notes on SpatiaLite, QGIS and PyQt

19.05.2012 11:21 ·  GIS, Notes  ·  tips

We all face problems from time to time. Here are a few recent ones from my personal collection.

QGIS and SpatiaLite

Those who build QGIS themselves know that not so long ago there was a move to use external spatialindex and SpatiaLite instead of internal bundled copies. The former has been completely removed, but SpatiaLite is still there because it is either missing or too old in some distributions (namely Debian Squeeze, as well as Ubuntu Lucid, Maverick, Natty and Oneiric). The problem occurs when building QGIS with an external version of the library.

For historical reasons, the SpatiaLite can be compiled in two different ways:

So. If you have SpatiaLite built as an all-in-one library, you can kiss SpatiaLite support in QGIS goodbye. You will not be able to create a new layer or open an existing one. What spices things up is that both configuration and compilation go smoothly: no missing files, no errors. The solution is to rebuild SpatiaLite as a loadable module and then rebuild QGIS. However, at this point you may face another problem.

SpatiaLite and dynamic linker

If the configure script constantly fails to find SQLite, GEOS and PROJ.4 when building a loadable SpatiaLite module on Linux, even though all these libraries are installed and have the correct version number, it is likely that your distribution has a policy of using unmodified source code (i.e., sources are only patched when absolutely necessary).

It should help to run configure as shown below

LDFLAGS=-ldl ./configure

PyQt4 and a new style of signal-slot connections

Since PyQt 4.5 there is a “new” style of signal-slot connection available in addition to the old style (more details). The new style is more Pythonic, and it is highly recommended to use it instead of the old style. The only thing is… if the interface was generated in Qt Designer and then converted to code using pyuic4, and the new style signal-slot connections are used in the code, then when you try to disconnect the signal from the slot, you may get a message that the operation cannot be performed. The situation has been clarified after contacting the developers:

PyQt allows connections to be made to any Python callable.

With old style connections a proxy slot is created under the covers whenever a callable is used (as opposed to when SLOT() is used to refer to a C++ slot). Therefore, in your example, a proxy is always created for the connection to Dialog.reject even though that refers to the object that wraps the C++ slot (as there is no Python reimplementation of reject()).

New style connections are a bit smarter in that they treat slot objects that refer to a wrapped C++ slot and objects that refer to some real Python code differently – a proxy is only created in the latter case.

So the rule is that if you make a connection old style then you must disconnect old style as well and the same for new style. You also need to be aware that pyuic4 uses old style connections.

It’s actually a bug, but they won’t fix it.

I accept that this is a bug, but I don’t want to fix it. The reason is that the changes required to the old style support code would be quite significant and I don’t think the risk to the stability of that code is worth it at this stage of the life of PyQt4 particularly as the workaround is straightforward.

The mentioned workaround is to create a dummy slot that simply calls the corresponding slot of the parent object. I.e., if you wanted to disconnect the reject() slot of a dialogue from the rejected() signal, using the old style, it was enough to write

QObject.disconnect(self.buttonBox, SIGNAL("rejected()"), self.reject)

and it didn’t matter whether reject() was implemented in your dialogue or not. However, if you are using a new style, you must implement reject()

def reject(self):
    QDialog.reject(self)

Statist 1.0

14.05.2012 16:46 ·  GIS  ·  qgis, plugins, statist

Statist. My first plugin for QGIS. That was a long time ago: 2009, QGIS 1.0.0, start of discussions about including fTools in the core (yes, fTools was a regular plugin that had to be installed manually), only a few third-party plugins, and almost no instructions on how to write Python plugins… And I was younger and didn’t know much (to be fair, I still have a lot to learn).

The last major update of the plugin was also in 2009: I was happy with the functionality, and there were no critical bugs. Later, as I gained knowledge and experience, I thought about refactoring several times, but it didn’t work out. And recently, something came over me, so I sat down and did it.

Users will probably not notice any difference, as there are not that many changes visible to them: only support for getting statistics on joined fields has been added. But there are many more changes under the hood:

The plugin now lives in my repository, please report bugs and feature requests by mail or in the bugtracker (preferred).

SEXTANTE platform for QGIS

21.03.2012 18:57 ·  GIS  ·  qgis, plugins, processing

Victor Olaya has developed another framework for integrating various libraries and tools into QGIS. It is based on the SEXTANTE platform, which includes a toolbox, a graphical modeler and a script creator. It also provides a batch processing interface, command history, and some other features. The platform currently supports SAGA, GRASS, and R algorithms, as well as tools from the fTools and mmqgis plugins. According to the author, it is quite easy to add new algorithms and new providers.

I haven’t had a chance to test it properly yet, but it looks interesting and promising. The screenshot shows the list of tools, the GUI of the Basic Statistics tool from fTools and the result it produced.

SEXTANTE plugin in QGIS
SEXTANTE plugin in QGIS

Please note that this is still a work in progress, so regular users are better off waiting for the official release rather than using code from SVN.

Ecological niche modelling with openModeller

21.03.2012 11:34 ·  GIS  ·  openmodeller, howto

In the post “Getting started with openModeller” I showed how to use openModeller Desktop to identify areas at risk from invasive species. Another task that can be done with openModeller is modelling the distribution of species under new climate conditions.

Let’s see how to do it.

Read more ››

QConsolidate 0.1

08.03.2012 19:36 ·  GIS  ·  qgis, plugins, qconsolidate

Follow-up to yesterday’s post.

I uploaded QConsolidate 0.1 to the repository a few minutes ago. It provides:

WMS and WFS layers are excluded from processing for obvious reasons, but they will be present in the final project.

Please report bugs in the bug tracker or by email (as a last resort).