Well, it’s been a while but here we are with the second part of my Top Ten FME Tips of All Time! Remember, these are the tips I’ve gotten from users over the last few weeks. Thank you, by the way, for your responses. There have been so many that it’s hard to narrow it down to just five tips. If I missed yours out then I apologise.
Quick Add Shortcuts
When Quick Add was implemented as a way to add transformers to a workspace, it undoubtedly sped up the process of creating a workspace, but you can end up doing an awful lot of typing. So here are two tips that will help you with that. The first (Tip 5a) is from long-time FME user, Jeff Konnen (@jaykayone): – search transformers by their middle letters.
The reasoning here is simple. If you want an AttributeRemover transformer and start off by typing A-t-t-r then you’ll get a whole bunch of transformers listed, like so:
However! If you start typing u-t-e-r-e-m (the centre part of the transformer name) fewer transformers will match and you’ll get a much smaller list, like this:
Obviously it’s easier to locate and select the transformer you want when there are fewer entries, so this is a very useful tip and I recommend it to everyone to try. Thanks Jeff.
To Jeff’s idea this I’ll add my own suggestion (Tip 5b) to try using CamelCase as well. Notice that some transformers are made up of a single word (like the Clipper or Snapper) whereas others are made up of multiple words (like the NeighborFinder or – to quote an extreme case – the RasterSingularCellValueCalculator!)
Because Quick Add allows CamelCase searches, it means you can search for such transformers using the first letter of each word, like this:
I find this very useful with common transformers like the AttributeFileWriter (AFW) and AttributeRangeFilter (ARF). In fact, these two tips combined make me wonder if there isn’t a three (or four) character code that is unique, for every transformer; but I’ll leave that up to you to investigate!
Oh! One last tip (Tip 5c) – pressing the tab key in the Quick Add switches from transformer name to transformer search, so you don’t need to use the search window in the transformer gallery. I’ve also wondered if continuing to press the tab key should switch to Quick Add Readers, then Quick Add Writers. So typing S-H-A-P-E-[tab]-[tab]-[return] would give you an Add Reader dialog with the format already filled in as Shape. Would that be a good idea do you think? Let me know.
Open Containing Folder
Jeff’s tip (above) is about how to use a particular function in a certain way, and assumes you already know about that function. But other tips alert us to functionality not everyone knows exists. This tip is one of those.
Certified FME Professional Ben Moseley reminded me of the tool “Open Containing Folder” (Tip 4a). You find this on the context (right-click) menu for all feature types in the canvas:
This function opens the folder in a file system dialog (e.g. Windows Explorer) so that you can locate the file(s). I find this a very useful function for locating output files; in particular when I write KML I’ll do this so I can double-click the file and open it in Google Earth. It’s a good time saver so thanks Ben for suggesting this (and for suggesting the tool in the first place!)
The other option you’ll see on that above menu is Inspect. That’s another great time-saver and it was Safe employee Steve MacCabe who suggested mentioning that.
Oh! And while we’re on the subject of “Open Containing Folder”, check out this update (Tip 4b) coming up in FME2015:
Yes! The open containing folder capability was so useful we’ve added it to all parameters that reference a file name, the above example being the AttributeFileWriter (or AFW)! I, for one, will find this very useful.
And on the subject of functionality you might not know existed, here’s one I didn’t even know about! Matthew Brucker responded to me about (Tip 4c) the “FeatureReader’s ability to cache features”. He says it is helpful when building a workspace because you don’t have to re-read the data set every time.
Like I said, I didn’t even know this existed! So my final tip here (Tip 4d) is to always read the What’s New file, attend the yearly What’s Great webinars, and generally keep up with what we are doing to the product. You’ll often find a new feature – like this one Matthew mentions – that’s pays off your time handsomely!
In a comment to my previous post, FME user Jan Roggisch mentioned a piece of functionality that I absolutely couldn’t do without: Creator transformers.
Jan says: “My tip (Tip 3a) would be one of my favourite classes of transformers in FME, “Creators”, which I find incredibly useful to improve productivity“.
I certainly couldn’t do without the Creator transformer. Whenever I’m creating a workspace where the transformation part is going to be the most difficult, I use a Creator transformer (sometimes with the AttributeCreator) to generate some fake data to test the workspace on. As Jan mentions, it’s great when “using transformers I’m not very familiar with, or where I know the input data model but haven’t got any actual data available when I start. I can then simply set up a few of creators to help me get the transformation logic right and replace them with real data later“.
I also find it great to drop down a Creator to create a null feature to start up a workspace where there is no input!
I’ll also mention (Tip 3b) something I’ve often done before: save a Creator as a custom transformer to have a small source dataset without the need for a Reader. Confused? OK, look at this Creator (click to enlarge):
Basically, I converted the outline of the city of Vancouver to XML (using the GeometryExtractor transformer) and pasted that XML into a Creator transformer (note the XML tab). Then I turned that Creator into a Custom Transformer called VancouverBoundary. Now whenever I need the outline of the city of Vancouver, instead of adding a Reader, I simply use Quick Add to place a VancouverBoundary transformer:
That trick sames me a load of time, and you can do something similar with the SQLCreator transformer. As Jan puts it (Tip 3c): “being able to pull whatever I can express in SQL into FME as features is incredibly powerful, e.g. when working with a complex relational database model. This way I can quickly change my input data structure during testing/development without having to re-create datasets as files or tables, and wiring them in using proper readers.”
Now you know the power of “Creators”. Oh, also check out the VertexCreator (Tip 3d), which is a new combination of many other transformers such as the 2DPointReplacer and 2DPointAdder.
If that tip was a little complex (don’t tell me you don’t love XML, everybody loves XML!) here’s one from Lars de Vries (@larsdevries) that’s much easier to understand. It’s all about Best Practices and organizing your workspace efficiently.
The tip (Tip 2a) is this: Prefix your bookmark/inspector names with a number to control their order of appearance. For example, here I’ve added numbers to the bookmark names to get them nicely sorted in the Navigator:
The other thing I do (Tip 2b) is to give matching names to bookmarks that are nested inside each other, for example here (click to enlarge):
There I have a main bookmark (called Boundaries) which contains three other bookmarks (Boundaries:Neighborhoods, Boundaries:City Grid, Boundaries:Land Boundary). By using this naming convention the bookmarks are properly ordered in the Navigator window and much easier to navigate to.
Lars also mentioned (Tip 2c) naming your Inspector transformers this way to order the output in the Data Inspector (which is an excellent tip) but it was also once suggested to me (by a student in a training class) that you could number transformers to make them more identifiable in the log, like so (Tip 2d: Click to enlarge):
You won’t necessarily get a nice list in numerical order (see the above where transformer 4 comes first) but it does help clarify log files and help identify which steps are related to which transformers.
I did get a few other tips, so I’ll put them together into an “others” category.
Tip 1a: Yves St-Julien suggested the Pink Dot as a useful item to be aware of, and I agree. The dot (now a triangle in 2014 onwards) appears on the corner of an object (like a transformer) when you drag it in Workbench. When the pink dot overlaps a connection or input/output port, then that too is highlighted to let you know it’s possible to drop the transformer and have it automatically connected.
I’d also suggest you try experimenting with dropping these onto input/output ports. It can make multiple connections at once and that can often be a big time saver.
Tip 1b: Matthew Longman’s tip was about the ability to change the order of Readers in a workspace, by dragging them in the Navigator like so:
What advantage does this bring? Well, several transformers – like the Clipper – have the capability of improved performance, if you can guarantee orders will reach them in the right order. This ordering tool is one way to achieve that.
Tip 1C: Mike Oberdries reminded me of the technique of using a list to create an artificial loop. It just happened that I was thinking of writing about that anyway, so I’m going to save that for my next post, and write a whole article about it.
Final Thought: It’s all about YOU!
If you’ve been to any Safe Software event – and I’m thinking of the annual FME World Tour and not-so-annual FME International User Conference – then you’ll know we’re the type of company that tries as hard as we can to help our users. We figure that if we can help you, and make you look like a spatial superhero, then it’s a win-win for us all.
So my final tip is to suggest you make use of all the support opportunities we present to you. In fact, here are a few that you may or may not know about.
Tip 0a: Testsuite: If you have a mission-critical translation and send the workspace/data to us, we can add it to our testsuite. That way – in the unlikely event of an update or bug causing problems – we’ll find out immediately from our automated testing, rather than the issue going unnoticed until it hits your production environment. Contact our support team (safe.com/support) for more information.
Tip 0b: Free Training: All of our training is free and includes use of a virtual machine with software; so you have no excuse for not keeping up to date with FME improvements.
Tip 0c: Support: Although FME technical support is – legally – limited to resolving product deficiencies, we aren’t averse to helping out with the occasional “how do I” question. Just recently I took a support case where I solved a user’s problem using just two transformers. Five minutes of my time probably saved five hours of his. Our support team is there, so use it. For bigger projects we’ll be happy to direct you to our network of awesome FME Certified Professionals.
Tip 0d: Tell us your ideas: Did you know that FME will read Shape datasets zipped up into a single file with the extension .shz? It’s not a formal specification, but a user suggested it, we figured it could be a useful update for minimal development time, and so it got implemented! I mention that to show you should never be afraid to suggest something that would make your life easier. However odd you think it sounds, trust me, we’ve seen stranger!
Well, that’s my FME Tips article complete. It was called a “Top Ten” but in fact I managed to include thirty-two tips from either you or me. I hope you find at least one of them useful, in which case my work here is done!
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)