Day 6 of the #30DayMapChallenge 2026.
Vintage — Spin up your time machine and do a map which looks like a historical map, or maybe the theme itself should be vintage.
I took the second option. Nothing says vintage like 4,500 years old.
For Day 6 I left Sydney behind and went back to the Bronze Age, to the Indus Valley Civilization: Harappa, Mohenjo-daro, Dholavira, Lothal and the hundreds of towns and villages around them. I wanted to see how far the Harappan world reached, and then ask MapAI a more fun question: where do we dig next?

The data
This is the first map of the challenge with my own data. The sites come from the IASNOVA Interactive Atlas of Indus Valley Civilization sites, which covers 45 major, regional, coastal and frontier Harappan sites with coordinates, chronology, site type, finds and trade connections. I turned the atlas into a CSV and uploaded it to MapAI.
The 45 sites stretch from Shortugai in northern Afghanistan to Daimabad in Maharashtra: 28 in India, 16 in Pakistan and 1 in Afghanistan.
The prompt
I have uploaded a CSV of 45 Indus Valley (Harappan) Civilization sites with latitude and longitude (source: IASNOVA Interactive Atlas). Load it as a point layer and check all coordinates are valid.
Analysis:
- Extent. Draw a convex hull around all sites and calculate its area in km² using an equal-area projection.
- Where do we dig next? Build a Delaunay triangulation of the sites. Treat any triangulation edge longer than 150 km as a gap in the known network. Mark the midpoint of each gap edge as a candidate zone with a 25 km radius. If a major-river dataset is available, rank candidate zones higher when they are within 20 km of a river, since Harappan settlements followed rivers. Rank the zones by gap length, then by river proximity.
Output 4 layers on a greyscale basemap (light grey, dark grey or black):
- The extent hull: no fill, thin white dashed outline.
- Candidate dig zones: semi-transparent bright magenta circles, labelled with their rank.
- Sites as bright circles coloured by phase in vivid, high-contrast colours (e.g. bright yellow, cyan, orange, lime green), with major cities (site_type “Major city”) noticeably larger.
- Labels for the major cities in white with a dark halo.
Tooltips for sites: Site name, Chronology, Site type, Modern location, Significance. For candidate zones: Rank, Gap length (km), Sites at each end, Near a river (yes/no).
In your answer, tell me:
- site counts by phase and country, and the hull area
- the top 5 candidate dig zones, with their approximate location (modern region and country), the sites they lie between, and why they rank highly
- the assumptions and limitations, including that these 45 sites are a selection of over a thousand known Harappan sites, so some “gaps” may already be excavated
The idea behind “where do we dig next?” is simple. Join every site to its neighbours with a triangulation, and look for the long edges: stretches of the network with no known site in between. If Harappan towns sat every few dozen kilometres along rivers and trade routes, a long empty edge is a place where something might be waiting.
What MapAI found
- 45 sites: 23 multi-phase, 10 Mature Harappan, 6 Pre/Early Harappan and 6 Late Harappan.
- The extent of the Harappan world, as a convex hull around these 45 sites, covers 1,667,394.6 km².
- 71 gaps: triangulation edges longer than 150 km, each marked as a 25 km candidate dig zone.
The top five candidate zones:
| Rank | Gap | Between | Approximate midpoint |
|---|---|---|---|
| 1 | 1,492.6 km | Shortugai – Sutkagen Dor | 31.48° N, 65.50° E |
| 2 | 1,469.5 km | Daimabad – Sutkagen Dor | 22.64° N, 68.46° E |
| 3 | 1,095.7 km | Alamgirpur – Daimabad | 24.27° N, 76.13° E |
| 4 | 944.2 km | Alamgirpur – Bhagatrav | 25.37° N, 75.20° E |
| 5 | 901.7 km | Nausharo – Shortugai | 33.35° N, 68.51° E |
What MapAI did
By the numbers, this map took:
- 20 tool calls
- About 3 minutes 30 seconds (212 seconds) from prompt to finished map
- About 55 credits
Here is its evidence trail, in its own words where possible.
How it understood the question
- Source: the uploaded CSV, attributed to the IASNOVA Interactive Atlas.
- Measure: hull area in square kilometres, and edge lengths in geodesic kilometres.
- Geography: sites across Afghanistan, India and Pakistan.
- Threshold: Delaunay edges longer than 150 km define the 25 km candidate zones.
- Assumptions: hull area in the equal-area EPSG:6933 projection; candidate midpoints taken halfway along the geodesic edges; river ranking skipped because no major-river dataset was available.
- Output: four layers for the extent, the candidate zones, the sites by phase and the major-city labels.
The workflow
- Checked all 45 rows for missing, out-of-range, duplicate and invalid coordinates.
- Counted the sites by phase and country.
- Calculated the convex hull area in an equal-area projection.
- Built the Delaunay network and kept the 71 edges longer than 150 km.
- Looked for a major-river dataset and found none suitable.
- Saved four styled layers with the site and candidate-zone tooltips.
The SQL
The triangulation is a one-liner in PostGIS.
ST_DelaunayTriangles turns the 45 points into a mesh of triangles, which MapAI then breaks into edges:
SELECT
d.path[1] AS tri_id,
d.geom AS tri
FROM
(
SELECT
ST_DelaunayTriangles (ST_Collect (geometry), 0.0, 0) AS gc
FROM
pts
) x
CROSS JOIN LATERAL ST_Dump (x.gc) d
Each long edge is then measured on the globe, not on a flat map, and its midpoint found by walking half the distance along it with ST_Project:
ST_Distance (geom_a::geography, geom_b::geography) / 1000.0 AS gap_length_km,
ST_Project (
geom_a::geography,
ST_Distance (geom_a::geography, geom_b::geography) / 2.0,
ST_Azimuth (geom_a::geography, geom_b::geography)
)::geometry AS midpoint
Gaps and uncertainties
MapAI flagged five:
- The 45 sites are a selection from more than 1,000 known Harappan sites, so some of the mapped gaps may already be excavated.
- No major-river dataset was available, so river proximity was not assessed, and the ranking uses gap length only.
- Delaunay gaps depend heavily on the sample of sites and do not prove that nothing is there.
- The hull measures the extent of this selection, not the full territory of the civilisation.
- The modern regions for each zone are approximate, based on the sites at each end, not looked up from administrative boundaries.
You can explore the live map here: 06 Vintage - Indus Valley Civilization.
What I noticed
The Harappan world was enormous. More than 1.6 million square kilometres from just 45 sites, and that is an underestimate, because the hull only reaches as far as the sites I gave it. For comparison, that is larger than Iran (about 1.65 million km²).
The “where do we dig next?” ranking is where it gets honest. The top two gaps are not really gaps at all. They are the longest edges of the triangulation, which run around the outside of the network: Shortugai, far up in northern Afghanistan, to Sutkagen Dor on the Makran coast, and Sutkagen Dor to Daimabad in Maharashtra. The midpoint of the second one lands in the Arabian Sea. Nobody is digging there.
That is the classic weakness of a Delaunay triangulation: the edges on the outside are long simply because there is nothing beyond them. The more interesting candidates are further down the list, in the long gaps inside the network, such as the stretches of Rajasthan between the Ghaggar-Hakra sites and Gujarat.
It is also a lesson in what the data can and cannot say. With 45 sites out of more than a thousand, most of these gaps are gaps in my CSV, not in the archaeological record. I asked MapAI to say so, and it did, right at the top of its gaps.
A better second pass would drop the edges on the outside of the network, add a river layer so the ranking can follow the old river courses, and use a much fuller site list. That one is going on the list for later in the month.
Day 6 done. Tomorrow: a 10 minute map.
#30DayMapChallenge #mapai #madewithmapai