Dale’s suggestion that there are five stages to an FME release got me thinking about how I divide my evangelizing year.
Firstly there is a product release. Then I post about all the new functionality and how wonderful it is. Generally I try not to do too much, since the idea of evangelizing is to never look back – always look to what is coming up.
Secondly I move onto use cases; how functionality (both old and new) can help solve specific challenges.
Thirdly, as next year’s release settles down I talk about new functionality, and what is going to be great for the coming year (sometimes @FMEEvangelist tweets a sneak peak of these even before this point).
The reason I mention this is because this post marks the last of the 2010 product release specials. I think I’ve mentioned about as much as I can about new features – and if I didn’t Don and Dale certainly did on the recent FME Odyssey.
So, this post will describe some of the more useful updates we’ve made to existing transformers for the FME2010 release, and next time I will plunge into specific use cases where FME can make a real difference.
The Tester transformer consistently shows up as the most-used transformer of any in FME. Of course, that might not be a good thing: an inefficient design might mean you have to place many instances just to do the work you might expect from a single transformer.
So, with this in mind, FME2010 introduces bold new functionality into the Tester transformer: Composite Tests.
Up until now, Testers have been resticted to a single test, for example an AND (Clause 1 AND Clause 2) or an OR (Clause 1 OR Clause 2), so that multiple clauses required multiple transformers.
In FME2010 you can create composite tests which include any combination of ANDs and ORs (below):
In the example above to pass a test requires Attr1 is equal to 10 OR 20, AND Attr2 is not equal to 999
Now you can create a whole set of tests within a single Tester, maybe this won’t be the most-used transformer any longer?!
The BoundingBoxReplacer transformer does as it says and replaces each input feature with a polygon which covers its minimum and maximum extents.
What’s new for FME2010 are settings to record the length and height of the bounding box as attributes (below):
If you just want to get the values and not replace the features then you could use this transformer and copy the results back onto the original features using a FeatureMerger transformer. Anyone who’s attended the Advanced Workflows training would know this to be a more efficient method than using the BoundsExtractor and a whole bunch of ExpressionEvaluators.
For a while now it’s been possible to turn polygon features into true 3D entities such as solids or faces. With FME2010 an update to the GeometryCoercer transformer allows the reverse process to take place; ie 3D solids can be “downcast” to simpler geometries such as polygons.
Below: Here we have a single ‘solid’ geometry
Below: The GeometryCoercer transformer will now turn it into an FME MultiArea feature
Below: …and a Deaggregator transformer splits it into the six component polygons
In FME2010 the XQuery transformers have all been updated with three new functions. Remember that XQuery is a tool for querying and updating XML content. The common analogy is XQuery is to XML what SQL is to databases. A common use for XQuery is for handling metadata, which is often read as an attribute in XML form and needs updating as FME data transformations are carried out.
Anyway, XQuery is very powerful, but perhaps not the easier thing to use. So our XQuery transformers now have three new functions which will make it easier to query and update XML.
- fme:has-attribute() is a function which checks if a feature has an attribute with the given name. The result is either true or false.
- fme:get-attribute() returns the value of an attribute.
- fme:set-attribute() sets the value of an attribute on a feature.
Safe Software’s Dmitri Bagh has a good example of how to use these new functions, which is part of a page full of XQuery examples.
And don’t forget there was an FME Evangelist post on all things XQuery too.
The LineJoiner transformer, as the name suggests, connects line features together. There are many scenarios where you might need to do this, and the one described here benefits from a new feature in FME2010.
Here I have a set of road features. As you can see (below) they are not continuous features, but broken up. I wish to ensure that each section of line that could be made longer, is, and the LineJoiner transformer will do this.
There is one problem, however. Take these features in isolation (below):
The first impression is that they should intersect. However, looking at an image of the area (below) shows me these features run above and below each other, and therefore should not intersect.
With prior versions of FME, I could not have acheived the optimum result with FME. However, with 2010 the LineJoiner transformer has an option to “Consider Node Elevation” when joining lines (below)
With this option set to yes, and because my data has Z values, I get the required result: that these lines are not intersected, but joined on the basis of matching node elevation (below)
The NeighborFinder transformer has, for a while now, had the ability to take the nearest point to a line feature, and interpolate a new vertex on that line at the closest location to the point feature. For FME2010 a minor update will now also interpolate a measure on the new vertex.
What does this mean? Well, as an example, if you wanted to find the nearest bus stop to a bus route, and to place a point on the route to represent that stop, then the NeighborFinder would do that. Also, if the bus route had a set of measures on it, then a new measure would be created for the new stop point, so that you would know how far along the route it is.
Below: Here’s my bus route (with measures) and a new stop to be added:
Below: I use the NeighborFinder and its “Insert Vertex on BASE Feature” parameter:
Below: The output has a new vertex in my bus route to represent the new stop, with the appropriate measure interpolated.
I haven’t posted any YouTube links recently – but this music video is so awful (and strangely addictive) that I have to share.
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)