All 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:60d61173d34e960393675c90'}.
The UserComment EXIF metadata field was used to store the camera intrinsics and extrinsics in the image metadata. The calibration date refers to the date the nearest EO was done (not relevant). 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. The extrinsic variables include both horizontal and vertical position of the camera in UTM coordinates. The other nested dictionary contains text descriptions for each of the variables in the dictionary of data variables. The GPSLatitude and GPSLongitude are specified as the CACO-01 camera pole position and allows the user to find all relevant imagery for CACO-02 on the Imagery Data Service.
Additionally, tags were added to the Python dictionary object that have different values for either an IO or EO calibration image, the FA relevant to the extrinsics, and camera (c#) c1 or c2. These tags are included as follows:
IO image: 'Description':'
https://cmgds.marine.usgs.gov/services/activity.php?fan=2019-043-FA; This image was captured from a stationary camera (CACO-01 [c#]) to perform an intrinsic calibration.'
'Keywords': "Head of the Meadow Beach, Cape Cod National Seashore, Massachusetts, CoastCam, USGS, intrinsic calibration, remote sensing"
EO image: '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 with extrinsic calibration targets in the field of view.'
'Keywords': "Head of the Meadow Beach, Cape Cod National Seashore, Massachusetts, CoastCam, USGS, extrinsic calibration, remote sensing, ground control point"
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)