Hey, Do you have Metshape ? I used to work on that a lot until my agency revoked it due to that software from Russia.
Hi Chris. Daunting task on your plate. Napkin math indicates you have 2500 images / year on average. Perhaps start with a year and create a point file from centerpoint as a kml linked to image. I'm not sure how to create an ESRI relational geodatabase from scratch, but I imagine it's possible. With either the KML (Google Earth format) or ESRI you could have popup-enabled points/feature classes. In the former, basically a Google Earth file with popups. With ESRI you could create Viewer Attachment Instant App.
These are preliminary steps to wrap your head around the data. To georegister those images would require creating tie points to co-register each image. I imagine there are advanced object classification techniques to bulk classify images to enable an automated process, but that would require remote sensing and/or AI skills. Not to dissuade you. Ultimately though for manual-ish rubber sheeting techniques, you need multiple tie points in your images with known real world coordinates. From there you can automate your process.
Not sure about ESRI, but GDAL has a core utility called gdal_translate that can be used to warp your images to ground control points (i.e. tie points). Something like this:
gdal_translate -gcp 507 482 6246215 2268541 -gcp 1594 289 6246103 2268561 -gcp 3000 674 6245981 2268666 test_projected.tif test_projected_gcp_3pts.tif
gdalwarp -order 1 test_projected_gcp_3pts.tif test_projected_gcp_3pts_warped.tif
That's a command line call above, wherein the first line "-gcp 507 482 <easting> <northing>" is translated as the pixel at column 507 and row 482 = the easting northing coordinate. "test_projected_gcp_3pts_warped" is the resultant output and will be "rubber-sheeted" to align your ground control points. There is a protocol to iterate over those two command line calls from a csv containing those coordinate values in bulk. So essentially if you can build a shapefile, csv, etc. with your matching ground control points, you can theoretically georegister / georeference multiple images in bulk. The time consuming part will be generating the ground control points.
Note that GDAL is available via Python in Arc Pro. So via Python Code in a Notebook might be nice.
There are certainly other methods used in high resolution topographical image geo-registration. Perhaps someone at School of Mines is familiar with his python packages . The same concepts could be applicable imagery, but it's tough since drastic change has occurred over those 70 years.
maybe begin registering and rectifying to reference the usgs quad sheets
It might be possible to use the Ortho mapping workflow in ArcGIS Pro.
Ortho mapping in ArcGIS Pro—ArcGIS Pro | Documentation
Create an ortho mapping workspace for scanned aerial imagery—ArcGIS Pro | Documentation
Given a table of the center point coordinates and image IDs, you could create a point feature class of center point features.
Given corner coordinates and image IDs for the bounding boxes, you could create sets of points and make polygons from them. These could be useful for hasty/simple affine transformation georeferencing of the images.
One thing that might be semi-automatable would be to manually georeference the first one in a series, and then export the referencing information as a World File. World files are simple text files that match the image file name and are stored in the same folder, and they have a file extension of the image file type + w.
This is the Export Raster World File tool doc:
https://pro.arcgis.com/en/pro-app/latest/tool-reference/data-management/export-raster-world-file.htm
Here is a help topic on World Files:
https://pro.arcgis.com/en/pro-app/latest/help/data/imagery/world-files-for-raster-datasets.htm
You can open a World File in a text editor and view its content.
So, the point of manually georeferencing and then exporting the world file is, you might be able to work out the relationship between each image and its corner coordinates values as represented in the bounding box feature coordinates.
Once you have that, you could use Python to read through the set of bounding boxes and write out a corresponding set of world files for the images. That might give you a leg up on the Ortho mapping workspace process.
Here is an old thread with some sample code:
My co-worker tried to use Ortho-mapping with the old aerial photos and did not give a good postive results.
Just saying ... I don't know if there are others that have tried this method.