Tuesday, November 01, 2016

Mandarin

Mandarin drake, Eye Green LNR, 31/10/2016, taken with Canon 80D, Canon 100-400mm f4-5-5.6L MkII at 300mm, f5.6, 1/1000s, ISO 800
Mandarins have been reported from time to time at Eye Green LNR (a disused clay pit just east of Peterborough) over at least the last year and I have seen two males there on several occasions. But whenever I have taken a camera, they have failed to appear! This was the first occasion I have found them when I had a camera with me and it so happened that the light was rather nice with hazy, low afternoon sunshine lighting up the autumn colours of the trees around the lake and reflecting in the water.

The Mandarin is considered to be an introduced species in Western Europe, including the UK, although, according to Sir Christopher Lever's monograph on the species (Poyser, 1990), there is evidence that it occurred in this part of the world in the past - i.e. 600,000 years ago in the Cromerian Inter-glacial! The species was widly sold in the far east and many were probably brought back to Britain, especially in the 19th and early 20th Centuries. The first known reference is to birds displayed in the gardens of Sir Matthew Becker at Richmond Green, Surrey in 1745. He was a director of the East India Company so it is easy to understand how he obtained them. By 1834 they were breeding in the gardens of the Zoological Society at Regent's Park, London and the first mention of a wild breeding bird was one shot at Cookham on the River Thames in Berkshire in 1866. By the First World War, over 300 were reported to be breeding in and around the Duke of Bedford's park at Woburn Abbey and by the second World War there were strong populations breeding wild especially at Windsor Park, the Forest of Dean and around Woburn. As a young bird watcher, I saw my first one at Virginia Water around the mid 1970s.

The native range of the species is in the far east with a migratory population that breeds in the east of Russia and China and winters in Korea and Vietnam, and a resident population in Japan. The Russian/Chinese population is believed to have declined substantially over recent decades and may now number less than 1,000 pairs, but the Japanese population is believed to be stable at around 7,000 pairs. An estimate published in the BTO's journal, Bird Study, in 1988 by A.K.Davies put the UK population at around 7,000 individuals with about 2,500 breeding pairs, but there is some evidence it has spread further since that time. There are other, smaller introduced populations in Europe, especially around Berlin and a couple of small populations in the USA. The IUCN has assessed the species as "Least Concern", so it is not currently though to be threatened, despite the declines in China and Russia.
Mandarin drake against autumn colours reflected on the water - details as above.

Tuesday, October 11, 2016

Focal length of digiscope revisited


I wrote a blog post about attempting to calculate the focal length of my digiscoping setup some time ago (here) for the DSLR setup I described in this blog post. I came to the conclusion that, with the telescope's eyepiece on its minimum magnification of 20x, it was acting as about a 1,000mm F12 lens (and since the camera - a Canon 60D - has a 1.6 crop factor, the 35mm equivalent focal length would therefore be 1,600mm).

Back in February, I was preparing a talk on digiscoping for a local camera club and decided to tackle the same question a different way. I went to the Rothschild's Mere hide at Woodwalton Fen and spent a couple of hours taking pictures of the same subjects with various digiscoping setups and also with my Canon 300mm F4 prime lens which I could then use as a standard for comparison.

Here are some Cormorants sat on the tern raft in front of the hide taken using the Canon 60D with the 300mm F4 lens.
Scaled down image from full frame: 300mm, F8, 1/1000s, 400 ISO
100% crop showing the measurement I made from the beak tip to the back of the head on a line projected through the point of the yellow triangle on the face
Whilst viewing the image at 100%, I measured the width of the head of the adult Cormorant on the right, from the tip of the bill to the back of its head along a line projected through the point of the yellow triangle below its eye. This line was 263 pixels long in this case. 

To check that this worked reasonably well, I put my 1.4x converter on the lens and took, as near as possible the same shot (bearing in mind that this all takes time and birds move!).
Scaled down image from full frame: 300mm with 1.4x converter, F8, 1/1000s, 800 ISO
100% crop. Same measurement - 374 pixels
Note I had to bump the ISO up by a stop (from 400 to 800) to get the same exposure as you would expect. As near as possible the same measurement of the same bird (but of course there is some error because it may well have its head in a slightly different position) was now 374 pixels. 374/263 = 1.42, so pretty close to the 1.4x I would expect from the converter.

Here is a digiscoped picture of the same bird with my telescope's eyepiece on its minimum magnification of 20x.
Scaled down image from full frame: Digiscoped image, Kowa 823 with 20-60x eyepiece on minimum, Canon 60D with an Olympus 50mm F1.4 lens wide open at 1/320s, 800 ISO mounted on the eyepiece.

100% crop, Same measurement: 925 pixels
The whole head no longer fits in my 100% crop shown here, but the same measurement on the original image now comes out at 925 pixels. 925/263=3.509 suggesting the focal length equivalent of 1,053mm (300 x 3.509). This is pretty close to the 1,000mm I calculated in my previous blog post. Note also I have gone from an exposure of 1/1000s at F8 to 1/320s with the Olympus 50mm F1.4 wide open to maintain the same ISO setting.

With the telescope's eyepiece bumped up to its maximum magnification of 60x here is what I got.
Scaled down image from full frame: Digiscope at 60x, 1/60s, 800 ISO
100% crop, same measurement 3052 pixels
Now we can only get the eye in on a 100% crop, but the same measurement across the head comes out at 3052 pixels. 3052/263=11.583 suggesting a focal length of 3,375mm. The exposure had to go from 1/320s to 1/60s (which is probably one reason why it is not very sharp and shows signs of camera shake!) - another 2.5 stops. Given that this is a 1.6x crop factor camera, the 35mm focal length equivalent is a whopping 5,560mm!

Saturday, October 08, 2016

Phoneskoping

I have an HTC one-V smartphone which runs Android 4.0.3. It has a 5 Mp camera (1552 x 2592 pixels) - which is not of tremendously good quality! Nevertheless, since I usually carry it when I am out birding, the idea of simply being able to slip it on to the eyepiece of my telescope for a quick record shot, is quite attractive.

I came across Phoneskope adapters at the Bird Fair at Rutland Water some years ago. At the time, they made a universal adapter that attached to a 'phone cradle using self-adhesive Velcro (I am not sure whether they still do this model). I paid £28.80 for the version of the adapter made specifically for my telescope eyepiece (Kowa 20-60x zoom) and about another £3 for a hard shell case for my 'phone from eBay. The cost of the adapter seemed a bit high for a simple plastic cup with a hole in the bottom - but I can understand that tooling up to make these is probably quite expensive and there are a lot of different eyepiece models out there. So the market for each type of adapter to fit a particular model is probably quite restricted!
The phneskope adapter attaches to a hard shell case for the phone by a self-adhesive ring of Velcro.
The Phoneskope adapter came with a self-adhesive Velcro ring. It was straightforward to stick one half to the back of the adapter and the other half to the hard shell case, centred around the camera holes. The tricky part is getting the two parts attached together by the Velcro so that the camera is exactly centred over the eyepiece of the telescope. This required very precise positioning and took a lot of trial and error. Once I got the two halves together in the correct alignment however, the Velcro formed a pretty strong and robust join, so I haven't had to do it again. Here it is in place on the eyepiece of my telescope:
The photo shows the Android stock camera app. There is a zoom bar up the left hand side the shutter button is the blue circle at the lower-right. Use is very straightforward (assuming the telescope is focused on the subject before mounting the phone):
  1. You need to zoom in a bit to reduce the vignetting at the top and bottom corners by tapping the zoom bar,
  2. Tap on the image where you want the camera to focus (usually the bird's eye),
  3. Tap the shutter button to take the picture
This is easy and quick, but the downside is step 3 - tapping the shutter button. One of the biggest problems with digiscoping is camera shake, so the last thing you want to do is to tap the camera at the moment you take the photo! I found a free Android app called "Say cheese camera" which essentially adds voice activation for the camera. According to Google Play, it works with Android 2.2 and upwards and there is also an iPhone version available. As the name suggests, what this does is to trigger the camera when you say "cheese" - or any other distinct and isolated word (or even clap your hands - not a good move in a bird hide though). I find "Go!" or "take" work well and are less embarrassing when other people are nearby! The advantage, of course, is that you can trigger the camera without touching it.

I have to say that the results I get are not brilliant, but I think that is down to this particular phone model which has a pretty indifferent camera. The HTC one-V was launched in 2012 and clearly the technology has moved on. The current generation of phones have much better cameras and there are some pretty decent bird images to be found on Flickr, forums, etc. taken using mobile phones. There is certainly nothing wrong with the Phoneskope adapter. The whole this is quite robust, and small and light enough to be conveniently carried in my anorak pocket. It slips on easily and quite firmly and I can quickly grab a record shot with the minimum of fuss. These are good enough to convince my birding friends that I have actually seen what I say I've seen., which is the main point of the exercise for me.
Red-necked Grebe at Rutland Water

Thursday, October 06, 2016

Manfrotto 349 hide clamp

I am not sure exactly when I bought my hide clamp, but I think it was probably in the early 2000s. It is a Manfrotto 349 and is still available (for about £60 on Amazon - I think I paid £42 for mine, which indicates how long ago it was).
It is a pretty simple device: a tube which fits the centre column from my tripod forming the stem of a G-clamp which allows it to be firmly mounted on the edge of the shelf in a hide, or even on something like a fence rail or tree branch. The jaws of the clamp open up to about 60mm and the whole thing weighs 400g. Here it is in position, clamped to the shelf in a bird hide and supporting my telescope:

Of course, it can just as easily be used to support a camera with a long lens. What I like about this design is that it utilises the centre column and pan-tilt head from my tripod - which I am carrying anyway. Some other designs, like the Opticron Universal or the RSPB's hide clamp, effectively have their own centre column and head built in, so if you are carrying a tripod, you end up with two similar bits of kit and have to carry both!

I have found it to be very well made and robust. The cross bar on the screw which tightens the clamp is big enough so that you can clamp it pretty firmly and the centre column can be securely fastened over range of heights to cope with hides with the shelf at varying distances below the viewing window. Swapping the centre column between the tripod and the clamp is very easy and quick. I have only come across one hide where I couldn't get the clamp over the shelf and that is the Jordan Hide at Holkam - which has an edging strip attached to the shelf which is too wide for the jaws to fit over. However, somebody has thoughtfully cut notches in this strip, so there are just a few place where the clamp will fit. Frustrating if the hide is full and you can't get a seat in the right spot!

I find I use a hide clamp less often these days. Hide designs have moved on and it is not infrequent to find hides where you can use a telescope or camera standing up with your tripod fully extended. For example the Island Mere Hide at Minsmere or the Parrinder Hide at Titchwell are designed to allow this. Another design I like is the hides at the RSPB's Frampton Marsh reserve where the benches are not fixed down. This allows you to move the seat far enough away from the hide wall so that you can sit behind a partially extended tripod. Nevertheless, many more traditional hides have a fixed bench and a single, narrow window designed for those sitting on the bench. In these cases, the space between the bench and the shelf is too narrow to use a tripod (I really have tried!) and a hide clamp is the solution for me.

The only downside to a hide clamp (apart from remembering to take it) is that any vibration in the hide caused by people moving about and getting up and down is transmitted to your telescope or camera through the building's structure. Of course this happens to some extent however you use your optical gear, but it is exacerbated by having your equipment firmly clamped to the structure. This can get annoying when hides are busy, but I don't usually find it to be more than a momentary issue.

Wednesday, October 05, 2016

Carrying my tripod - strap and Cley Spy Mulepack

I have an aluminium Manfrotto tripod I inherited it from my father-in-law who died in 1999, so it must be getting on for 20 years old. I have changed the head on it for a more recent fluid video head (701RC2), but otherwise it still does a good job both for my bird watching telescope and for photography. The head takes a quick release plate (200PL) so it is easy to switch between the telescope and a camera.

The tripod is quite heavy (3.1kg including the head) so carrying it has always been a bit of an issue. A long time ago, I bought a carrying strap from the Manfrotto stall at the Bird Fair. I think it is part number MN3044 - described as a "heavy duty, long carrying strap", but it is no longer available and superceded by at least a couple of generations of newer designs. This strap has a screw fitting at one end, which goes into a threaded hole where the legs join, and a D-ring at the other end which allows you to make a loop which fits over the bottom of the folded legs.

Tripod with strap attached



This works very well for carrying just the tripod, but with the telescope mounted, it will not stay upright and the only way it works is to have the tripod in the downwards direction with the 'scope at the bottom. I have carried it like this for many birding trips and it is OK, but it is not ideal. The main problem is that, in this position, it does not stay on my shoulder and I am for ever hitching it back into place. The strap did originally have a rubber pad on it, presumably to help it stay in place. But I found it too flexible and it tended to bunch up uncomfortably - so I took it off (and have subsequently lost it!).
The tripod alone (left) can readily be carried more or less upright, but with the telescope mounted, it won't stay in place when upright and is most easily carried with the 'scope hanging downwards (right).
As I reported in my last post, up until last year, I carried quite a bit of photographic gear in a rucksack style camera bag. I decided that this wasn't working well because of the time it took to get stuff out - which often led to missed opportunities. This year I have been carrying the camera with the Canon 100-400mm lens mounted and ready to go - carried on a shoulder sling. So, rather than carry a rucksack photo bag, I decided I would try a rucksack-style tripod carrier.

After some research online and checking out forum posts, reviews, etc., I decided on the Mulepack from Cley Spy. I particularly liked this design because it acts both as a small conventional rucksack as well as a tripod carrier and the reviews suggested it was comfortable and durable.
Attaching the Mulepack to the tripod: There are two straps which go around the centre column either side of the block where the legs join and two large, broad Velcro straps which go round the legs. Finally, there are a couple of straps that go around the base of the first leg extension and fit into quick-release buckles at the bottom corners of the Mulepack.
In use, the tripod attached to the Mulepack, can be carried like a rucksack and the broad padded straps make it comfortable, even for quite long treks.
The large triangular section to which the legs attach makes a bag which can be accessed via a diagonal zip. I find that my waterproofs, folded flat, fit very conveniently in here.
The large, flat carrying area, accessed via a diagonal zip on the back.
There is another pair of smaller containers (shown on the photos above) which are detachable via a couple of buckles and Velcro. I find these useful for carrying small accessories like a spare camera battery, 1.4x extender and extension tubes. All up, the Mulepack, my waterproofs and with these accessories in the pockets, weigh in at 1.4Kg. Add the 3.1Kg of the tripod and 2Kg of telescope for a total of 6.5Kg - which is a lot less than my photo-gear rucksack weighs!

To use the tripod, you just take it off your back and extend the legs as necessary. It is used with the Mulepack in place and this does not interfere with extending the legs or centre column at all. You can even take the centre column out (e.g. to use in a hide clamp) without disturbing the Mulepack. The centre column simply slips out of the loops made by the two straps. When putting it back, you just have to be careful to get it back through these two loops. It is also quite feasble to carry the tripod with the legs extended at least by one step. It is even possible to carry it fully extended, but I find that the legs do tend to hit the ground, so it is only good for short distances.
Tripod in use, fully extended with the Mulepack attached.
One problem Cley Spey warn of is that the main triangular section of the Mulepack can act like a sail and catch the wind - increasing the chance that the tripod will fall over in a strong gust. This is the purpose of the quick release buckles at the bottom corners. These can be undone allowing the triangular section to flap freely in the wind and lessen the sail effect. The other drawback I have found is that, if gear like my waterproofs, is stored in this triangular section then the tripod legs won't fold very close together. This makes it a bit more bulky, to go in the boot of the car for example, and when fully extended, makes it a bit less convenient to carry over your shoulder.
Current field gear - camera on shoulder sling and telescope on the tripod carried rucksack-style  in the Mulepack.

Thursday, September 29, 2016

Focus F-1 Quick Rapid shoulder sling

For a long time I have carried my photography gear in a rucksack style camera bag and it has generally worked pretty well for me. The main problem is the time that it takes to get gear out and start shooting. So I decided I needed to carry a camera already set up for much more of the time in the field. Carrying a camera on a standard neck strap, especially when you also want to have binoculars immediately to hand, is not comfortable or practical. Therefore, I decided to go for a shoulder sling type strap.

The "top of the range" model seems to be the Black Rapid Sports-RS, but at £75-80 it is ridiculously expensive just for a strap! Whilst investigating alternatives, I came across the Focus F-1. This seems to be a Chinese made copy of the Black Rapid and  prices on eBay or Amazon were around £17-20, which seemed a much more reasonable price for a strap. I found a number of reviews which said it was comfortable, well made and good value, so I bought one. That was in Feb 2016. I have used it a great deal since then, including on several field trips when I have worn it pretty much continuously for periods of one to two weeks.

Canon 60D with 100-400mm lens on Focus F1 sling
It has indeed been comfortable and the strap itself seems well made and has shown no signs of wear or weakness. The original fastening on which to hang the equipment looked like this:
Original fastening

It consists of a D-ring and a carabiner style hook with a screw-gate fastener made from some sort of hardened aluminum alloy. This clips into a loop with a tripod screw which attaches into the tripod bush on your equipment. I didn't find this fastening terribly convenient because I often needed to unscrew it and then screw on a Manfrotto mounting plate to use the camera on my tripod or monopod. I quickly realised that I could just as easily clip the hook into the wire loop on a Manfrotto quick release plate. Carried like this, I only had to unhook the gear and put it straight onto the tripod or monopod.
Note the damage to the hook caused by the steel ring of the Manfrotto quick release plate - and the fact that the hook has pulled out of the swivel in the D-ring! The cut in the D-ring was done by me with a hack-saw to remove it from the strap.
This all worked well until earlier this month, although the steel ring on the Manfrotto plate was clearly causing some wear on the softer alloy of the hook - as can be seen on the photo above. Then, whilst I was on the beach at Titchwell on 6th Sept, the hook pulled out of its swivel! Luckily, the gear dropped harmlessly to the sand without any damage.

I decided to replace the fastening with a small, steel, screw-gate carabiner bought from Amazon for £2.35. (Stainless Steel M7 70mm Length Spring Snap Hook Stainless Steel Climbing Gear Carabiner Quick Oval Screw Gate Rock Lock).
Manfrotto quick release plate attached with a steel screw-gate carabiner.

As you can see from the photo, with the carabiner "upside-down" so that the big end is on the strap and the steel loop of the quick release plate through the small end, this works well. I was a little concerned that the lack of a swivel would be a problem, but it really has not been so far - and again I have used it pretty regularly over the past 3 weeks or so.

In summary, the Focus F-1 strap itself seems fine, but the attachment supplied with it is not really strong enough - at least not for a camera and lens combination weighing in at about 2.3Kg.The substitution of a steel carabiner, which is sold as climbing gear and is rated for far more load than this, should fix the problem.


Wednesday, September 28, 2016

Archiving my photos

As I reported in my last post, I store my photos on an external, 1TB, USB hard drive in a root directory called PhotoArchive. Within this directory, I organise them in a directory structure based on the date they were taken. So a photo I took today would end up in the path "F:\PhotoArchive\2016\09\28\". This is achieved using Exiftool - which I talked about in my previous post (which you should look at for installation details). I have a directory, F:\Work, also on the external drive, where I download the raw images from my camera and I have a batch file which, when run, uses Exiftool to read the date each image was taken from its EXIF information and then moves it to the appropriate directory (which is created if necessary) based on that date. The batch file, file_photos.bat, is placed in the root directory of F: and this is the command it contains:

exiftool "-Directory<DateTimeOriginal" -d "F:/PhotoArchive/%%Y/%%m/%%d" -r "F:\work"


So, my work flow is:
  1. Download images from the camera to F:\Work
  2. Assess which photos I want to keep. I do this using FastRawViewer which, as its name suggests, shows the image from a camera RAW file very quickly. I find it easy to view the image at 100% (keyboard shortcut Z to go to 1:1 and Z again to go back to normal view) and to delete the images I don't want to keep. It doesn't actually delete them, but moves them to a sub-folder called "_Rejected" which it creates in the folder containing the images you are viewing; F:\Work\_Rejected in my case.
  3. Once I am happy I have whittled down to the images I want to archive I delete the _Rejected subdirectory (which actually moves it to my Recycle bin - so another chance to change my mind) and run file_photos.bat. After this has completed, F:\Work is empty and the images are stashed away in the appropriate directories according to the date they were taken.
  4. Finally, I open my chose photo management software, Digikam, and it notices there are new files in the archive and scans them. This takes only seconds for a small batch of say a few tens of photos. I can then go through them, assign keywords and geotag them as necessary. Job done!

Tuesday, September 27, 2016

Moving my archive of photo from Picasa to Digikam whilst preserving keywords and geotagging

I have a ridiculous number of images archived: over 24.000 files occupying 390 GB of space and extending back to when I first had a digital camera in 2003. I store them on an 1TB external USB hard drive and use an online backup service (Crash Plan) to make sure they are continuously backed up both locally on a NAS box and offsite, to cloud storage.

Clearly, such a vast collection of images is useless unless you can find the ones you want, so they need to be organised and catalogued in some way. I have used Google Picasa to do this:
  1. Adding keywords, such as the identity of the species depicted - e.g. Syrphus ribesii, Syrphidae, Diptera, Fleabane.
  2. Geotagging the photos with the location where they were taken.
Unfortunately, Google announced it was no longer supporting the desktop version of Picasa as of March 2016 and has moved to the cloud-base Google Photos. This is useless to me because it doesn't support keywording or geotagging. The last version of Picasa released was 3.9 in October 2015. Of course, Picasa has not stopped working, but it gets steadily less useful because:
  1. I have recently bought a Canon 80D and, for that model, Canon have yet again changed their RAW format (images still get a .CR2 extension). Whilst much software has been modified to support the new format, Picasa will not be updated and doesn't display the files properly (the thumbnails come out pale and mauve).
    Picasa displaying Canon 80D RAW files as thumbnails.

    The Google Maps API has moved on since support stopped and the geotagging functions in Picasa 3.9 no longer work properly making it impossible to geotag new images.
So I looked for a new tool to replace Picasa and, after lots of searching, reading reviews and trying out several pieces of software, I decided on Digikam which provides the facilities I want.

Up until 2010, I had a Nikon Coolpix 4500 and that did not support RAW format. The images it produced were stored as .JPG files. With JPEG images, Picasa stored keywords as IPTC format metadata and geotags as EXIF data directly in the image file. This is all available to Digikam and the keywords are picked up and stored in Digikam's database and images are shown or queried correctly on its maps. All good! However, Picasa did not modify RAW files. Keywords and geotags were not stored in the .CR2 files produced by my Canon DSLRs but in a ".picasa.ini" file placed in each directory of my archive. Here is what one of these files looks like:

[_MG_5324.CR2]
keywords=Brent Goose,Holkham NNR
backuphash=3966
geotag=52.965313,0.814490
[_MG_5325.CR2]
keywords=Holkham NNR,Pink-footed Goose
backuphash=3966
geotag=52.965313,0.814490
[_MG_5327.CR2]
keywords=Holkham NNR,Wigeon
backuphash=3966
geotag=52.965313,0.814490


Digikam does not know how to deal with stuff in this format. So I am left with an awful lot of images which I have geotagged and assigned keywords, but my chosen tool cannot use them!

I spent some time searching for solutions to this and got a hint from a blog post by a French photographer Michaƫl Delorme from which I was able to download a php script. This finds the .picasa.ini files in the directory structure it is pointed at, reads and parses each .ini file in turn and then uses the excellent command line tool Exiftool by Phil Harvey to write the required information directly into each image's metadata. I have taken on this idea, but written an R script to do the same job. Here is the R script I came up with:

library(ini)
library(tools)

archivePath <- "F:/PhotoArchive"

inis <- list.files(path=archivePath, recursive=TRUE,
                   full.names=TRUE, pattern="*ini$",
                   ignore.case=TRUE, all.files=TRUE)

pb <- txtProgressBar(min = 0, max = length(inis), style = 3)
for(i in 1:length(inis)){
    ini <- read.ini(inis[i])
    setTxtProgressBar(pb, i)
    for(f in 1:length(ini)){
        fname <- names(ini)[f]
        if(file_ext(fname)=="CR2"){
            doit <- FALSE
            args <- " -overwrite_original_in_place"
            if(!is.null(ini[[f]]$keywords)){
                kwds <- unlist(strsplit(ini[[f]]$keywords, ","))
                args <- paste(args, " -iptc:keywords=",
                              paste("\"", kwds, "\"",
                                    collapse=" -iptc:keywords+=", sep=""),
                              sep="")
                doit <- TRUE
            }
            if(!is.null(ini[[f]]$geotag)){
                xy <- unlist(strsplit(ini[[f]]$geotag, ","))
                lat <- as.numeric(xy[[1]])
                lon <- as.numeric(xy[[2]])
                if(lon>=0) lonref <- "E" else lonref <- "W"
                if(lat>=0) latref <- "N" else latref <- "S"
                args <- paste(args, " -GPSLatitude=", lat,
                                 " -GPSLatitudeRef=", latref,
                                 " -GPSLongitude=", lon,
                                 " -GPSLongitudeRef=", lonref,
                                 " -GPSAltitude=0 -GPSAltitudeRef=0", sep="")
                doit <- TRUE
            }
            if(doit){
              args <- paste(args, paste(dirname(inis[i]),fname,
                                        sep=.Platform$file.sep))
              x <- system2("exiftool", args=args, stdout=TRUE)
            }
        }
    }
}
close(pb)


This is not necessarily written in good R style (it uses loops rather than being vectorised) and it is certainly not fast! But it did the job for me (taking some hours to run) and is only needed once.

So, here is the step by step how to, if you find yourself in a similar position. Use it at your own risk!

  1. THIS MODIFIES THE ORIGINAL RAW FILES SO MAKE SURE YOU HAVE A GOOD BACKUP BEFORE YOU START.
  2. Download and install Exiftool. I downloaded the zip version for Windows (I am on version 10.27). There is no installation involved, you just unzip the executable and put it somewhere - but that somewhere does need to be in your path (so Windows can find it). The simplest way to achieve this is to pt it in you C:\Windows directory. Otherwise, add the path where you chose to put it in to your PATH system variable as follows (Windows 10, earlier versions differ slightly):
    1. Right click on "This PC" - either the icon on your desktop or the item in your start menu - and choose "Properties". 
    2. Click "Advanced system settings". 
    3. Open the "Advanced" tab in the System Properties window and click the [Environment Variables...] button near the bottom.  
    4. Select the PATH item in the System variables list and click the [Edit] button. 
    5. Add your path (without a trailing \) to the bottom of the list in the Edit environment variables window. 
    6. Press OK about 3 times to close all these windows.
  3. The file that is unzipped is called "exiftool(-k).exe". I changed this file name to "exiftool.exe" so it can be executed just by giving the commad "exiftool". 
  4. Test it is all working correctly by opening a command window (press Windows key-R, type "cmd" and click [OK]), type "exiftool" and press return. You should see a load of help information from the tool. If instead it says "'exiftool' is not recognized as an internal or external command", then it isn't set up correctly! Check you renamed it and it is in a directory in you path.
  5. I assume you already have R installed (I am using version 3.3.1) and I am using RStudio (I am on version 1.0.12) to provide a convenient GUI front-end. If you haven't used R before, there are plenty of good tutorials out there.
  6. Install the ini package for R. This will be used to parse the ini files. In RStudio, open the Packages pane in the lower, right hand window, click Install, type "ini" in the Packages prompt and click the [Install] button.
  7. Open a new script (File - New File - RScript) and paste in the above script.
  8. Modify line 4 archivePath <- "F:/PhotoArchive" to point to the root path of your archive. Note that R is, at base, Linux software so it expects file paths to be delimited with "/", not "\" as in Windows.
  9. As it stands it is looking for Canon RAW files with the extension .CR2. If your photos are from some other make of camera, you will need to change the extension it searches for in line 16 if(file_ext(fname)=="CR2"){. For example, if you use a Nikon, this should read if(file_ext(fname)=="NEF"){.
  10. As it stands this will OVERWRITE your RAW files with a new version containing keywords and/or GPS metadata. By default, Exiftool will also save the original version of the file, adding ".original" to the end of the file name. If you want it to do this, remove the tag -overwrite_original_in_place from line 18 which will then read args <- "" (i.e initialised to an empty string).
  11. Save the file and run it (click Source at the top-right corner of the script window).
  12. It shows a % done progress bar as it runs. Go and have a cuppa or mow the lawn whilst it does its thing...