How, if at all, does fortify handle holes in polygons?
I came across this a while back as I wrote my own conversion functions
with a similar purpose. Either fortify didn't exist back then or I
just didn't find it. Anyway, once I got a hold of the difficult data
structures returned by readShape*, it was fairly easy to convert
shapefiles with points and lines. Also polygons that you intend to
plot as a border with geom_path were easy enough to convert, but if
you want to fill polygons, then holes cannot be separate, but rather
they need to be attached to the outer border. And those attaching
segments need to be added.
Another thing I noticed was that shapefiles are often too large to be
manipulated in memory. The readShape* functions read the whole shape
database into memory, which is often enough to use all available
memory. Nothing I could do about that, but I found it better to
implement conversion functions as shapefile to CSV-file conversions
writing one shape at a time to a file instead of manipulating large
data frames in memory.