Our addressing system is special in that e.g., № 6100 Road 3300 and № 3300 Road 6100 are the same building.
We choose the curved roads of Youshi Industrial Park, Taichung, Taiwan to see how such a grid would look -- in theory, on a map only -- not actually going there and changing anything.
Road alignment and address coordinate data is obtained from OpenStreetMap. We choose a prominent intersection to be the corner of our Roads 2500 and 7500.
Software: we make a table of old road name vs. new road number and using GDAL create ground control points from the intersections, which along with thin plate spline allow us to deal with the curved grid.
However we purposely do not go the final step of blindly snapping address nodes to the closest road, but instead keep humans in the loop, with the system giving suggestions, and the housing officer making the final decision of what address to assign to each house.
Keywords: house addressing planning, street numbering planning, house addressing grids, GDAL, Linux.
Welcome to our addressing classroom. We looked around the map and noticed the curved streets of the Youshi Industrial Park, Dajia District, Taichung, Taiwan would be an interesting challenge.
What we're doing here is strictly an exercise -- No, we didn't actually check first to see if there is anything in fact wrong with their current building numbers or street names.
First we pick an intersection in the center of town as our origin. You know, the corner of Main and Center Streets -- but that's not what we're going to call them.
In our toolkit we have 500 × 500, 5000 × 5000, 50000 × 50000, etc. house number grids. We select 5000 × 5000. With 100 numbers per city block that means a 50 × 50 block grid (graticule.)
Note rectangular blocks are the norm, not square. But each side of the street will get 50 numbers nonetheless, 50 odd, 50 even. Note also we never have to measure how many meters or feet anything is.
And we'll use the same red color as the grid on the map we saw hanging on the wall at a Highland Park IL USA fire station.
Yes in many towns this would be the intersection of 25th Avenue and 75th Street. But we will even be more simple than in Utah, USA, and will call them both just "Roads": "Road 2500", "Road 7500", also with no "North", "East", "South", or "West" prefix baggage.
At 100 numbers per block that was how we named all our roads. And in fact house numbers too:
We are finished naming (with numbers) all our roads. Now let's get busy numbering all our houses.
We see The computer is suggesting
2437-2438
7459|7460
What might that mean?
Well, the "-" and "|" represent the two different
axes. And we have decided that this house will
receive a Road 7500 address, so we can ignore the
"7459|7460" part. We pick "Number 2437 Road
7500", which can be written,
№ 2437 Road 7500
(Yes, if we were doing this in the USA we would
drop the "№". But keeping it here allows us
to also systematically translate the Chinese: 7500 路
2437 號 ⇄ № 2437 Road 7500. Indeed, we
also say Road 7500 and not "7500 Road" to
allow us to unroll it in the correct Chinese
(backwards) order easily. Just like "2437 №"
is not acceptable English, not every language is
flexible.)
(As far as dictating if the public shall use "Number", №, No., or nothing; Rd., RD, etc., well, the public has a mind of their own. Plus today we are trying to talk about the numbers themselves. P.S. Luckily our Road 2500 is near enough to the edge of the Industrial Park so we don't have to worry about if Road 900 should be written "Road 0900", and steal the show.)
Even numbers go on the higher sides of roads, odd numbers on the lower. That's why we picked № 2437 instead of № 2438.
You see the house is located between the graticule lines 7400 and 7500. That's why we say it is on the lower side of Road 7500.
So why even on higher side, odd on lower? Ah.. you see this all is rooted in folded single axis theory.
(This also ties in to imaginary Road 5000. Just note that even if neighboring areas think our system is great and want to get on the bandwagon, we can't extend it beyond Road 5000, or beyond Road 0000. (Nor do we plan to use roads less than 1000.))
(That leaves only one direction out of four: beyond Road 9998. (We did want to keep all numbers four digits long.) If we knew how popular it would become, we would have picked a 50000 × 50000 grid. True, retrofitting smaller into larger has 5 × 5 places where just adding one digit at front is needed, but I digress.)
Sure, the reader is thinking.
All this can be done automatically. You don't need to hire an addressing officer. The whole town could be addressed with the press of a button. Just "snap" the address nodes to the nearest road. If snapping upwards or rightward give odd, downwards or leftwards give even.
OK, 2437 − 2400 = 37 and 7500 − 7460 = 40. That means we should snap to Road 2400. But not only is irregular Road 2400 not where we expect it to be, but instead further, but also the main driveway entrance of this particular building happens to be on the side facing Road 7500. And even if there were two main entrances, everybody knows to assign the address using the important Road 7500 and not the side street, Road 2400. Everybody except AI perhaps. For now let's keep humans in the loop.
What address would you assign to that other node in the picture? The one marked:
| 2461-2462 7412|7413 |
№ 2462 Road 7400
Note that the pairs of numbers are merely a suggestion to the staff member doing the numbering. You never know what kind of nonsense they have to deal with, so we always leave a little flexibility. (And yes, as it is all their lawn we could issue № 2401 Road 7500 to them instead of more exact № 2437 Road 7500, provided they promise never to erect another building there. But sorry, we are not going to give them № 2400 Road 7500 over our dead body, because that belongs on the other side of the street.)
A house lies at the corner of Road 1750 and Road 7460. (Yes, we name the road 1750 as a nice round number, over 1748.) What are its possible addresses? (Yes, later when we know which road its entrance faces, we'll give it that road's address.)
№ 1757 Road 7460
№ 7454 Road 1750
In the above image it so happens that Roads 1750 and 7460 are not main roads at all. Drivers might need to pull out their cellphones to check how to get there. That would negate one of the main "selling" points of our system: no devices needed to navigate, beyond just a flashlight at night at most.
So let's take advantage of Taiwan's hierarchical nested addressing "language", and see how many different ways we could alternatively issue that address plate "№ 7454 Road 1750", depending on (the final planned state of) the local road network:
№ 7454 Road 1750 (but e.g., walking along Road 7500 you will never find the corner of Road 1750!)
№ 7454 Lane 1750 Road 7400 (if we want to express that the main access is from Road 7400)
№ 7454 Lane 1750 Road 7200 (if all traffic enters via a bridge, gate, etc. on Road 7200)
№ 7454 Alley 1750 Lane 7460 Road 1900 (if we want to express the way to get there is via Road 1900 then Lane 7460)
№ 7454 Alley 1750 Lane 7460 Street 1900 Road 7500 (if people well never find the place unless they go via Road 7500, because there is some permanent blockage when attempting to get there via Road 7400)
As we see, the list is endless. In fact Taiwan's address laws dictate the difference between Lane and Road, etc. is determined by width. Yes, the laws need revision, but this hierarchical addressing method is in fact rather compatible with them.
We claim "№ x00 Road y00 is the same house as № y00 Road x00", and this phenomenon happens on every street corner, i.e., 50 × 50 = 2500 times.
Let's examine an average corner. Here are four houses tightly clustered around an intersection. Each house has two possible addresses, depending on which way its driveway or door is facing:
| № 8003 Rd 3000 | R d |
№ 8002 Rd 3000 | |
|---|---|---|---|
| № 8001 Rd 3000 № 2998 Rd 8000 |
№ 8000 Rd 3000 № 3000 Rd 8000 |
№ 3002 Rd 8000 |
|
| Rd | 8000 | ||
| № 2999 Rd 8000 № 7999 Rd 3000 |
30 00 |
№ 3001 Rd 8000 № 7998 Rd 3000 |
№ 3003 Rd 8000 |
As a matter of fact, in crowded conditions, all eight addresses could be used: I live at № 8000 Road 3000, and my neighbor just around the corner is № 3000 Road 8000.
A: Some variation of № 2437 Road 7500 Dajia District Taichung City 437123 Taiwan. But that's not the focus of this article. (Also there is a slight chance that a second grided area in the same District might want to use a similar system...)
We saw a road that we will call Road 7050. It in fact twists all the way between alignment 7000 and 7080 during its path from 1900 to 3400. Any more bending and we'd be forced to just call it Nerblestein Memorial Boulevard.
Geographic Information Systems used: OGR/GDAL, GNU Linux, Viking. Data: OpenStreetMap. Source code and KMZ.
From Overpass Turbo (OpenStreetMap) download
roads:
way["highway"]["name"~"^(幼|工|青)"],
address points:
node["addr:street"~"^(幼|工|青)"].
Make a table of old road names vs. new road values. There is no X and Y, just a "fold" at 5000.
old new 幼四路 2200 幼五路 2500 幼六路 2800... 工二路 7400 幼獅路 7500 工九路 7600...
The intersections of these roads become our ground control points (GCPs). We choose the thin plate spline transformer to minimize distortion among our many GCPs.
Declare the extent and intervals for our
graticule laid up the road network: x0=1400
xi=100 x1=3400 y0=7000 yi=100 y1=7700.
(Yes, we still need to refer to X and Y -- but
strictly internally.)
As long as we are talking about a grid, bent or
not, our system can handle any X, Y grid situation.
Even in the densest slums integer addresses can
still be obtained. All one needs to do is adjust the
system's meters per number ratio. As there are two
such independent ratios, xi and
yi, rectangular blocks are no problem.
As we employ thin plate splines, twisting and
skewing are no problem.
Our system does more harm than good in areas with random roads such as in the mountains. There a strictly hierarchical system would be more suitable.
In the Taiwan context there are large areas with grid roads like Xinshe, Shoufeng, and here. Many have to do with former sugar industry holdings.
Now you might say "with the same road number despite breaks along its length, are you sure this would have helped the fire department get there faster in Shoufeng Township? ..."
This paper will be submitted to the 2026 Taiwan Geographic Information Society (TGIS) conference, July 1, 2026, Taichung, Taiwan.
Last modified: 2026-04-09 14:30:00 UTC