The Annales Regni Francorum are a (rather boring) official chronicle of the early Carolingians, covering the years from 741 to 829. I remember studying the historiography of this period in the two classes of Medieval Latin Literature I’ve been following in my college years. What I could not remember, however, is that the Annales cite Populonium, supposedly a settlement not far to Vignale, also known from the Late Antique Tabula Peutingeriana.
The passage is the following:
In Tuscia Populonium civitas maritima a Grecis, qui Orobiotae vocantur, depraedata est. Mauri quoque de Hispania Corsicam ingressi in ipso sancto paschali sabbato civitatem quandam diripuerunt et praeter episcopum ac paucos senes atque infirmos nihil in ea reliquerunt.
It seems that Populonium was not a humble village, nor a dead city, but a civitas maritima. This small piece of history couples nicely with two documents from the year 770 that were written at the ecclesia S(an)c(t)i Uiti in Cornina, again not far from Vignale. There was a vibrant life, focused around possibly small centres, that were nevertheless part of a very large network, mostly ecclesiastical.
However, words alone do not tell a story. What was a civitas at the time of Charlemagne? Consistency isn’t perhaps the best quality of a text that could have been composed by ‘cut and paste’ during the late 9th century. On the map below are all the civitates mentioned as such in the Annales.
There are 40 civitates mentioned in the Annales. Most of them are in Italy and France, the heart of the Kingdom of the Franks, with some also in Germany, Croatia and Spain. Constantinople is a striking presence in this list, being the largest city in the world at that time (possibly together with Harun al-Rashid’s Baghdad). Therefore, it looks like size was not one of the qualifying criteria for defining a civitas. In fact, it becomes clear that they are more of a political body when we find peoples associated with a civitas, as for example the Autosiodorum civitatem where Charlemagne spent some time in the year 778 (if I am not mistaken).
So maybe it’s the episcopus who grants the title of civitas to Populonium. After all, the notion of civitas in Roman Latin is opposed to other terms defining the physical settlement such as urbs or oppidum, as in this excerpt from Rutilius Namatianus:
Agnosci nequeunt aevi monumenta prioris:
Grandia consumpsit moenia tempus edax.
Sola manent interceptis vestigia muris,
ruderibus latis tecta sepulta iacent.
Non indignemur mortalia corpora solvi:
Cernimus exemplis oppida posse mori.
‒ Rutilius Namatianus, De reditu suo, I, 409-414
I like to cite this passage because it refers to Populonia, the Etruscan and Roman city that ruled the same territory I am discussing. Rutilius wrote his poem in the years 415 or 417, almost four centuries earlier than the texts presented above, so no direct links are (chrono)logically allowed. Whatever happened during those four centuries is a matter for archaeological research.
The problem with archaeology is that we can assess the rough date when a villa or village were abandoned or founded, but it is more difficult to follow people when they moved, especially if the move is from larger to smaller.
Making the map
In the second part of this post I will describe how the above map was made, starting from the historical source.
- the full Latin text from the Latin Library or Michael L. Gorodetsky‘s home page
- Pleiades places (online)
- Regnum Francorum Online (RDF dump)
- GeoNames (via geopy)
It should be clear that in the recipe there is a lot of hand-made work.
First I converted the HTML to plain text with
html2text. The resulting file, that I called
annales.txt for convenience, was then parsed with
grep to identify all the occurrences of the term civitas. The command is:
$ grep -C 1 annales.txt "civita"
and allows to match all possible variants of the word, depending on the syntactical context. From the output of
grep, I compiled by hand a list of the 40 places shown in the map. With 400, it would have been better to devise a semi-automated procedure, but in this case I preferred to concentrate on the results. A list of place-names is perfect for geocoding, except that there is no geocoding service for the 9th century! My list became a table (in a CSV file), and in a second column I added the modern name of the place, together with the country and the ZIP code to make geocoding more reliable.
Enter geopy, a Python library for geocoding, that supports several backend services, including GeoNames. A short script, and we have a set of coordinates for our Early Medieval civitates, ready to fit on a map. I loaded the CSV file in QGIS, added a background from Natural Earth, tweaked the labels and the map was ready. All done? Not really.
Creating a dataset
I want to have a small but solid dataset for this map, so I thought the best thing would be to find the corresponding Pleiades place. Pleiades has a blurred definition of Antiquity, but being a derivative of the Barrington Atlas there is very little Early Medieval knowledge in it. That’s where Regnum Francorum Online (RFO) comes in: thanks to the one-to-one mapping between places in RFO and Pleiades, I could look for the corresponding Pleiades URI for most places. In some cases, this is not possible (there is no RFO nor Pleiades place for Rota and Venice, yet, but I used Torcello as a convenient compromise for the latter) or it is difficult (as in the case of Smeldingorum, to be found in Germany without a more detailed location).
Humans make mistakes. When the map was ready, I checked again that everything was in place. The combination of RFO and Pleiades was very helpful: for example, I mis-attributed Tarvisium to modern Tarvisio whereas in fact it is Treviso and I found out that Rota is not modern Roses but the smaller inland village of Roda de Ter (a detailed account of the siege is on the Catalan Viquipèdia).
Finally, an interactive map is available below if you just want to look at the map in your browser. It’s made with MapBox.