Work

The simplicity of installing software on Linux

I love the simplicity of installing open source software on a Linux box.

I had barely touched Linux (or a *nix command line) before I started in my current job, ignoring a few months with a little use of the Terminal on my iBook. Since being here though, I have picked up quite a bit as I've gone along. It took a little while to get used to at first, but it's sort of a second nature now - when it comes to some things, at least - to move over to the command line and do what I need to do there. It's very handy when developing software and working with revision control systems just to be able to do what you want by typing a few commands instead of doing it with the mouse through the graphical interface.

Installing new software is a breeze on Kubuntu (as it is on other Linux distributions) - simply type sudo apt-get install [name of software] and it'll do all the work for you. No need to go to a website, download it, unzip it and double click to install.

I needed to start drawing a diagram, so I asked my colleagues for a recommendation. They suggested Dia, so I went off and installed it and had the first cut of the diagram ready to go within half an hour.

KML and GeoRSS now ready for Drupal 5.0

Over the past few days I've been readying the KML module (thanks to AjK for starting the work) and the GeoRSS module for new releases that will work on the latest, shiny, version of the Drupal content management platform: Drupal 5.0.

They are both now ready (with the exception of some minor bugs and some feature requests) and there are a number of bits I need to backport to the 4.7 version of KML module to ensure it starts working again with recent updates to the Location module. I also need to make sure that GeoRSS module is consuming feeds properly from the successor to Aggregator2, Leech, as well as Feedparser.

I've also been helping out a little with the port of Location module as it is an essential part of getting the two modules to produce their geodata. It's not quite ready to be tagged as being ready for Drupal 5.0 but most of it is already working in this release.

If you're interested in any of these modules, please try them out and report any bugs in their issue trackers. If you have any ideas for future features, please also add them in there. Ideas (and patches, if possible) are always welcomed!

GeoRSS to KML through Drupal

I was working at the end of last week on pulling GeoRSS-enabled feeds into Drupal and attaching the location information for each item to the nodes created from each item. Once it's within the flexible world of Drupal, all the benefits of having attached geodata then apply.

With the number of GeoRSS enabled feeds around the world slowly growing, the opportunity to make your own geospatial mashup machine (borrowing the name slightly from Zacker's Drupal Mashup Machine screencast) is now here.

Much of the functionality was already there in contributed modules - aggregator2 module to pull in feeds (not sure what's going to happen to this module in the future) and location module to store location data for nodes. Then my recently released KML module can feed all of this information back out in different ways (eg by tags assigned to the incoming feeds), GMap module can display them on top of Google Maps.

The only part that was missing was the bit to pull geodata from the incoming RSS feeds, based on the GeoRSS standards, of which Version 1 was released last week. To do this I created a little module (GeoRSS module) that tied aggregator2 module and the location API together.

The functionality here overlaps slightly with the location module in that it already inserted geographic information into RSS feeds being sent out by Drupal, but I prefer to use the module as an API to store the information and then extend it in other ways. In the future the GeoRSS module could be extended to deal with more complex geodata than simple points, being able to cope with lines and areas as well if that time comes along and people have that need.

In Brussels this week

After visiting friends in London over the weekend and getting back to Stuttgart on Monday night, I am once again travelling, but this time to Brussels with work. I'll be here for GovCamp, DrupalCon and BarCamp. I was also hoping to catch up with the OpenStreetMap crowd, some of whom are up here this week for EuroOSCON, but spent much of the day on the train and so missed the meet-up today.

It should be a really interesting week, from watching presentations, learning about parts of Drupal I've not yet delved into deeply, and also getting to meet others in the Drupal community.

Drupal KML module released

Tonight saw the release of the KML module I've been working on for the Drupal content management system. The main features of the module currently include the ability to:

  • add a KML link to the bottom of all spatially enabled nodes
  • view all spatially enabled nodes in Google Earth
  • view nodes tagged with a certain term
  • view nodes from within a group
  • view search results
  • determine order of nodes that are displayed in Google Earth, allowing for alphabetical or time-based flythroughs of nodes for example.

If you are interested in this module, please feel free to try it out. You can see parts of the module in action over at geodan.org/kml-module.

It's been developed on Drupal 4.7 and the source is available in the CVS repository or as a package. If you come across bugs or things that aren't working as expected, please add them (along with any suggestions or feature requests) to the issue tracker on drupal.org.

It took me a while to get to grips with using CVS and specifically MacCVSClient (to add to SVN which I also recently got to grips with) but finally I managed to import the module source to the Drupal CVS repository. I think I still need to tag it to make sure it's packaged properly from the module description page and therefor easier to download, but that can wait until the morning.

Drupal geospatial testbed

It's been long enough that I've been working with Drupal and not had a site of my own that runs off it. I'd love to migrate dankarran.com to Drupal but it would take some time to migrate. So for now I will leave this site as it is and create a new site aimed at demonstrating Drupal as a Geospatial Content Management System.

geodan.org will be a testbed for geospatial functionality within Drupal. I'll be using existing modules such as the location module which gives a basis for handling geographic information about users and nodes in a site, gmap module which allows for Google Maps to be easily created, as well as a number of others. In addition to these I'll be adding the KML module I've been working on as part of my day job, and also the WFS Server module which still has a little way to go before it's ready.

Right now it's just a shell, but over time it will grow. And as it seems somebody over at the OGC recently picked up on my last post about Drupal as a WFS I should try and make that sooner rather than later...

Drupal as a WFS

Recently I have been looking into the specifications for the Open Geospatial Consortium (OGC) Web Feature Services (WFS) that provide a standard interface between geographic information systems (GIS) for the transfer of geodata.

I've been starting to think about it in terms of using the Drupal web framework as a geodata store that can be used by any standards compliant GIS. Drupal can already be considered a Geospatial Content Management System (GeoCMS) so this seems like a natural extension to allow other systems to talk to it.

In GIS, the term 'layer' is usually used to group together geographic information relating to the same kind of feature, e.g. forests, places or roads. These are often stored in different files or different tables in a database. In Drupal the equivalent concept is a little more flexible and fine-grained. All of the information is stored in one place (with the ability to extend a basic piece of information with extra attributes) and can be filtered by any number of 'tags' that may be assigned to different pieces of information.

Using a WFS server as an interface to data held in Drupal would mean that systems would have access to any number of geographic datasets simply by combining tags to retrieve the data that they need.

I'm looking forward to putting more work into building up a spec for a WFS Server module for Drupal, and hopefully one day geographic information systems will be able to query Drupal for dynamic geodata, and even create, update and delete it as well.

Location-based functionality within Drupal

Having laid out last week some of the overall location-related functionality I'd like to see within Drupal, I wanted to start a proper list of areas around which I would like to see development within the Drupal community. I'll be putting effort into creating and improving many of these, and hopefully working with others who want to help as well.

I've broken down the functionality into three sections of the data flow - incoming data, internal processing and display, outgoing data and external systems. Please feel free to leave comments on which bits you'd like to see sooner rather than later, and any extra functionality that I've missed off the list.

  • Incoming data
  1. Ability to tag individual nodes in system with location information
  • by address (functionality already exists)
  • by clicking map
  • by coordinates
  • Ability to extract location information from EXIF tags in jpg images
  • Ability to automatically extract location of items from incoming feeds
    • from RSS feeds (using the geo namespace or GeoRSS implementation)
    • from KML feeds?
    • from GML feeds?
    • Internal processing and display
    1. Ability to search near location
    • by address (currently can search near zipcodes only)
    • by city/country
    • by clicking on map (or entering coordinates)
  • Listing of similaraly tagged nodes nearby
  • Mapping
    • Simple visualisation
    • Mapping nodes on top of imagery
      • Google Maps
      • Yahoo Maps
      • Maps from a GIS (eg MapServer)
    • GIS functionality
      • Point in polygon analysis (for example, to find which region a point lies in - useful for determining which country a pair of coordinates lies in, or which administrative district a point lies in)
    • Community map creation
    • Map of nodes with ability to filter by users, buddies, location, etc
    • Outgoing data
    1. Export any Drupal page as a feed (or layer) - e.g. search terms, tags, node types etc
    • RSS feeds with location imformation embedded
    • KML feeds
    • GML layers (using WFS from OGC to allow data output capabilities to be determined)
  • Ability to filter by geographic location, user, content type etc
  • Ability to export single points
    • links to maps (functionality already exists)
    • link to Google Earth placemark (complete)
    • External systems
    1. Creation of a geocoding system that can be accessed and queried by other systems (including Drupal) through a RESTful style XML interface - similar to Mikel Maron's geocoder

    updated 16th February 2006

    After the OSCMS summit

    The OSCMS summit is now over, but it's been a great week, packed full of information and activities. I've met a number of the other people interested in using Drupal for location-enabled activities, from simply tagging of content with a geographic location, to mapping those locations (and others) and actually implementing more GIS-like functionality.

    One of the things I really want to see happen (and will certainly be helping with) is making sure that we are complying to standards of geographic data sharing so that information from outside the Drupal framework can be pulled into Drupal, and information can similarly be pushed out and used by other systems - from Drupal sites (through GeoRSS feeds - or the other GeoRSS standard being proposed), to Google Earth (using KML) and also systems capable of reading in OGC-compliant feeds (probably implementing a WFS interface).

    Improving the usability and functionality of inputting geographic information is also high on my priority list, trying to get away from the largely US-centric input that is present at the moment. Of course, that's not easy when the availability of reliable and open geographic data is scarce outside of the USA.

    I'll be keeping track on here of the bits I'm working on - and others are working on - here in my blog over time.

    OSCMS Summit

    I'm lucky enough to be flying out tomorrow to go to the OSCMS Summit (that's Open Source Content Management Systems) which is being held in Vancouver this week.

    The summit will be my first chance to meet some of the large community of open source developers that support the Drupal project that much of the work I'm currently doing is based on.

    I'm particularly interested in the location aspects, how it can be improved and what new functionality can be implemented to improve the spatial awareness of sites run using Drupal. It's great to see such a large crowd of people have signed up for the geodata workshop on Wednesday so it ought to be a great opportunity to meet others interested in the same area and work together on producing some great new features.

    Pages

    Subscribe to RSS - Work