8
$\begingroup$

I managed to generate a map of the Italic Peninsula with the borders corresponding to 250BC. Is there a way I can shade the area of the Roman empire of the time?

redDot = Graphics[{Red, Disk[]}];
blueDot = Graphics[{Blue, Disk[]}];

Rome = Entity["City", {"Rome", "Lazio", "Italy"}];
LakeTrasimeno = Entity["Lake", "LakeTrasimeno::946n7"];

GeoGraphics[{
  {GeoMarker[Rome, redDot, "Scale" -> Scaled[0.02]], Black, 
   Text[Style["Rome", Bold], Rome, {-1.5, 0}]},
  {GeoMarker[LakeTrasimeno, blueDot, "Scale" -> Scaled[0.02]], Black, 
   Text[Style["Trasimeno", Bold], LakeTrasimeno, {-1.2, 0}]}},
 GeoBackground -> Dated["CountryBorders", -250],
 GeoRange -> Quantity[1000, "Kilometers"]
 ]

enter image description here

$\endgroup$

2 Answers 2

9
$\begingroup$

I finally found a way of doing it. I must say, I'm speechless about the versatility of Mathematica. Watching this YouTube video was key: Historical Information in Wolfram|Alpha and the Wolfram Language.

redDot = Graphics[{Red, Disk[]}];
blueDot = Graphics[{Blue, Disk[]}];

Rome = Entity["City", {"Rome", "Lazio", "Italy"}];
LakeTrasimeno = Entity["Lake", "LakeTrasimeno::946n7"];

GeoGraphics[{{Polygon[
    Dated[Entity["HistoricalCountry", "RomanRepublic"], 
     Entity["MilitaryConflict", "SecondPunicWar"]["StartDate"]]]},
  {GeoMarker[Rome, redDot, "Scale" -> Scaled[0.02]], Black, 
   Text[Style["Rome", Bold], Rome, {-1.5, 0}]},
  {GeoMarker[LakeTrasimeno, blueDot, "Scale" -> Scaled[0.02]], Black, 
   Text[Style["Trasimeno", Bold], LakeTrasimeno, {-1.2, 0}]}
  },
 GeoBackground -> {"CountryBorders", 
   Entity["MilitaryConflict", "SecondPunicWar"]["StartDate"]},
 GeoRange -> Quantity[1000, "Kilometers"]]

enter image description here

Note: I used the natural language input feature a lot, but it doesn't show in the code above. For example, I would type ^= and write Second Punic War and get Entity["MilitaryConflict", "SecondPunicWar"]. I wish I knew a way to see what are the attributes of Entities like these. It took me a while to figure out how to extract the start date...

Answer to the original question

Here's the map of the Roman Republic in 250BC.

redDot = Graphics[{Red, Disk[]}];
blueDot = Graphics[{Blue, Disk[]}];

Rome = Entity["City", {"Rome", "Lazio", "Italy"}];
LakeTrasimeno = Entity["Lake", "LakeTrasimeno::946n7"];

GeoGraphics[{{Polygon[
    Dated[Entity["HistoricalCountry", "RomanRepublic"], 
     DateObject[{-250}]]]},
  {GeoMarker[Rome, redDot, "Scale" -> Scaled[0.02]], Black, 
   Text[Style["Rome", Bold], Rome, {-1.5, 0}]},
  {GeoMarker[LakeTrasimeno, blueDot, "Scale" -> Scaled[0.02]], Black, 
   Text[Style["Trasimeno", Bold], LakeTrasimeno, {-1.2, 0}]}
  },
 GeoBackground -> {"CountryBorders", DateObject[{-250}]},
 GeoRange -> Quantity[1000, "Kilometers"]]

enter image description here

$\endgroup$
3
  • $\begingroup$ Neat, +1. But how does it correspond to the border right above Trasimeno in the plot in the question? $\endgroup$
    – corey979
    Commented Apr 15, 2018 at 7:06
  • $\begingroup$ @corey979 I added the answer to the original question. $\endgroup$
    – Maturin
    Commented Apr 15, 2018 at 16:56
  • 1
    $\begingroup$ Cool. Geography is not my thing, but I think I'll play with it a bit. And I guess you can safely accept your own answer. $\endgroup$
    – corey979
    Commented Apr 15, 2018 at 17:38
3
$\begingroup$
redDot = Graphics[{Red, Disk[]}];
blueDot = Graphics[{Blue, Disk[]}];
Rome = Entity["City", {"Rome", "Lazio", "Italy"}];
LakeTrasimeno = Entity["Lake", "LakeTrasimeno::946n7"];
GeoGraphics[{Polygon[
   Entity["HistoricalCountry", "RomanEmpire"]], {GeoMarker[Rome, 
    redDot, "Scale" -> Scaled[0.02]], Black, 
   Text[Style["Rome", Bold], Rome, {-1.5, 0}]}, {GeoMarker[
    LakeTrasimeno, blueDot, "Scale" -> Scaled[0.02]], Black, 
   Text[Style["Trasimeno", Bold], LakeTrasimeno, {-1.2, 0}]}}, 
 GeoBackground -> Dated["CountryBorders", -250], 
 GeoRange -> Quantity[1000, "Kilometers"]]

enter image description here

$\endgroup$
2
  • 1
    $\begingroup$ Entity["HistoricalCountry", "RomanEmpire"]["StartDate"] yields DateObject[{-27, 1, 16}, "Day", "Gregorian", 2.] (and an "EndDate" of 395), so this does not match the borders at -250. I haven't found a match among Select[Entity["HistoricalCountry"]["Name"], StringContainsQ[#, "Roman"] &] either. $\endgroup$
    – corey979
    Commented Apr 14, 2018 at 23:12
  • $\begingroup$ Looks like there is only one "RomanEmpire" in the database, corresponding to the period of maximum expansion, most likely... $\endgroup$
    – ulvi
    Commented Apr 14, 2018 at 23:57

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.