A road and building numbering grid for a curved industrial park

Dan Jacobson1

Abstract

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.

Introduction

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.

Numbering roads

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.

Zoomed way out, looking at folded 'Road 5000' and the entire Industrial Park.
Zoomed way out, allowing us to see the entire Industrial Park, our imaginary folded Road 5000, and where "Road 0000" would be. (Don't worry. We don't plan on using any roads less than 1000.) The dots are № 7454 near thick red Road 7500, and № 2437, near thick red Roads 7500 and 2500.
Most of the Industrial Park, covered with a 100 x 100 graticule.
A 100 house number per block graticule, the values of which we also directly use as road names. Our "false origin" is at the intersection of Roads 2500 and 7500. Building № 2437 we will discuss shortly. At bottom note the irregular road that we'll grudgingly call Road 7050.

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:

Numbering buildings

We are finished naming (with numbers) all our roads. Now let's get busy numbering all our houses.

We focus on the Industrial Park's Service Center.
The Industrial Park's three-winged Service Center, together with its address node. We're going to assign it a Road 7500 address.

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.

Exercise 1:

Question 1:

What address would you assign to that other node in the picture? The one marked:

2461-2462
7412|7413

Answer 1:

№ 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.)

Exercise 2:

Just the corner where house 7454|7455 is.
Road 7460, and though not exactly aligned, Road 1750. Also shown is the house on their corner.
Question 2:

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.)

Answer 2:
  1. № 1757 Road 7460

  2. № 7454 Road 1750

Hierarchical addressing

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:

The two block area around house 7454.
The neighborhood of № 7454 Road 1750. Also shown are the "old" street names.
  1. № 7454 Road 1750 (but e.g., walking along Road 7500 you will never find the corner of Road 1750!)

  2. № 7454 Lane 1750 Road 7400 (if we want to express that the main access is from Road 7400)

  3. № 7454 Lane 1750 Road 7200 (if all traffic enters via a bridge, gate, etc. on Road 7200)

  4. № 7454 Alley 1750 Lane 7460 Road 1900 (if we want to express the way to get there is via Road 1900 then Lane 7460)

  5. № 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.

x00 Road y00 = № y00 Road x00

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.

Postal addresses

Q: What might a full postal address look like?

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...)

Dealing with irregular roads

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.

Methods

Geographic Information Systems used: OGR/GDAL, GNU Linux, Viking. Data: OpenStreetMap. Source code and KMZ.

  1. From Overpass Turbo (OpenStreetMap) download

  2. 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.

  3. 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.)

Conclusion

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.

References

  1. Xinshe: Folded Single Axis Addressing Planning

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.

1https://www.jidanni.org/

Last modified: 2026-04-09 14:30:00 UTC