Select to view content in your preferred language

Making orthophoto mosaic layers in ArcPRO with historic air photos

251
5
04-01-2025 08:17 AM
ChristopherThiry
Emerging Contributor
I have 168,000+ air photos of Colorado dating from the 1930s to early 2000s.  I would love to scan various sets of these photos & mash them into 1 orthophoto layer per set (so a single layer containing the 1938 set of photos of my area).
 
I work in ArcPRO for desktop.  I have found a few tutorials but they don't seem to fit my situation.  Most tutorials deal with more modern data taken by satellites or by airplanes and have a large amount of associated metadata. 
 
The only information I have about most photos are the center points, approximate footprints of each photo (these were determined examining the center points & the physical photos and created in large batches so their accuracy is an approximation), date, scale, direction of flight (usually N-S or S-N but not always and older ones tend to wander), numbering schema (project, roll, frame).  I lack information about the cameras, lenses, etc. and it is highly unlikely that I will find that data.
 
  • How can I rapidly create these photo mosaic layers?
  • What automated system/script can I use to georectify my photos?
  • Beyond the scans of the photos, what other information do I need to get started on this project?
 
I would be happy to learn more about any similar projects you have been working on & the success and pitfalls you have encountered.

I realize this is a complex and time-consuming process but I am very willing to put in the time to learn how to do this.
 
Many thanks in advance,
Chris Thiry
Map & GIS Librarian
Colorado School of Mines
5 Replies
PROBERT68
Honored Contributor

Hey, Do you have Metshape ? I used to work on that a lot until my agency revoked it due to that software from Russia.  

0 Kudos
ZacharyUhlmann1
Frequent Contributor

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.

0 Kudos
BillFox
MVP Frequent Contributor

maybe begin registering and rectifying to reference the usgs quad sheets

0 Kudos
BobBooth1
Esri Regular Contributor

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

https://doc.arcgis.com/en/imagery/workflows/tutorials/create-historical-imagery-products-ortho-mappi...

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:

https://gis.stackexchange.com/questions/140502/trying-to-build-world-file-for-images-based-off-exten...

 

 

0 Kudos
PROBERT68
Honored Contributor

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.

0 Kudos