Archive for the FME Category
The FME User Conference is always great value. You get to see interesting presentations, learn about new technologies, and talk to bright people from all across the industry. This last point is probably the most important to me. Mixed in with other great conversations, I got to chat at length with Ed Katibah about SQL Server Spatial, and Don Cooke told me I dressed too well to be a neogeographer
It is also the best place to corner an FME developer. I managed to grab Tom Weir, Safe’s KML guru, and go over some of the changes in KML support with FME 2008. During a presentation on the first day of the conference I had included an “easter egg” where I spoke about how to enable active mouse-overs in KML using FME. To my chagrin, after a couple minutes with Tom I realized that my advice was not exactly best practice, and with FME2008 becomes downright ridiculous.
Here’s the before shot from my slide deck (zipped workspace):

And the after shot once I applied what Tom showed me (zipped workspace):

Obviously, the FME 2008 press release should read: “KML Support in FME: Now with 50% less fat!”
KML FME has been generating multi-geometry for information points for quite some time, so that cuts most of the data wrangling out to generate the info point and merge the features into multi-geometry. And FME 2008 will automatically generate StyleMap elements for you if you follow a couple sneaky tricks.
First, when you create each KMLStyler, set its name to the style ID you want it to receive:

And second, on your geometry set the kml_target_style_normal and kml_target_style_highlight attributes to the IDs that you created in the KMLStylers:

That gets my embarrassment out of the way, but doesn’t even begin to touch on the extent of KML 2.2 support in FME 2008. Another issue that I have written about is extended data or schema support, and I am happy to say that FME deals with this. Attributes are stored in your output KML as extended data by default, and it is easy to generate a BalloonStyle template. Here’s my first take on this support, which does a great job of separating data from presentation (zipped workspace):

And a quick look at the new basic editor which is included in FME and used for modifying BalloonStyle templates:

Which gives us this KML output (source).
There is a going to be a lot more to the KML 2.2 support in FME 2008, including generation of image pyramids for PhotoOverlays, but I’ll leave it to you to explore those on your own.
-J
Related posts
I’ll be attending and co-presenting with my colleague Matthew Dunstan at the FME Worldwide Users Conference later this week.
I am really looking forward to this conference, and am confident that it will measure up to the outstanding event that Dale, Don, and their team put on in 2006. The technical quality and value for users of FME is truly outstanding, and sets this conference apart from many other industry events.
I’m getting into town on Wednesday night and staying at the conference hotel. Drop me a line if you’re going to be there and want to hang out.
-J
Related posts
Many of you know about JSON, an object serialization scheme that has rapidly gained acceptance in AJAX-style applications. What you may not know is that there is an effort to standardise the representation of JSON-ified spatial features, known as GeoJSON.
FME is usually quick to support new formats (like KML and GeoRSS) but this time Safe has surpassed themselves, getting early JSON and GeoJSON support into their betas before the GeoJSON specification has reached a release version. Tonight I took some time out to play with this new support.
The basis of JSON support in FME is provided by two new read/write formats: JSON and GeoJSON. These new formats are augmented by two new transformers: JSONExploder and JSONExtractor. To get started, I’m going to show you how to extract data from a JSON source I happen to have lying around (it’s publicly available at Yahoo Pipes), which looks like this:

When you first import this data source into FME, it is imported with the top level of attributes broken out. In this case, Pipes returns a top-level object with several attributes (link, description, etc) that you can see in my test workspace below:

Now, this isn’t much use, because my features are hidden inside the “items” attribute. In order to get them out, I first need to explode my single object into multiple features. The new JSONExploder transformer comes to the rescue here:

Now, I have a unique feature for each of my feed items, but I really want some of the nested attributes. In particular, I want the description from the root of the item, and the nested y:location["lat"] and y:location["lon"] attributes. The JSONExtractor makes it easy to pull these out into new attributes:

And once adding a couple more of these, each of my features has some nice attributes attached to it, which I could then turn into points if I wanted:

OK, so that’s kinda cool from a straight ETL standpoint. I can take in JSON, mess with it, and then pump it out into whatever format I want. But the fun stuff is when you start getting into GeoJSON. Fortunately there are a couple early adopters, Christopher Schmidt and Howard Butler, who gave me some feeds to play around with. The first of these comes from Christopher’s super-flexible FeatureServer application (check it out, it’s open source):
The features displayed on this OpenLayers map can be easily downloaded from FeatureServer in GeoJSON format (or KML, or GeoRSS, or whatever). The URL for the GeoJSON representation is:
http://featureserver.org/featureserver.cgi/scribble?format=geojson
Pulling this into FME is as simple as creating a new FME data source, and specifying the URL:

As you can see, you can then treat this data like any other spatial data source:

Now, for a final example… Howard has a GeoJSON resource collection of counties in Iowa, accessible in a pattern something like this:
http://geoservices.hobu.biz/political/json/johnson
Now we could take this feature, in its source projection of UTM Zone 15N NAD83, but Howard’s put together a really nifty (non-commercial use only, unless you want to pay Howard some $$$) JSON-based web processing projection service. Not only that, but he’s also made it smart enough to interpret projections referenced locally, but also from the oh-so-cool (and built as a collaborative effort between Christopher and Howard) SpatialReference.org. So, all you need to do is feed it the URL of your source data, the url of your source CRS (http://spatialreference.org/ref/epsg/26915/) and the url of your destination CRS (http://spatialreference.org/ref/epsg/4326/). Like so:
http://geoservices.hobu.biz/project/?url=%22http://geoservices.hobu.biz/political/json/johnson%22&inref=http://spatialreference.org/ref/epsg/26915/proj4/&outref=http://spatialreference.org/ref/epsg/4326/proj4/
And, as just another link in the dynamic web chain, FME can read this transformed JSON feature:

Now, for desktop FME users, this gives us “Pipes on Steroids”: all the mashup flexibility of Yahoo Pipes, with the huge format support and rich processing model of FME. As cool as this is, I think the real power will be seen whenever Safe integrates this functionality into their Server product. It will allow them to play well on both the “enterprise” traditional GML/WFS/etc level and on the neogeography JSON/GeoRSS/KML mashup level with a single product from a single (or multiple if you want) data source. For organisations that want turn-key interoperability solutions, FME Server is going to rock your world.
-J
P.S. I’m thinking about getting a personalized plate that says GEO JSN
Related posts
There’s a simple indicator I use to tell when I’m too busy at work; it’s called the FME scale. Any time it takes me over a month to play with a new feature in Safe Software’s FME, I’m swamped
In this case, it was particularly painful. I’m really interested in GeoRSS because I see the potential that it has for increasing the level of information my municipality can deliver to its residents. For instance, we could offer insight into current housing starts with a feed of new construction building permits.
For me, the beauty of GeoRSS is that it has value even without the maps. With a single format, I can publish information that our residents can view in their favourite feed reader, while allowing more sophisticated users to benefit from the spatial information.
As you can see from the following screenshots of a GeoRSS file displayed in Google Reader and Google Maps, I’ve finally found a little time to play around with the GeoRSS support in FME. You can click on the second image to see how it works. Keep in mind that the data is static, and not guaranteed to be accurate for any use:

Until now, much of the GeoRSS that I’ve had a chance to look at has been point-based, so it’s nice to have a way of generating some more complex elements in Simple and GML varieties and, now that Google Maps supports GeoRSS, an easy way to visualise it.
So anyway, how did I generate this GeoRSS file? It was pretty easy, and I’ll take you through the steps.
First, I had to set some basic parameters for the feed in FME. This image shows the basic workflow, from create a single feature with no geometry, through to writing the feature out to the “Feed” output:

Inside of the AttributeCreator, I’m setting some basic values for the feed as a whole:

Pretty simple, eh?
Next, I pull in some data from our property records database, and merge it with an Oracle Locator spatial table which holds the City’s parcel base:

And finally, I set the same the entry-specific GeoRSS parameters, this time using attributes of the building permit records instead of static text to fill in the blanks:

And that’s all she wrote. I still have to find time to fine-tune some of the attributes (such as dates and link), get some approvals, and work out the logistics of getting the data out to our external server nightly. It sure is nice that the technical part is so easy though.
If you deal with spatial data on a regular basis and haven’t evaluated FME, you’re doing yourself a disservice. Pick up the latest beta from their site (for GeoRSS support), request an evaluation license, and play around a bit. Everyone’s usage pattern is different, but I was able to justify the cost of my initial license and training with the time it saved over about six months. Safe Software deserves a lot of credit. Apart from the usefulness of FME, their support is incredible. They are the only company that I have ever dealt with where I felt I was getting real value from the software maintenance plan.
And, in case you’re wondering, they didn’t buy me a nice laptop or a 3D mouse to use while writing this. I’m just a satisfied customer
-J
Related posts
Well,
There’s something to be said for blogging when something’s fresh in your mind. (Sorry Glenn, not even close to real-time on this one) And no, it’s not because I had too many Crown & Cokes. After a few days away, my family needed more attention than my mistress (though her big CRT was glowing seductively) and time plays some interesting tricks with memory. I’ll do my best to give you the highlights though. If you haven’t read about Day One or checked out the conference home page yet, do that first. One thing that I do remember is giving Matt a workspace that will likely give him nightmares, and make him wander around muttering about crazy users.
The morning featured Don and Dale giving a “Road Ahead” presentation in their casual funny style, complete with some really bad puns. One of the most important items that I got out of this were their plans to deal with the next hardware tidal wave with support for 64 bit operating systems and multi-process capabilities to take advantage of the soon to be ubiquitous multi-core CPUs. I wasn’t entirely clear on how the multi-process support was going to be implemented, but it sounded similar to the way that Apache sets up multiple children to listen and respond to requests. As well, there were plans for additional formats as well as improved support for existing formats. One of the most exciting items here was GeoRSS support. I know that this might not sound like a lot, but imagine using GeoRSS as a web-based data synchronisation tool (insert/update/delete). Yes, I suppose WFS and Filter could be used in the same way, but GeoRSS is new and trendy.
Rich Geometry is another important area, as it allows for the preservation of nasty items like a linestring with an embedded arc. This is a godsend for anyone that has to deal with CAD data on a regular basis. I spoke about Python improvements in the previous article, but I just noticed that there’s a recent story related to this on the Safe blog: Vancouver Python Workshop and FME. Raster support has seen an order-of-magnitude improvement in performance as well; a projection task was shown that was reduced from over an hour to less than two minutes in processing time. This is great news. Now I can put in some unreasonable requests for improvements in the raster processing capabilities. First I’ll have to apologize though. I interrupted the presentation and made a rather nasty comment about one of the 3rd party integration products that, while there are strong reasons for implementing it, doesn’t hold a candle to FME Workbench for usability. I wasn’t nearly as tactful as I should have been, and I hope that I didn’t scare away any potential users. Anyway, I’m sure that I missed some of the new features; hopefully the slides from the conference will be out by the middle of next week some time.
After their presentation, Dale and Don had Dmitri come up on stage and do some demos. I’m a bit fuzzy on these, but I am pretty sure that they were on the new third-party transformers. These are sold by FME, but are developed by other organisations. MRFCleaner (developed by MRF Geosystems) allows for some very complex automated quality assurance and cleaning. Many of the functions (overshoots, undershoots, intersections, etc) supported by MRFCleaner could be managed in FME previously, but they take countless transformers and are a real nightmare to maintain. I am seriously considering adding MRFCleaner to my licensing. ArcFitter (I didn’t catch the developer’s name) CurveFitter (developed by Tom Inloes of TCI Corporation) allows you to start recovering from the legacy of GIS data models that only supported points, lines, and polygons by retrofitting your stroked curves with fancy new arcs. As well as being a better representation of certain features, this can give you a reduction in storage space, especially in heavily splined curves.
After this came a set of presentation sessions. I was planning to go to the Best Practices for FME talk, but instead ended up sitting with Tom (one of the developers) chatting about KML 2.1 support. Warning: it’s not safe to sit down with me and talk for any length of time. I might just get around to discussing my thoughts on how open source geospatial will cause some proprietary vendors to reconsider their core competencies, and others to reorganise as their bread-and-butter components become commoditised. I believe that there will continue to be a place for well designed, efficient, and innovative products like FME, but that a lot of the fat in the industry will be trimmed.
Lunch was again good. I don’t know if I’ve said this, but the networking at this conference was incredible. I was lucky enough to speak with folks who were doing things as varied as: using FME to aid in moving away from a VAX/VMS-based system, building financial asset reports for taxation purposes directly from drawings, and using FME’s geometric processing capabilities to build complex cartographic output. There are not enough hours in the day to do all of the cool things that FME makes possible, so it’s nice to get some vicarious exposure to others who are working on them.
After lunch came the lightning talks. These little five-minute show and tell pieces were great fun, accompanied by computer-generated lighting sound effects, and a virtual audience that would clap you down if the thunder wasn’t loud enough. This was a great format to learn a lot in a little while, and I hope that this tradition continues in future conferences. I think that if they can get enough volunteers, they should allocate even more time to these tidbits.
The lightning talks were followed by another set of user sessions. This time, I went to the FME and Cartography session. This was really interesting to me on a personal note, as I am currently banging my head against trying to join some Autocad blocks up to some Oracle Points, and bringing them into MapInfo maintaining colour, size, rotation, and other goodies. Not fun at all, but these presenters seemed to have done some pure magic in this area. Hans (an FME MVP) gave a great presentation on how he used FME to improve the cartographic value of a street map, while SRG (another FME MVP) provided a very tasty recipe for SVG a la banana. I hadn’t looked into SVG much before this, but it sure looks powerful and flexible. During this session, a fully symbolised vector-based topographic map was shown running in Internet Explorer. Cool.
I won’t say too much about the ice cream (yum), the closing comments, or my request for flashing lights and running numbers in Workbench. Suffice to say, I had a great time at the FME UC, learned tonnes of stuff and got to speak with a lot of really smart people. I also felt like a bit of a celebrity, which was really odd. My wife doesn’t want me to go to another FME conference for a while. She says my ego’s already large enough…
-J

