Ideas for FME Server By Mark Ireland
As I promised – in my State of the Server address – here’s an article on ideas for FME Server.
When I watched presentations from our FME2012 World Tour I saw that it was easier than ever to mash up a set of technologies, throw in FME Server as a geospatial engine, and produce a superb geospatial (or non-spatial) service. Don’s Dropbox integration video shows a perfect example; it would need a little polishing to go into a production environment, but it oozes potential! And that was in 2012. With 2013 the possibilities are even greater.
But, when implementing a solution is this easy, sometimes coming up with the idea of what to do is a harder task. So, for once, I’m NOT writing this post to tell you how easily and quickly all this can come together! I hope you know that already. Instead, what I’m going to do today is throw out a bunch of ideas to fire up your imagination.
Like a certain Swedish superstore you should be able to take these ideas, put the pieces together, and get a usable prototype in a matter of hours. These ideas may or may not use notification, may or may not use a mobile app; but they are all founded on the awesome power of FME Server. Or should that be SJËRVER?
So I lied a little and here is a tiny paragraph about how and why FME Server is perfect for these scenarios.
The reason you could create these apps is because Server is about both moving data and manipulating it. Server can push, or it can pull. It can transform data on the fly, assess, filter and manipulate it. It can handle spatial relationships and spatial queries. And non-spatial of course. And it can do it with any format of data you care to mention.
So what can we do. Here are some ideas.
Spatially Related Audio
This idea (as many are) was inspired by someone else’s work, in this case the apps of rjdj, although I can never quite figure out what these folk are trying to do. Their main app seems to capture the sounds of your local environment through an iPhone microphone and incorporate them into a “musical experience”.
Here’s a great example as shown on YouTube
I like the idea, but I think you could go one-step further with it and make location-augmented music, where the music is adjusted to the user’s physical location, local weather conditions, etc. It could even take input from “smart clothing” (sensors in your clothes) that report on your mood that day, or from other sensors around your house (when the music includes a sizzling sound it means you left the oven on)!
As a location-based app (not to mention the sensors!) it’s a good candidate to create using FME Server. But you’ll probably want a more practical example, so here it is: audio tours.
There are many audio recordings you can get that guide you around a city; you’ve probably borrowed one of those clunky ones at a museum. But powered by FME Server, you could create an application that is responsive to your actual location. So as you walk/cycle/drive down the street you would get an audio commentary that changed on a live basis (“and as you travel along look to your right and see…..”).
And that’s just the push and pull of data using the notification service. With the transformational capabilities of FME you get the ability to do a “nearest neighbor” query, to create a least-cost route to get to a place, to buffer using a custom shape and use the result to do a local search for something, or do a Point-in-Polygon test to check which locality the user is in. The transformational possibilities are endless.
What’s more, because FME can read multiple sources at once, you could read many different datasets and incorporate all their input.
For example, perhaps you could read a weather feed and warn the user; “hey, it’s going to rain in your location in about five minutes” and “but don’t worry, there’s a bus stop 100m away. You can catch the number 34 although it is running 2 minutes late”.
Really the complexity here is that it would need a cell-phone app to ping your location to FME Server, listen for results, then play back a recording. But the FME side is remarkably simple. A notification service is set up to listen and trigger a workspace. The workspace tests your location, decides what recording to play, and alerts the application through a web feed. It could be as simple as a reader, a writer, and one or two transformers (probably the FeatureReader and/or SpatialFilter).
Even the phone app wouldn’t be too hard. It would be a combination of the FME Reporter and FME Alerter apps we have on the iTunes store – or just the Alerter really, as it includes both functions. Not to downplay the skill of our developers (which is immense), but I don’t think those apps were too hard, so this shouldn’t be either.
The FME “Dating” Application
I call this a “dating” application, but the operation is simply the interaction of two objects as they move through space. It’s interesting, I see a lot of applications for the interaction of one moving and one static object – am I near a coffee shop? where’s the package I ordered? when will the bus get here? – but I don’t see any for the interaction of two moving objects.
The dating application would probably accept input (published parameters) such as age, gender, and interests (loves XML); then you get an alert whenever you are in the vicinity of another user who is also a fan of extensible markup languages.
I say “dating” because it was the first application that sprung to mind (I don’t know why). But there must be other uses for such alerts. For example, in London last summer a sporting event occurred, which takes place every four years and begins with “O”. As part of the preliminaries the organizers carry a flaming torch around the country. An application like this would be able to alert you when the torch is within a set distance of your current location, regardless of whether you are moving or static.
So, just pick two moving objects and off you go.
Again, the FME part of this is very simple. You’re receiving locations from users of the app and storing this information in a database. This is the reporting part. Periodically you run a workspace to check spatial proximity (nearest neighbour, or perhaps a buffer and spatial filter) and issue the results as a feed back to the app. This is the alerting part. That’s pretty much all there is to it, and a competent FME user could get that up and running in just a couple of hours.
The mobile app – again I don’t see it being that complex, the only difference is that you have multiple users all interacting (rather than being entirely separate queries); but that’s just cooler, not more difficult.
Bird Watching Reporting
I think this is my favourite of all these ideas, just because it has the most potential in terms of FME bringing together a community of people. And yet the concept is very easy to grasp. You see a bird and log it (the report). Other users get news of the sighting (the alert). The reporter could even include a photo of the bird, and a sample of what it sounds like. Simple!
In fact, it’s almost an extension of the dating app: you just get alerts when birds of interest are in your vicinity. Again, it’s not tied to your home address or anything, it’s related to where YOU are!
It could also interact with the known area of the bird: for example you have a dataset showing the habitat range for the Golden Eagle. If one is spotted at a location outside of that range (PointOnAreaOverlayer, _overlaps = 0) then it’s something of greater interest. The query could also include the time of year, current climatic conditions, etc.
So what is most interesting is the potential communication that FME brings through mobile apps, and the opportunities for customizing the experience through geospatial processing and filtering. But with all the database writers in FME you could also store the sighting information and you have what would be probably a great research dataset.
Like the dating app, most of this is just buffering, filtering, testing – all things that a competent FME user could implement in a matter of hours. You could create mobile apps or – dare I say it – you could simply stick to tweeting (sorry).
Those are the ideas that excite me most, but here are some other suggestions in brief.
I watched a documentary on Nova about tornadoes and they talked about how difficult it is to issue alerts. A storm can turn into a tornado in minutes, but not be immediately detectable except by seeing it in person. This makes it important to use a system of alerts that is as efficient as possible, because everything can happen so quickly.
So, that’s two apps (or one with two purposes). One function is to let folk issue an alert (“hey, I see a tornado”) and another is to notify residents to go hide (“hey, a tornado is coming”). Again, with FME Server this is quite straightforward stuff. And, again, because it’s not necessarily tied to a particular address, you could get alerted even when you aren’t at home.
Bad Driver App
A combination of vehicle tracking and the FME Dating app. Here you trigger an alert when you see someone driving erratically. Anyone on that road, or in the immediate vicinity gets a notification that tells them to be careful. Again it’s just a spatial buffer/filter with a road network thrown in. Simple stuff.
Now imagine it, not as a phone app, but as a custom box that sits on your dashboard. And throw in a camera to capture the incident (hey, FME does raster) and add an email notification (to the local traffic police). You might think that’s going a little far, but I think that FME would be the perfect server backend for a physical product like this!
Added Value Web Services
More a concept than a single example, inspired by a question on the GIS StackExchange. As the responses note, what is needed is a web service that does reverse-geocoding, plus a little bit extra. The little bit extra is where FME comes in. In this instance, Server would be the ideal transformational layer between an existing (relatively unsophisticated) service and the end user.
In other words, you could have FME read a web service as a source, carry out a transformation on it, and deliver the transformed data as an entirely new web service. Call it a Value-Added Service.
So, if you think an existing web service doesn’t meet user needs, and you can find a business case to improve on it, perhaps you could implement an FME Server enhancement. I’d bet money that the spatial search component of most web service APIs is exceedingly simple compared to FME functionality (maybe even just a string match), so I think there would be a lot of opportunity.
What is Needed?
So, that’s what you can do. But – realistically – how much effort is involved?
Most obviously you’ll need infrastructure – an FME Server setup to run the projects on. That’s fairly easy with the quick and simple installation process. But, there may shortly be another method: Platform as a Service (PaaS).
PaaS is where you get provided with a ready-to-use platform in the cloud, complete with all the software solutions you need. You just call us at Safe and within minutes you have a scalable FME Server system set up and raring to go. You just log in and start work.
Will we ever offer a service like this? Yes. I have no doubt about this. It’s the next logical step for our technology and I’d say Server is probably 95% ready to be used in this way. Once that final 5% is complete, away we go….
The other obvious effort is to create workspaces to run the translations. But heck! I haven’t described an example on here that you couldn’t prototype in much less than a day.
So those two components I am confident about. I know a bit less about Web design. Still, most of the back-end is being powered by RESTful FME functionality, so there should be a minimum of coding. In fact, as a proof of concept, you could create a very basic prototype just by coping/pasting the Developer Info from the FME Server web interface.
Mobile applications? OK, I know even less on this topic. But I know some of my audience are more developer-minded and, if not, I’m sure there are plenty of mobile developers around.
Plus – if you don’t want to create an app – just provide a service for other developers. Take the audio tour idea, for example. You could create recordings, workspaces, etc and set it all up on a PaaS FME Server, then charge developers for access. All they do is create mobile apps that issue notifications to your server. You take the location from that notification and return the required audio file.
For sure, there will be complications. For example, with the audio tour you’d need to remember which recording has been played and not play it to the same person twice. And no doubt each project would need a great deal of polishing.
But I see FME Server as being a platform that’s perfect for Rapid Application Development. You can create prototype solutions within days – if not hours – to act as a proof of concept.
Why FME? Well I don’t know any other product that combines alerts and notifications with spatial data processing like FME can. Everything you need to implement and support these projects is there. Plus, functionality is easy to implement with FME workspaces. Look at Don’s demos: I bet there’s no more than 6 transformers in any of them.
But what excites me most is the thought that one of my audience – maybe you – will be inspired to take up the challenge and do something spectacular.
Whether you are an entrepreneur looking for a business opportunity, a member of a community that connects through technology, or an employee who wants to improve corporate processes; in any of these scenarios there is an FME Server opportunity for you!
Technology isn’t the problem any more – the only limits are those of our imaginations!
Mark IrelandMark, aka iMark, is the FME Evangelist (est. 2004) and has a passion for FME Training. He likes being able to help people understand and use technology in new and interesting ways. One of his other passions is football (aka. Soccer). He likes both technology and soccer so much that he wrote an article about the two together! Who would’ve thought? (Answer: iMark)