The renamed useable images were geotagged and processed to add additional information required by the USGS to the exchangeable image file format (EXIF) and other imagery headers using PyExifTool Python library (
https://pypi.org/project/PyExifTool/, version: 0.5.6). A list of all the useable images is provided in CACO01_ImageList.csv.
The following describes an example of the Python dictionary object with each entry in the dictionary being a tag-value pair written to each image in the data release: tags = { 'Copyright': 'Public Domain', 'CopyrightNotice': 'Public Domain - please credit U.S. Geological Survey', 'Artist': 'USGS WHCMSC', 'Make': 'FLIR', 'Model': 'Blackfly 50S5C-C', 'GPSLatitude': '42.05049347, 'GPSLongitude': '-70.07738362', 'GPSMapDatum': 'EPSG:6318 NAD83 (2011)', 'GPSAreaInformation': 'camera pole location surveyed with RTK-GNSS', 'GPSLatitudeRef': 'N', 'GPSLongitudeRef': 'W', 'Credit': 'U.S. Geological Survey', 'Contact': 'whsc_data_contact@usgs.gov', 'UsageTerms': 'Unless otherwise stated, all data, metadata and related materials are considered to satisfy the quality standards relative to the purpose for which the data were collected. Although these data and associated metadata have been reviewed for accuracy and completeness and approved for release by the U.S. Geological Survey (USGS), no warranty expressed or implied is made regarding the display or utility of the data for other purposes, nor on all computer systems, nor shall the act of distribution constitute any such warranty', 'AttributionURL': '
https://doi.org/10.5066/P95C0DGM', 'Author': 'Jin-Si R. Over, Christopher R. Sherwood, Eric D. Marsjanik, Jonathan S. Borden, Athina M.Z. Lange', 'XMP-photoshop:Credit': 'U.S. Geological Survey', 'iptcCore:CreatorWorkEmail': 'whsc_data_contact@usgs.gov','Rights': 'Public Domain', 'ExternalMetadataLink': '
https://www1.usgs.gov/pir/api/identifiers/USGS:60d6125bd34e9603936761eb'}.
The camera pole location was surveyed with RTK gear, which gives us the UTM and Lat/Long simultaneously in the file we download off of the device. The EXIF GPS Latitude/Longitude/Position tags are in NAD83(2011).
Additionally, tags were added to the Python dictionary object that have different values for each image depending the filename and/or date when the image was captured. These tags are included as follows:
'Caption-Abstract': 'The [IMAGE PRODUCT] image represents [X]. This image was captured from a stationary camera (CACO-01 [c#]) at Cape Cod National Seashore, Massachusetts, Field Activity Number: [INSERT FA] on [INSERT CREATION DATETIME].
'Caption': 'The [IMAGE PRODUCT] image taken at CACO-01 [c#] at Cape Cod National Seashore, Massachusetts, USA on [INSERT CREATION DATETIME].'
'Comment': '[IMAGE PRODUCT] image for [INSERT CREATION DATETIME]; This image was captured from a stationary camera (CACO-01 [c#]) at Cape Cod National Seashore, Massachusetts. Field Activity Number: [INSERT FA]'
'Description':'
https://cmgds.marine.usgs.gov/services/activity.php?fan=[INSERT FA]; This image was captured from a stationary camera (CACO-01 [c#]) at Cape Cod National Seashore, Massachusetts.'
'Keywords': "Head of the Meadow Beach, Cape Cod National Seashore, Massachusetts, CoastCam, USGS, [IMAGE PRODUCT], remote sensing", dependent on the image product type.
Where [IMAGE PRODUCT] is the type of image product (snap, timex, var, bright, dark) and [X] is the product description, [c#] refers to either camera 1 or 2, [INSERT FA] refers to the relevant field activity for the image, and [INSERT CREATION DATETIME] refers to the original date and time of the image in YYYY:MM:DD HH:MM:SS GMT.
The UserComment EXIF metadata field was used to store the camera intrinsics and extrinsics in the image metadata. The The UserComment has a nested dictionary structure. The highest-level dictionary contains two nested dictionaries as well as a note explaining the structure of the UserComment field. One nested dictionary contains the relevant intrinsic (NU, NV, coU, coV, fx, fy, d1, d2, d3, t1, t2) and extrinsic (x, y, z, azimuth, tilt, roll) data variables. See CACO02_calibration_metadata for descriptions of variables. The extrinsic variables include both horizontal and vertical location of the camera in NAD83(2011)/UTM 19N + NAVD88 (GEOID 18). We recommend to the user to calculate their own EO data based on the dates of the imagery used. The other nested dictionary contains text descriptions for each of the variables in the dictionary of data variables. The calibration date and GPS DateStamp field indicates the date of the EO.
The GPSDateStamp field indicates the date of the extrinsic calibration.
The GPSTimeStamp relates to the time of the extrinsic calibration and is 00:00:00 because that info is irrelevant, use the image name, comment tag, or the DateTimeOriginal Exif tag for the actual image information.
To read out the imagery header information to a CSV file the command is: 'exiftool -csv *.jpg > .\ allheaders.csv'. Specific tags may be specified with this command, if preferred. Or use the online tool
https://exif.tools/ (accessed May 9, 2025)