My late grandfather owned this photo of the Great Lakes region:

The Great Lakes from space.

We don’t know where this photo is from or how he got it. He was a civilian engineer who worked closely with the Department of Defense in the 1980s - 2000s. He lived near Detroit, hence Michigan being centered in the picture.

My grandmother recalls that he received the photo in either the late 90s or early 2000s, a time when these photos weren’t particularly easy to get, and that it was a gift from someone associated with space (someone at NASA? defense contractor?)

From the picture above, is it possible to ascertain how this photo was taken (e.g. a particular earth observation satellite or manned spacecraft) or roughly when it was taken? We’d love to know more about it.

  • 1
    $\begingroup$ Googling ‘landsat images michigan’ pulls up a variety of similar images. Landsat images were not hard to get, but also not as easy as they would be today via the internet. $\endgroup$
    – Jon Custer
    Commented Apr 16 at 20:57
  • 4
    $\begingroup$ This reminded me of the Landsat mosaic foldout poster of the U.S. that was included in the July 1976 edition of National Geographic. I had this poster on my bedroom wall for several years (the attached photo is from online, my poster is long gone). $\endgroup$ Commented Apr 16 at 21:48
  • $\begingroup$ "From the picture above, is it possible to ascertain..." If you were able to get a good flatbed scan of the image, or very carefully photograph it from a distance at normal incidence (not obliquely which was probably done to avoid reflections/shadows - I usually stand things up vertically for that) then one could get x/y coordinates for several geographic points of known lat/lon and do a calculation to determine the altitude at which the photo was taken if it is a single photo. If this were a single photo it could not be from low Earth orbit (LEO) like the Landasts. So it may be a photomosaic $\endgroup$
    – uhoh
    Commented Apr 16 at 22:24
  • 1
    $\begingroup$ which means it would have to be manipulated to obscure the overlapping scans because right now I don't see any. It could be a zoom-in from a weather satellite image instead. Hmm... Interesting question! (@StevePemberton any further thoughts on that?) $\endgroup$
    – uhoh
    Commented Apr 16 at 22:26

2 Answers 2


Not yet definitive, so still a guess.. but...it seems to match this example:


enter image description here

Great Lakes From Space, 1980


Satellite view of part of the Great Lakes region of the United States and Canada, with areas of vegetation shown in green, from data obtained by the Coastal Zone Scanner onboard the Nimbus 7 satellite, 11 June 1980.

(Lots of other similar search results seem to use this sample too)

  • 8
    $\begingroup$ Amazing, that’s the exact photo! Silly question, but do you know how to validate that the citation from the site (Nimbus 7, CZCS imager, June 11 1980) is correct? I can’t find a way to get the data from NASA to check. $\endgroup$ Commented Apr 17 at 2:27
  • 1
    $\begingroup$ Looks like the CZCS was an early proto-ocean colour instrument. Great find. $\endgroup$
    – gerrit
    Commented Apr 17 at 6:42
  • $\begingroup$ This is as close as I could get: oceancolor.gsfc.nasa.gov/cgi/… $\endgroup$
    – Xerxes
    Commented Apr 17 at 14:42
  • 1
    $\begingroup$ @templatetypedef The document Phase 2 development of Great Lakes algorithms for Nimbus-7 coastal zone color scanner, sections 3.1 and 3.2, seems to attest the date. $\endgroup$
    – Vaelus
    Commented Apr 19 at 4:07
  • $\begingroup$ Great find! Given the caption "with areas of vegetation shown in green, from data obtained by the Coastal Zone Scanner onboard the Nimbus 7 satellite, 11 June 1980", this was probably an early attempt to use CZCS for project AgRISTARS. I suspect this is a false color image, with the vegetation index calculated from multiple CZCS channels and recast as green. AgRISTARS started in FY1980 and several of the key researchers were from the University of Michigan. $\endgroup$ Commented Apr 19 at 10:24

Silly question, but do you know how to validate that the citation from the site (Nimbus 7, CZCS imager, June 11 1980) is correct? I can’t find a way to get the data from NASA to check.

I can't either, but we can show that Nimbus 7 was in the "right place at the right time" to take a mid-day photo directly over this location.

I found the closest TLE to the stated day and propagated it using Skyfield and plotted the subsatellite point for each minute on that day, labeling the times in Eastern Daylight Time.

I then put a red dot at the approximate center of the photo shown in @blobbymcblobby's answer. There is a pass nearly directly overhead at 13:08 EDT. Seems like a perfect opportunity!

Python script at the end.

enter image description here

enter image description here

Here's the script:

import numpy as np
import matplotlib.pyplot as plt

TLEs = """1 11080U 78098  A 80156.68547860  .00000221 +00000-0 +01668-4 0  9996
2 11080 099.2797 071.0903 0009477 121.6306 238.5783 13.82654381081478
1 11080U 78098  A 80163.63235627  .00000045 +00000-0 +08421-5 0  9993
2 11080 099.2855 077.9404 0009948 105.9051 254.3215 13.82655430082438
1 11080U 78098  A 80168.19123416  .00000235 +00000-0 +03008-4 0  9997
2 11080 099.2851 082.4332 0010050 093.9160 266.3143 13.82658958083069
1 11080U 78098  A 80170.50685486  .00000164 +00000-0 +06435-4 0  9993
2 11080 099.2853 084.7157 0010156 088.8701 271.3619 13.82658863083386"""

### ### ### https://space.stackexchange.com/questions/65879/what-is-the-provenance-of-this-photo-of-the-great-lakes-from-space

import numpy as np
import matplotlib.pyplot as plt
from skyfield.api import load, EarthSatellite, Loader, wgs84
import datetime
import glob

loaddata = Loader('~/Documents/fishing/SkyData')  # avoids multiple copies of large files
ts = loaddata.timescale() # include builtin=True if you want to use older files (you may miss some leap-seconds)
eph = loaddata('de421.bsp') # a small one, fine for this

TLEs = TLEs.splitlines()
pairs = TLEs[0::2], TLEs[1::2]
sats = []
for L1, L2 in zip(*pairs):
    sat = EarthSatellite(L1, L2)
    sats.append((sat.epoch.tt, sat.epoch, sat))

sats = sorted(sats, key=lambda x: x[0])
epochs = [q[1] for q in sats]
sats = [q[2] for q in sats]

minutes_EDT = np.arange(60 * 24 + 2)
minutes = minutes_EDT + 4 * 60 # since we want midnight EDT

times = ts.utc(1980, 6, 11, 0, minutes)
hms = [str(int(minute/60) + 100)[1:] + ':' + str(np.mod(minute, 60) + 100)[1:]
       for minute in minutes_EDT] # since we want EDT for labels

sat = sats[1] # closest, using [e - ts.utc(1980,6,11) for e in epochs]

print('sat.epoch - times[len(times) >> 1]: ', sat.epoch - times[len(times) >> 1])

subpoints = sat.at(times).subpoint()
lats = subpoints.latitude.degrees 
lons = subpoints.longitude.degrees
dlons = np.abs(lons[1:] - lons[:-1])
lons[:-1][dlons > 100] = np.nan

remove = (lons <= -100) + (lons >= -70) + (lats <= 30) + (lats >= 60)
lons[remove] = np.nan

lat_0, lon_0 = 45.1, -86.5   # approx center of photo

if True:
    fig, ax = plt.subplots(1, 1)
    ax.plot(lons, lats)
    ax.plot(lons, lats, '.k')
    ax.plot([lon_0], [lat_0], 'or')
    # ax.set_xlim(-90, -80)
    # ax.set_ylim(40, 50)
    if True:
        for lat, lon, hm in zip(lats, lons, hms):
            if not np.isnan(lon):
                ax.text(lon, lat, hm)
    ax.text(lon_0, lat_0-1.5, str(lon_0) + ', ' + str(lat_0), color='red')
    suptitle = 'Nimbus 7 (11080) over Michigan 1980-06-11 EDT'
  • 1
    $\begingroup$ CZCS didn't take "photos" per se. CZCS was a cross-scanning radiometer. It took photos of a multiple frequency pixel one pixel at a time, with pixels about ~865 meters across at nadir. It used the rotation of the scanner to change what the next pixel would see, eventually developing a line of an image. It used the satellite's motion to change what the next line would see. Remapping the captured imagery to a map was done on the ground. $\endgroup$ Commented Apr 19 at 10:55
  • 1
    $\begingroup$ In other words, the picture wasn't take at 13:08. It was instead taken in the form of multiple pixels collected one at a time between 13:04 and 13:12. $\endgroup$ Commented Apr 19 at 11:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.