Sunday 26 June 2011

Thoughts on OSGIS 2011

OSGIS is the UK Open-Source GIS conference. This is the third year it has run, and the first time I've made it there. Nottingham University has been its home every time, mostly due to the presence of the Centre for Geospatial Science on campus, and the enthusiasm of Suchith Anand and Jeremy Morley, who seem to be running on free energy all the time.

The meeting follows the standard template for scientific and technical conferences - there's some workshops, some invited keynote papers, and some general presentations. There's no poster session, and no novel ideas like lightning talks or group discussions - except perhaps in the Open Gov Workshop, but I wasn't there. Not that group discussions don't happen elsewhere, but only over coffee, great lunches, and beers.

Links to the agenda and presentations are all on the Web Site so I won't go into details here. The talks were also webcasted live and recorded, and should be available soon.

The workshop sessions on QGIS were run by Faunalia who let us take away their 8Gb memory sticks packed with a bootable Linux. Very handy. There were also lots of OSGEO Live DVD discs kicking around too, used for the workshop on Ordnance Survey data. Clearly open-sourcers are finding more ways of working in labs full of Windows boxes. I once ran a workshop where we used Virtual Box and an OSGEO Live DVD image to hide the horrors of Windows XP.

So what was hot or not at the conference? Here's my impressions:

On the desktop:
  • Hot hot hot: Lots of mentions of QGIS.
  • Also Hot: gvSIG (a day of workshops), GRASS here and there, OpenJump poked its nose in.
  • Not Hot: No-show GIS packages: uDig, SAGA.
  • Hot: OpenLayers and GeoExt.
  • Not hot: The Cloud. Its not the answer to everything.

On the server:
  • Hot: PostGIS continues its dominance.
  • Not Hot: Mentions of Oracle Spatial were usually accompanied by apologies. Usual excuse was 'we had the license anyway'.
  • Not Hot: No sign of NoSQL DB technology - where's the MongoDB Spatial people?
  • Hot: WFS, WMS, WCS and even WPS becoming almost commonplace.

In the hands of the programmer:
  • Warm: Only one statistics package mentioned - R of course - although the Orange Toolbox gets a look-in.
  • Hot Programming languages: Python, Java, JavaScript, C, R, SQL. I think I saw some Perl.
  • Cold Programming languages: C#, Ruby, Visual Basic/C.
  • Warm and fuzzy feelings from: Drupal, Django, ExtJS.
  • Cold and dead to us: Sharepoint. IIS. .net. Silverlight. Flash.

Hardware:
  • Hot: Android phones - nearly everywhere!
  • Cold: iPhones - hard to spot. Either nobody had them or were ashamed to show them.
  • Cold: Tablets. Think I saw one Samsung Galaxy Tab but nobody was showing off iPads. Or iPhone Maxis as they are sometimes known.

No great surprises there.

A few people were tweeting useful things during the conference, and so I should apologise to Jeremy Morley for not saying hello IRL and only communicating via twitter. I will try and submit a paper on doing GIS in R for next year. It will be more than 140 characters.

Also great to finally meet Suchith - the force behind lots of interesting things going on at Nottingham.

Tyler Mitchell rolled in from across the pond and did well against the jet lag to present a keynote speech and network like crazy for two days. OSGEO are very busy both globally and locally.

In all the conference did feel like a mini FOSS4G, but with a local feel - but not a restriction that cut down the quality of the talks or the participants or the coffee chat or the lunch discussions or the beer conversations. See you next year!

Wednesday 1 June 2011

Reading Layers from a Qgis Project File.

Some notes on reading individual layers out of a Qgis Project file. This should end up in a 'import layers from a project file' plugin.

1. get the xml into some text:

xml = file("project.qgs").read()


2. make a blank QDomDocument and set the content:

d = PyQt4.QtXml.QDomDocument()
d.setContent(xml)


3. Now find the maplayers:

maps = d.elementsByTagName("maplayer")


4. How many?

maps.length()


5. Now read the fourth layer (0-index) into running Qgis:

QgsProject.instance().read(maps.item(3))

Wrap this in a nice gui that tells the user what the map layers are, lets them check boxes, import the layers, marks the current project as dirty. Jobzagoodun.