Concatenate plugin’s line-joining origins

Every plugin I’ve written has a story, or more specifically, experiences in using Adobe Illustrator when I’ve thought “Gee, if one could only…” and so in 1993 I wrote Concatenate to address a frequent dilemma.

If you’ve ever imported CAD files or GIS data for maps, chances are your first reaction was something like “wow, there’s a lot of detail here, it’ll save me a ton of time!” But once you started working with it you probably had some reservations, thinking “Oh no, this must be made up of a gazillion tiny pieces!”


That’s what I thought when I started working on maps like this one of the Twin Cities for an article by Steve Glischinski in the December 2003 issue of Trains magazine. The image on the left shows USGS (US Geological Survey) data imported into Adobe Illustrator via Avenza’s MAPublisher plugin. Here I had imported data for streets and highways, railroads, and inland waterbodies. It looked much more like a map once I simplified and colored it with the help of my Concatenate plugin.

As this image of small-town streets and highways here shows, GIS data is similar to imported CAD data in that it’s made up of many short paths laid end-to-end. Generally, the paths end at every point where they meet or cross another path.

By selecting one or more paths, I used Concatenate’s Assimilate function to join the paths whose endpoints were within 0.25 points apart and within 10° of tangent. By adjusting this setting, I could control which paths were concatenated, restricting it to those that formed a fairly straight line. A second pass concatenated the other side of the divided highway. Now this main road can be given a prominent style and the secondary roads made lighter and/or thinner.

As you can see in the top right image, the inland lakes were stroked and filled with blue. Most of them are already joined as closed paths with occasional cleanup, but the rivers had to be concatenated into longer paths which I then applied Illustrator’s Object > Path > Simplify function on (usually set to curved lines between 97-100% accuracy). Hiding other layers helped eliminate visual clutter as well as restricting selections to the paths I needed to work on. The many streets made the city railroad map use more memory and storage than was really needed, so I used the Concatenate plugin on that, also, again starting by concatenating lines within a few degrees of tangent, then selecting and concatenating again with slightly larger values. Finally, I simplified the paths to remove excess points so that the street grids became what they appeared to be, longer streets that simply crossed each other. This becomes especially important when creating art for digital media, since low-power phones and tablets have to draw every line if the art is left in vector format.

So, where is Concatenate for CS6 and CC now?

Concatenate is currently in beta testing and coming along nicely. I use it myself regularly at my day job, and today worked on refining the Assimilate function. It’s available to testers now and should be released soon.

In its public debut, the plugin will likely be missing the ability to record it as an Action, but I felt users who rely on it would prefer earlier access and a few free updates as I restore original features and add some new ones, as well.

You can expect versions for CS6, CC, CC 2014, CC 2015, CC 2015.3, and CC 2017, in addition to Mac OS X and Windows 32- and 64-bit versions. I’d like to thank our friends at Hot Door for providing the tools that made these newer versions possible.

All the best,