Ptolemy's townsROEN
Ptolemy's map of Dacia, with his grid of degrees and the 44 towns, stretched over the real relief of Romania

Loading the map…

  1. 44 towns in Ptolemy, 34 without a sure site

    The lost towns of Dacia, from Ptolemy's numbers

    Around AD 150, Ptolemy wrote down two numbers for every town of Dacia, the land north of the lower Danube, roughly today's Romania, which Rome partly conquered in AD 106: how far east it lay, and how far north. There are 44 towns, and for 34 of them nobody knows for sure where they stood. Fitted to the towns that have been found, the numbers show where the others should be sought. Tried on towns whose ruins are known, they typically land 68 km from the ruins, so each lost town gets a search zone, not a point.

    Scroll: his map settles onto the real relief ↓

  2. The list

    Two numbers for every town#

    Ptolemy records Porolissum, the Roman town near Moigrad in northern Romania, at 49 degrees of longitude and 48 of latitude. Every one of the 44 towns of Dacia is written the same way: a name and two numbers, usually rounded to five minutes of arc.

    His degrees are not modern degrees. Longitude is measured from the Fortunate Isles in the Atlantic, and his Earth is smaller than the real one, so distances eastward come out too long. The latitudes are off too: Porolissum actually lies at 47°11′, not 48°.

    So the numbers cannot be dropped straight onto a modern map. First the way his map is bent has to be worked out, and that can only be learned from the towns that have been found.

  3. The fixed points

    Nine towns that have been found#

    Porolissum (Moigrad), Napoca (Cluj-Napoca), Potaissa (Turda), Salinae (Ocna Mureș), Apulum (Alba Iulia), Tibiscum (Jupa), Dierna (Orșova), Drobeta (Drobeta-Turnu Severin) and Cumidava (Râșnov) were identified from inscriptions or from the Roman road map, without using Ptolemy's numbers. Everything that follows rests on them.

    Turned, shrunk and shifted as a whole, his map misses every one: half by more than 26 km, Porolissum by 53 km. The lines run from where he puts them to their ruins.

    A tenth town, Germisara (Ptolemy's Zermizirga), near Geoagiu, also has an inscription naming it. It was kept aside, as a test.

  4. The fit

    His map stretches over the mountains#

    A map can be bent, not just turned. Each point of Ptolemy's Dacia is moved according to the known towns around it, with near ones counting more than far ones. As you scroll, his red grid bends over the Carpathians and the nine towns come close to their ruins: half end up less than 12 km away.

    Fitting his map to known towns is not a new idea. A team at the Technical University of Berlin (Andreas Kleineberg, Christian Marx, Eberhard Knobloch, Dieter Lelgemann) rebuilt Ptolemy's Germania that way (2010), and Marx and Kleineberg went on to the rest of Europe, Dacia included (2012). Șerban Drugaș computed positions for Dacia in 2020. None of their accessible work shows how well the method places a real town it was not fitted on; Sorin Forțiu (2013) checked some of their placements: Acmonia, for one, lands 88 km from its station on the Roman road map.

  5. The test

    Take a town out and see where the map puts it#

    Pick one of the nine towns. The map is computed again without it, then Ptolemy's numbers put it somewhere: the blue patch shows where it should be sought, the square where it really is.

    When each of the nine is taken out in turn, half land within 19 km of their ruins. Salinae comes nearest, at 14 km; Tibiscum farthest, at 47 km.

    Take out:

  6. The hard test

    On towns held out of the fit, the miss is three to four times larger#

    68 kmthe typical miss on the towns held back

    Taken out one at a time, the nine typically land 19 km from their ruins. On towns never used in the fit, the miss is three to four times larger. Seven towns were identified, with varying confidence, without Ptolemy's numbers (from inscriptions, the Roman road map or their names) and were left out of the fit entirely: Germisara, Aquae, Arcobadara, Aizisis, Acmonia, Amutrium and Angustia. On them the map typically misses by 68 km, from 31 km at Angustia to 95 km at Aquae. Three of them (Germisara, Arcobadara, Aquae) were added after the protocol was frozen; on the other four, fixed in advance, the typical miss is 60 km. Argidava, the fifth pre-registered test, is treated separately below.

    The same test run on 82 towns with known sites in six neighbouring regions (Upper and Lower Pannonia, Upper Moesia, the Lower Moesian Danube, inland Dalmatia and inland Thrace) gives between 34 and 64 km. Ptolemy's Dacia is no better than they are.

    The patches on the map are sized by the misses in those neighbouring regions, scaled so that the 50% zone holds about half of the towns hidden there (47%; the 90% zone, 91%). The Dacian towns played no part in the sizing, so they are the test: of the seven, three fell inside their 50% zone and six inside their 90% zone.

  7. The lost towns

    Where the others should be sought#

    Each town without a sure place becomes a patch: the darker it is, the likelier the town stood there. The solid line encloses half the probability, the dotted one nine tenths. Tap a patch or a name to see the town.

    The 50% zone typically covers 14,400 km², the area of a circle about 68 km in radius, from 5,000 km² for Marcodava to 57,000 km² for Carsidava. Ptolemy's numbers point to a district, not a hill.

    Each zone holds dozens or hundreds of sites from Romania's national archaeological register. But the zones hold no larger share of Dacian or Roman sites than the same patches moved at random by 60–200 km: the difference passes the usual 5% threshold in one of 35 cases, about what chance alone would give. The map says where to look, not what will be found.

  8. The copyists

    One letter copied differently moves a town hundreds of kilometres#

    The Geography survives only in handwritten copies. Its numbers were written in Greek letters, 49 as μθ and 45 as με, and one letter miscopied moves a town. Ziridava, long sought at Pecica near Arad, has longitude 49½ in most manuscripts. With it, the town's zone falls in southern Transylvania and Pecica is left 234 km away, outside even Ziridava's 90% zone. Some manuscripts, cited by Wilberg (1842) as E, Pal. 1 and M, have 45½, and Müller (1883) printed 45½ in his text: with that number Pecica falls inside the 12% zone.

    Argidava is usually placed at Vărădia in the Banat, where the Roman road map has a station called Arcidava. The manuscripts give it longitude 49½, which puts it 192 km from Vărădia. The number that brings it closer to Vărădia, 46½, is a correction proposed by the editor F. G. Wilberg in 1842 and adopted by C. Müller in 1883. With it, Vărădia falls inside the 53% zone, but the number comes from no manuscript, so the fit is no test.

    The buttons below show each reading on the map.

  9. The capital

    Which Sarmizegetusa?#

    Ptolemy writes Sarmizegethusa basileion, "the royal one". The Barrington Atlas and Drugaș place it at Grădiștea de Munte, the citadel of the Dacian kings. Marx and Kleineberg, as reported by Sorin Forțiu, place it at Ulpia Traiana Sarmizegetusa, the Roman colony founded after the conquest, 45 km to the west.

    His numbers put the town 26 km from the Roman colony and 60 km from the Dacian citadel. Allowing for the typical misses measured in the neighbouring regions, the colony is 3.3 times as likely as the Dacian citadel. That is a hint, not proof, and it fits the view, held by some historians, that Ptolemy's list describes Dacia after the conquest.

  10. Beyond the mountains

    In Moldavia the map has no fixed points#

    Petrodava, Utidava, Carsidava, Patridava and Triphulum sit in the north-east corner of Ptolemy's Dacia, in today's Moldavia. No town there is securely identified, so the map is extended beyond its last fixed point, Cumidava, and the zones grow: the 50% zone covers 25,000 to 57,000 km².

    Piatra Neamț, where Petrodava is usually sought, lies 124 km from the main estimate, outside the 50% zone and inside the 90% one. The numbers neither confirm it nor rule it out.

  11. Which of Ptolemy's towns could have stood near you#

    Type the name of your town or of an ancient one, or tap the map. See which lost towns' zones cover the place and which Dacian and Roman sites Romania's archaeological register records around it.

    Try:

    On the map: drag to move it; + and − zoom in and out.

What has been proposed so far, put to the test#

For every site historians have proposed, the table gives the zone it falls into under Ptolemy's numbers. "The 20% zone" means the site lies in the likeliest fifth of the patch; "outside the 90% zone" means the numbers do not support it. Where the numbers themselves were used to make the proposal, a good fit is no test.

Each proposed site, the zone it falls in and its distance from the main estimate
TownProposed siteProposed byBased onUnder Ptolemy's numbers
AcmoniaTârgu JiuMarx & Kleineberg 2012 (via Forțiu 2013)Ptolemy's numbersinside the 38% zone · 30 km
AcmoniaZăvoi (Tabula station Agnaviae) testForțiu 2013; PleiadesRoman road map, the nameinside the 79% zone · 68 km
AizisisFârliug (Tabula station Aizizis) testBarrington AtlasRoman road map, the nameinside the 20% zone · 52 km
AmutriumRăcarii de Jos (Roman fort)Marx & Kleineberg 2012, after Gudea 1997 (via Forțiu 2013)Roman road map, the nameinside the 18% zone · 62 km
AmutriumAd Mutrium (Tabula station) testBarrington AtlasRoman road map, the nameinside the 32% zone · 82 km
AngustiaBrețcu (Roman fort, Oituz pass) testDrugaș 2020 (reference point); Barrington Atlas with a query markarchaeology, the nameat the centre of the zone · 31 km
ApulumPiatra Craivii (Dacian fortress)part of Romanian historiography (Dacian Apoulon)archaeology, the nameinside the 23% zone · 24 km
AquaeAquae (Călan) testBarrington Atlas (Aquae); Drugaș 2020 lists Hydata as (Aquae)Roman road map, the nameoutside the 90% zone · 95 km
ArcobadaraOrheiu BistrițeiMarx & Kleineberg 2012 (via Forțiu 2013)older literature (misread, per Forțiu 2013)inside the 22% zone · 34 km
ArcobadaraIlișua (Roman fort; territorium Arcobadarense) testNemeti & Bărbulescu; Forțiu 2013 (Bereteu 2016: the Dacian town nearby, at Ciceu-Corabia)inscriptioninside the 59% zone · 66 km
ArgidavaVărădia (Tabula station Arcidava) testRomanian historiography (per Forțiu 2013)Roman road map, the nameoutside the 90% zone · 192 km
ArgidavaVărădia (Tabula station Arcidava) testRomanian historiography (per Forțiu 2013)Roman road map, the nameinside the 53% zone (Wilberg's conjecture) · 87 km
DociravaMăgura Șimleului (Dacian settlement, Șimleu Silvaniei)Dumitrașcu 1972 (via Forțiu 2013)archaeology, Ptolemy's numbersinside the 25% zone · 55 km
PetrodavaPiatra Neamț – Bâtca DoamneiRomanian historiographyarchaeology, the nameinside the 59% zone · 124 km
Praetoria AugustaInlăceni (Roman fort)Marx & Kleineberg 2012, after Gudea 1997 (via Forțiu 2013)Ptolemy's numbers, the nameinside the 28% zone · 54 km
RamidavaDrajna de Sus (La Tène fortress)Drugaș 2020archaeology, Ptolemy's numbersinside the 14% zone · 32 km
SandavaOdorheiu SecuiescMarx & Kleineberg 2012 (via Forțiu 2013)Ptolemy's numbersinside the 36% zone · 10 km
SarmizegetusaUlpia Traiana Sarmizegetusa (Roman colony)Marx & Kleineberg 2012 (via Forțiu 2013)inscriptioninside the 28% zone · 26 km
SarmizegetusaSarmizegetusa Regia (Grădiștea de Munte)Barrington Atlas; Drugaș 2020archaeology, the nameinside the 79% zone · 60 km
UtidavaTitelca hill (Valea Seacă, near Târgu Ocna)Romanian historiography (per Forțiu 2013)archaeology, the nameat the centre of the zone · 42 km
ZermizirgaGermisara (Cigmău – Cetatea Uriașilor) testDrugaș 2020 (reference point); Marx & Kleineberg 2012 ("Roman ruins at Cigmău", via Forțiu 2013)inscription, Roman road mapinside the 80% zone · 75 km
ZeugmaTrajan's Bridge at DrobetaMarx & Kleineberg 2012 (via Forțiu 2013)Ptolemy's numbersinside the 20% zone · 24 km
ZeugmaDanube crossing at LederataC. Müller 1883 (note, via Forțiu 2013)Roman road mapoutside the 90% zone · 106 km
ZeugmaDanube crossing at LederataC. Müller 1883 (note, via Forțiu 2013)Roman road mapinside the 56% zone (conjecture adopted by Müller) · 76 km
ZeugmaTrajan's Bridge at DrobetaMarx & Kleineberg 2012 (via Forțiu 2013)Ptolemy's numbersoutside the 90% zone (conjecture adopted by Müller) · 79 km
ZiridavaSebeșMarx & Kleineberg 2012 (via Forțiu 2013)older literature (misread, per Forțiu 2013)inside the 44% zone · 38 km
ZiridavaArdeu – CetățuieForțiu 2012Ptolemy's numbersinside the 83% zone · 70 km
ZiridavaPecica – Șanțul MareCrișan, from 1961archaeologyoutside the 90% zone · 234 km
ZiridavaPecica – Șanțul MareCrișan, from 1961archaeologyinside the 12% zone (manuscripts E, Pal. 1, M, as cited by Wilberg) · 119 km
ZiridavaArdeu – CetățuieForțiu 2012Ptolemy's numbersoutside the 90% zone (manuscripts E, Pal. 1, M, as cited by Wilberg) · 180 km
ZiridavaSebeșMarx & Kleineberg 2012 (via Forțiu 2013)older literature (misread, per Forțiu 2013)outside the 90% zone (manuscripts E, Pal. 1, M, as cited by Wilberg) · 209 km
ZurobaraTimișoaraForțiu (lecture 2011; table in Forțiu 2013)Ptolemy's numbersinside the 22% zone · 93 km

How the map was made#

The numbers

The coordinates come from the catalogue of Gerd Graßhoff and Olivier Defaux (Zenodo, 2019, licence CC BY 4.0), following the Stückelberger–Graßhoff critical edition (Basel, 2006), with both manuscript families: Ω and Ξ (Vaticanus gr. 191). Readings from the Wilberg (1842) and Müller (1883) editions that move a town are shown separately, never mixed in; Nobbe's text (1843) was also checked.

The fixed points and the tests

The nine towns used for the fit were chosen because their sites come from inscriptions or from the Roman road map (the Tabula Peutingeriana), not from Ptolemy's numbers. Their positions come from Pleiades. Germisara, Arcobadara (an altar from Ilișua names its territory), Aquae, Aizisis, Acmonia, Amutrium and Angustia, tied to a site without Ptolemy's numbers, were left out of the fit and serve only as tests.

The fit

For each point, an affine transform (shift, turn, and a different stretch in two directions) is fitted to the known towns, weighted by their distance from the point (a Gaussian kernel with a standard deviation of two of Ptolemy's degrees). Far from any known town, the result falls back to one shared transform for all of Dacia. The kind of transform and the width were chosen on the neighbouring regions, not on Dacia, and fixed before the final run (the protocol's SHA-256 fingerprint is c680661ba7f808ba). The fit was also run with the Roman towns on the Danube, from Ptolemy's chapters on the two Moesias, as extra points; with them, the typical leave-one-out miss on the nine is 25 km instead of 19.

The patches

Each patch mixes the two manuscript families, the two versions of the fit (with and without the Danube) and 40 versions of each: the full fit and 39 refits on known towns redrawn at random, with replacement. Each estimate then carries the miss measured in the neighbouring regions. It grows with the distance to the nearest known town and was scaled once, on the neighbouring regions' towns, so that the 50% zone holds about half of them. "The X% zone" is the smallest region that gathers X% of the probability.

The sites

The sites come from Romania's National Archaeological Register, as published on the national heritage map (layer 0, 29,186 sites). The 3,166 whose recorded names describe them as Dacian, Geto-Dacian, La Tène or Roman were kept: 866 Dacian and 2,305 Roman (some are both). Classifying by name misses sites with a generic name, so the counts are a lower bound. Only those with an exact position are drawn on the map.

Where the map stops

Ptolemy's numbers point to a district. They cannot choose between two neighbouring hills, and an identification made from them alone has to be checked on the ground. Any of the dozens of sites inside a zone could be the town. In Moldavia and Muntenia (eastern Wallachia) no town is securely identified, so the zones there are the least certain. Brețcu carries a question mark for Angustia in the Barrington Atlas; Zăvoi is the road map's Agnaviae, and its link to Ptolemy's Acmonia rests on the name alone. The register test used the site names of layer 0, comparing the share of Dacian and Roman sites in a zone with the same zone moved 60–200 km; the protocol had named the layer with periods, which cannot be tied reliably to site names, and matching on regional density was replaced by comparing shares.

Sources#