Wolfram Blog
Jeffrey Bryant

Double Eclipse! Or Why Carbondale, Illinois, Is Special

August 14, 2017 — Jeffrey Bryant, Research Programmer, Wolfram|Alpha Scientific Content

Eclipse paths crossing

The upcoming August 21, 2017, total solar eclipse is a fascinating event in its own right. It’s also interesting to note that on April 8, 2024, there will be another total solar eclipse whose path will cut nearly perpendicular to the one this year.

GeoGraphics[{Red,   SolarEclipse[DateObject[{2017, 8, 21}], "GraphicsData",     EclipseType -> "Total"],    SolarEclipse[DateObject[{2024, 4, 8}], "GraphicsData",     EclipseType -> "Total"]},   GeoCenter ->    Entity["City", {"Carbondale", "Illinois", "UnitedStates"}],   GeoRange -> Quantity[500, "Miles"]]

With a bit of styling work and zooming in, you can see that the city of Carbondale, Illinois, is very close to this crossing point. If you live there, you will be able to see a total solar eclipse twice in only seven years.

GeoGraphics[{{GeoStyling["StreetMap"],     Polygon[Entity[      "AdministrativeDivision", {"Illinois", "UnitedStates"}]]}, {Red,     SolarEclipse[DateObject[{2017, 8, 21}], "TotalPhaseCenterLine",      EclipseType -> "Total"], GeoStyling[GrayLevel[0, .2]],     SolarEclipse[DateObject[{2017, 8, 21}], "TotalPhasePolygon",      EclipseType -> "Total"]}, {Red,     SolarEclipse[DateObject[{2024, 4, 8}], "TotalPhaseCenterLine",      EclipseType -> "Total"], GeoStyling[GrayLevel[0, .2]],     SolarEclipse[DateObject[{2024, 4, 8}], "TotalPhasePolygon",      EclipseType -> "Total"]}},   GeoCenter ->    Entity["City", {"Carbondale", "Illinois", "UnitedStates"}],   GeoRange -> Quantity[200, "Miles"], GeoBackground -> "Satellite"]

Let’s aim for additional precision in our results and compute where the intersection of these two lines is. First, we request the two paths and remove the GeoPosition heads.

line1 = DeleteCases[    SolarEclipse[DateObject[{2017, 1, 1, 0, 0}],      "TotalPhaseCenterLine", EclipseType -> "Total"],     GeoPosition, {0, \[Infinity]}, Heads -> True]; line2 = DeleteCases[    SolarEclipse[DateObject[{2024, 1, 1, 0, 0}],      "TotalPhaseCenterLine", EclipseType -> "Total"],     GeoPosition, {0, \[Infinity]}, Heads -> True];

Then we can use RegionIntersection to find the intersection of the paths and convert the result to a GeoPosition.

intersection = GeoPosition[RegionIntersection[line1, line2][[1, 1]]]

By zooming in even further and getting rid of some of the style elements that are not useful at high zoom levels, we can try to pin down the crossing point of the two eclipse center paths.

GeoGraphics[{Red,    SolarEclipse[DateObject[{2017, 8, 21}], "TotalPhaseCenterLine",     EclipseType -> "Total"],    SolarEclipse[DateObject[{2024, 4, 8}], "TotalPhaseCenterLine",     EclipseType -> "Total"], PointSize[.01], Point[intersection]},   GeoCenter -> intersection, GeoRange -> Quantity[1, "Miles"]]

It appears that the optimal place to be to see the longest eclipse for both locations would be just southwest of Carbondale, Illinois, near the east side of Cedar Lake along South Poplar Curve Road where it meets with Salem Road—although anywhere in the above image would see a total solar eclipse for both of the eclipses.

GeoImage[intersection, GeoRange -> Quantity[.2, "Miles"]]

Because of this crossing point, I expect a lot of people will be planning to observe both the 2017 and 2024 solar eclipses. Don’t wait until the last minute to plan your trip!

So how often do eclipse paths intersect? We can find out with a little bit of data exploration. First, we need to get the dates, lines and types of all eclipses within a range of dates. Let’s limit ourselves to 40 years in the past to 40 years in the future for a total of about 80 years.

dates = SolarEclipse[{DateObject[{1977, 1, 1, 0, 0}],      DateObject[{2057, 1, 1, 0, 0}], All}, "MaximumEclipseDate",     EclipseType -> "Total"];

paths = SolarEclipse[{DateObject[{1977, 1, 1, 0, 0}],      DateObject[{2057, 1, 1, 0, 0}], All}, "TotalPhaseCenterLine",     EclipseType -> "Total"];

types = SolarEclipse[{DateObject[{1977, 1, 1, 0, 0}],      DateObject[{2057, 1, 1, 0, 0}], All}, "Type",     EclipseType -> "Total"];

Keep only the eclipses for which path data is available.

totaleclipsedata =    Select[Transpose[{dates, paths,       types}], (! MatchQ[#[[2]], _Missing]) &];

Generate a set of all pairs of eclipses.

pairs = Subsets[totaleclipsedata, {2}];

Now we define a function to test if a given pair of eclipse paths intersect.

intersectionOfLines[triple1_, triple2_] :=   GeoPosition[   RegionIntersection[triple1[[2]] /. GeoPosition[x_] :> x,      triple2[[2]] /. GeoPosition[x_] :> x][[1, 1]]]

Finally, we apply that function to all pairs of eclipses and keep only those for which an intersection occurs.

intersections =    Select[Quiet[     Transpose[{intersectionOfLines @@@ pairs, pairs}], {Part::partd}],     FreeQ[#, EmptyRegion] &];

It turns out that there are a little over one hundred eclipses that intersect during this timespan.

intersections // Length

We can visualize the distribution of these eclipse paths to see that many occur over the oceans. The chances of an intersection being within driving distance of a given land location is far lower.

GeoGraphics[{Red,    GeoMarker[GeoPosition[intersections[[All, 1]][[All, 1]]]]}]

So take advantage of the 2017 and 2024 eclipses if you live near Carbondale, Illinois! It’s unlikely you will see such an occurrence anytime soon without making a lot more effort.


Download this post as a Computable Document Format (CDF) file. New to CDF? Get your copy for free with this one-time download.

Leave a Comment

One Comment


Barrie Stokes

Jeffrey

You’re on a roll now! A question: which of your 101 crossing sites have or will have experienced the greatest total duration of totality? (I take it that triple crossings are microscopically rare, and you’d have to enlarge the time span considered to find any?)

I’m not really serious; you’ve done enough already. :-)

Barrie

Posted by Barrie Stokes    August 14, 2017 at 6:38 pm


Leave a comment

Loading...

Or continue as a guest (your comment will be held for moderation):