Skip to content
Roads of Chiang Maiᨩ᩠ᨿᨦᩉ᩠ᨾᩲ᩵ EN ไทย

storyWhat a road does to an old city

ถนนทำอะไรกับเมืองเก่า

Measured, not argued: the square of 1296 against the rings around it.

Old map of Chiang Mai (Thailand) in 1945. Printed at the Survey of India Offices. Size: 57 x 87 cm. Scale: 	
1:5,000. Repository: American Geographical Society Library, University of Wisconsin-MilwaukSurvey of India Offices · Public domain

What it is

The site's spine. It takes every drivable way OpenStreetMap holds for the city and asks the same questions of the square inside the moat and of each ring outside it: how many intersections per square kilometre, how many lanes end in a dead end, how long a block is, how strongly the streets keep to a grid, how much of the network runs one way, how many wats sit in each zone. The measurements page has the numbers; this page reads them.

The long version

The square is the best-connected neighbourhood in the city, and it is the oldest. The grid of 1296 was laid gate to gate on the cardinal directions, and seven centuries of infill have kept to it: the orientation measure on the measurements page shows the moat zone closest to a perfect grid of any zone, and the intersection density highest. A lane inside the moat comes out somewhere. Outside, in the rings, it does not: the dead-end share climbs ring by ring, because a hom out there is a shared driveway that stops at the last house.

Each ring was an edge that became a middle. The Superhighway of 1969 was a bypass; the 700 Years Road of 2006 was a bypass; Route 121 was a bypass. The city grew past each in ten to fifteen years, and the bypass became a street with traffic lights, which the department then spent a decade digging under. Seven underpasses on ring two; three on ring one; five interchanges under tender on ring three. The pattern is not a failure of planning. It is what a ring road is for, and what it costs later.

The old city paid in walls. 1910–15: Chang Moi Gate and its bank removed for a straight road to the river. 1948: the moat roads built and stretches of a registered monument demolished. The square that had been a fortification became a roundabout. Since then the direction has reversed: a 12 m height cap, a walking street from 2002, Ratchadamnoen one-way for pedestrians from 2021, a world-heritage nomination in 2026 whose file flags a tunnel under the old town as a conflict.

The roads grew by two thirds; the vehicles doubled. The thesis this rests on counted main-road kilometres from 36.5 to 60.3 between 1992 and 2003 and registered vehicles from 465,659 to 933,733. Mahidol Road, built as a two-lane bypass in 1972, counted 121,403 vehicles a day in 2025. Every road in this catalogue was built to relieve the one before it.

And the trees are the exception. The yang-na on the Lamphun road are alive partly because the Superhighway took the Bangkok traffic off them in 1969. One new road did an old one a favour; it is the only case here.

Inference — the whole page is inference from counted things, and the counts are printed beside it with the method.

Historic map of Chiang Mai city for King Inthawichayanon (1817-1897), dated 1893. The city was protected by an inner wall (brick wall), an outer wall (earth wall), 2 moats and multiple city gates. Eac
Unknown author · Public domain
Map of Chiengmai (Chiang Mai) city, 1931. This is the capital of Chiang Mai province. The top left stamp says: "Royal Insurance Company Limited, 26 October 1931 Liverpool."
Unknown author · Public domain

Connected to

Named here by

Where each claim comes from
FieldTierSourceNote
defaultinferenceOpenStreetMap, via Overpass — OpenStreetMap contributors
text_thinferencewritten in Thai by this project, in the northern register where it fits; not machine-translated

Sources

cited Cited — a named source, linked · harvested Harvested — fetched from an open dataset, with its licence · tradition Tradition — general knowledge of the tradition, hedged · inference Inference — this project's own reasoning from the above · field Field — someone stood there

This record as JSON