Sunday, January 23, 2011

Temporal Imagery Comparison Technique

I was recently made aware (thanks Minfeng) of a cool infographic put together by ABC News in Australia showing a slick interface for comparing two pictures of the same location. You can see the pages here and here. In this case they are using the overlay technique to allow users to evaluate the impact of the Brisbane flooding by comparing aerial imagery taken before and immediately after the flood event.

The imagery comparison technique was so compelling to me that I thought I would see if I could do it in Magik. My scenario was to use imagery available via Web Maps Connector to compare imagery supplied by Bing with imagery supplied by NearMap. What I came up with was a class called a canvas_comparer. It could be used to take two snapshots of the same canvas with different contents and then easily compare the two snapshots dynamically as sliding overlays.

This video demonstrates how it works. I'm wondering if there are other temporal-type applications that this might work for. (I threw this canvas_comparer together in about 1 hour using Graham's very cool Dialog Designer. If you haven't tried the tool yet, you should!!).

Monday, January 17, 2011

More Emacs Videos

Igor at just posted two new videos

MagikEmacs Screen-cast 5
  • shows how to inspect Magik objects using Emacs' Deep Print buffer.
MagikEmacs Screen-cast 6
  • shows how to inspect Magik objects using a combination of Emacs and the core Development Tools application.
  • This is very cool. Provides an easy way to explore Magik objects in an easy-to-navigate Magik GUI.
  • Launch the Magik Debugger tool from an Emacs Magik code buffer using F4-D. Very cool!

Friday, January 14, 2011

Viewing Brisbane (AUS) flood imagery in Smallworld Applications

If you have been reading world news recently, you will have seen much reported about flooding in and around Brisbane, Australia. The disaster has been devastating to the people in its path and I wish them well as they try to piece their lives together in the aftermath.

I realized that there might be value in taking recent flood imagery and integrating it as a layer in various Smallworld telecom and utility applications. With this data a technician could determine which hubs or switch gear might be under water. The key to this, though, is to have near realtime flood imagery. Enter They have flood imagery as of January 13 for Brisbane. You can view all their activity announcements at

I have created a silent video of a proof-of-concept of integrating Smallworld with NearMap's Brisbane flood imagery. At the end of the video there is also a section on creating Smallworld trails from OpenStreetMap data. Remember that this is all data accessed over the web with no need to host any data on your servers.

The integration is done with Web Maps Connector which is a product offered by my employer iFactor Consulting.

Monday, January 10, 2011

Integrating Parcel Data web services within Smallworld

My employer (iFactor Consulting) recently announced a partnership with Digital Map Products that allows Smallworld users to view and interact with parcel/property data as a web service (press release). I think this is a cool application of web services within the Smallworld paradigm and I hope to see other examples of web service integration. The one web service that people typically think of is geocoding. I have also seen routing, map tiles, and elevation charts. Please let me know how you have integrated web services into your Smallworld environment.

This video shows how the parcel data is integrated into Smallworld.

Saturday, January 8, 2011

Running Magik Remotely from Google Talk

Bhimesh over at the Magik Fun blog has posted a video of how he uses the XMPP protocol to send/retrieve standard input/output from Magik. It kind of reminds me of the remote_cli class in Magik.

You can view the blog post here.

Thursday, January 6, 2011

Exporting Node Coordinates via FME

I received a query today from a reader that wants to export the node coordinates for each electric conductor sent to FME. The sw_gis!node table is not a user table in Smallworld and is therefore not typically exposed to the FME plugin. But if you use the GE FME plugin, you can make use of the pseudo_fields functionality to gather up the relevant node information and send it to FME as a conductor attribute.

The basic steps are:
  1. define pseudo_fields on the conductor class (or whatever class you are interested in)
  2. write Magik support code that populates the pseudo_fields with appropriate node-based coordinates.
  3. create a FME Workspace that reads the new pseudo_fields and processes the appropriately.

This video describes these steps in more detail.

Another Mapping Blog

I am expanding my mapping experiences beyond Smallworld. Particularly, I am getting more involved with OpenStreetMap. In order to spare those of you interested mainly in Smallworld the details of non-Smallworld blog posts, I have created a new blog at