2026-09-09 23:14:11 +09:00
|
|
|
|
---
|
2026-09-12 20:35:44 +09:00
|
|
|
|
title: 274 - how the roster was built
|
2026-09-09 23:14:11 +09:00
|
|
|
|
categories:
|
|
|
|
|
|
- Songwriting notes
|
|
|
|
|
|
wiki:
|
|
|
|
|
|
publish: false
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-09-12 20:35:44 +09:00
|
|
|
|
# 274: how the roster was built
|
|
|
|
|
|
|
|
|
|
|
|
This is the provenance document for the 川端橋–右左府 roster and the interactive
|
|
|
|
|
|
transect page. The roster itself lives in [274 reference tables](274-lookup.md); the song
|
|
|
|
|
|
page is [274](274.md).
|
|
|
|
|
|
|
|
|
|
|
|
Nothing here is authoritative about the road. It is a record of where each number came
|
|
|
|
|
|
from, which numbers are derived rather than measured, and which were corrected by hand
|
|
|
|
|
|
against reality.
|
|
|
|
|
|
|
|
|
|
|
|
## What exists
|
|
|
|
|
|
|
|
|
|
|
|
| File | What it is |
|
|
|
|
|
|
|---|---|
|
2026-09-17 09:44:33 +09:00
|
|
|
|
| `274-lookup.md` | The roster. 131 entries, 37.27–107.83 km, 20 kinds, 86 distinct names, 91 with readings. Source of truth. |
|
2026-09-12 20:35:44 +09:00
|
|
|
|
| `274-lookup.csv` | The same rows, 16 columns, generated from the Markdown. |
|
2026-09-17 09:44:33 +09:00
|
|
|
|
| `274-lookup.geojson` | The same rows as points, plus the three route lines (`route-west`, `route`, `route-east`) and the district bands. |
|
2026-09-12 20:35:44 +09:00
|
|
|
|
| `274-transect.html` | Self-contained interactive page. Opens from disk; also published as an Artifact. |
|
2026-09-17 09:44:33 +09:00
|
|
|
|
| `274-route.json` | 1,499 route points with their kilometre, one clean spine through the range. |
|
|
|
|
|
|
| `274-route-west.json` | 54 points, km 30.46–35.53: the road arriving before 川端橋, ending on the first main point. |
|
|
|
|
|
|
| `274-route-east.json` | 54 points, km 108.56–113.99: the road carrying on past 右左府, for 東に続く. |
|
2026-09-12 20:35:44 +09:00
|
|
|
|
| `274-districts.json` | 23 大字 bands with entry and exit kilometres. |
|
|
|
|
|
|
| `274-transect-build.py` | Re-reads the roster and rewrites the page's data block. |
|
|
|
|
|
|
| `274-romaji.py` | Fills the Romaji column from the Kana column. |
|
2026-09-17 09:44:33 +09:00
|
|
|
|
| `274-lyrics-index.py` | Resolves every line of `274.lrc` to its roster entry with timing and coordinates. |
|
|
|
|
|
|
| `274-lyrics-index.csv` | Its output: one row per sung object, the file the music video syncs to. |
|
2026-09-12 20:35:44 +09:00
|
|
|
|
|
|
|
|
|
|
Flow is one-way: **`274-lookup.md` → everything else.** Editing a generated file is pointless;
|
|
|
|
|
|
it will be overwritten on the next build.
|
|
|
|
|
|
|
|
|
|
|
|
## Scope
|
|
|
|
|
|
|
|
|
|
|
|
The range is **川端橋 (37.27 km) to 右左府 (106.22 km)**, chosen by the author, not derived.
|
|
|
|
|
|
|
|
|
|
|
|
- West end at the bridge rather than the settlement: 川端's substance lies upstream, west
|
|
|
|
|
|
of the bridge, and is deliberately outside the frame. The JR station was excluded for
|
|
|
|
|
|
the same reason and later re-added.
|
|
|
|
|
|
- East end at 右左府 — 発電所, 変電所 and the transmission line 右左府線 — after which the
|
|
|
|
|
|
road continues east out of the piece.
|
|
|
|
|
|
- Everything beyond is out of scope: 千呂露橋, 大颱橋, the whole of 日勝峠, the Tokachi
|
|
|
|
|
|
descent. Full-route material stays in the KB at `~/infra/kb/inbox/surreal/md/`.
|
|
|
|
|
|
|
|
|
|
|
|
Two entries sit past the nominal east end (滝の沢川 107.29, ルウケシオマナイ川 107.83)
|
|
|
|
|
|
because they fell inside the computation window; they are not part of the intended range.
|
|
|
|
|
|
|
|
|
|
|
|
## Sources
|
|
|
|
|
|
|
|
|
|
|
|
**北海道開発局 個別施設計画, 令和8年3月** — the national facility registers, three PDFs:
|
|
|
|
|
|
橋梁長寿命化修繕計画, 道路トンネル個別施設計画, 大型の構造物個別施設計画. Gives every bridge,
|
|
|
|
|
|
tunnel and shed with length, width, type, build year, inspection year and 判定区分. No
|
|
|
|
|
|
coordinates and no kilometrage. Text extracted with pypdf; columns reconstructed by
|
|
|
|
|
|
anchoring on the inspection year and grade at the right and the bureau/office at the left.
|
|
|
|
|
|
**Not checked against the original page images.**
|
|
|
|
|
|
|
|
|
|
|
|
**OpenStreetMap** (ODbL, retrieved 2026-09-08/09) — the route geometry, and most points of
|
|
|
|
|
|
interest. Route relation `r6651380`. Reading tags `name:ja-Hira` and `name:ja-Latn` where
|
|
|
|
|
|
they exist, which was 42 of the original 170 rows.
|
|
|
|
|
|
|
|
|
|
|
|
**国土数値情報 河川データセット (W05)** via the Geoshape repository at 国立情報学研究所 —
|
|
|
|
|
|
watercourse names and geometry for the 石狩川, 鵡川 and 沙流川 systems. All 561 named rivers
|
|
|
|
|
|
were fetched, not only the 「その他」 group: named rivers carry their own 河川コード and are
|
|
|
|
|
|
served separately, which is the mistake that caused the first pass to miss 夕張川, 鵡川,
|
|
|
|
|
|
沙流川, 穂別川, サヌシュッペ川, both ウシャップ rivers and ホルカクルキ川.
|
|
|
|
|
|
|
|
|
|
|
|
**国土地理院 逆ジオコーディング** — `mreversegeocoder.gsi.go.jp`. Coordinate to municipality
|
|
|
|
|
|
code and 大字. Joined to GSI's `muni.js` for the municipality name including the 郡.
|
|
|
|
|
|
|
|
|
|
|
|
**日本郵便 郵便番号データ** (Hokkaido file, CP932) — kana readings for municipality and
|
|
|
|
|
|
町域, folded from half-width katakana to hiragana.
|
|
|
|
|
|
|
|
|
|
|
|
**route01.com r274p2–p4** and **hgf03030.a.la9.jp** — two drivers' 2019 trip reports. The
|
|
|
|
|
|
only source for structure *order*, which the registers do not carry. Also the source for
|
|
|
|
|
|
several details no dataset has: the painted-out hexagon on the 道道610 sign, the bear
|
|
|
|
|
|
statue at the drive-in, the 合目 markers restarting on the Shimizu side.
|
|
|
|
|
|
|
|
|
|
|
|
**Google Maps** — via the author, for everything OSM lacks. See below.
|
|
|
|
|
|
|
|
|
|
|
|
## Method
|
|
|
|
|
|
|
|
|
|
|
|
**Kilometre datum.** A node graph is built from the ways of the OSM route relation.
|
|
|
|
|
|
Dijkstra from a seed node gives distance along the road for every node. The relation is
|
|
|
|
|
|
broken across the divided-carriageway stretch in 札幌, so the seed is the west end of the
|
|
|
|
|
|
largest connected component, near 上野幌 — **not the official start**. Comparison against
|
|
|
|
|
|
KP values in a 帯広開発建設部 disaster report suggests official KP ≈ these figures + 14 km,
|
|
|
|
|
|
unverified. One kilopost read on Street View would settle it. Everything downstream —
|
|
|
|
|
|
ordering, district bands, offsets — is internally consistent regardless.
|
|
|
|
|
|
|
|
|
|
|
|
**Point features** are projected to their nearest route node; the offset column is the
|
|
|
|
|
|
straight-line distance from feature to road.
|
|
|
|
|
|
|
|
|
|
|
|
**Structures** have no coordinates in the registers, so their positions are derived two
|
|
|
|
|
|
ways. First, OSM tags each bridge and tunnel as its own way, giving a position and a
|
|
|
|
|
|
geometric length; aligning that ordered sequence against the registers' ordered lengths by
|
|
|
|
|
|
Needleman–Wunsch transfers the positions. 穂高トンネル lands within 9 m. Second, where a
|
|
|
|
|
|
bridge is named after the watercourse it crosses, the geometric crossing point gives an
|
|
|
|
|
|
independent position that overrides the alignment — this fixed 草木橋, ポン久留喜橋,
|
2026-09-17 09:44:33 +09:00
|
|
|
|
福山大橋 and 新川橋. It misled twice: モトツ橋 and オロロップ橋 are both named for streams they
|
|
|
|
|
|
do not cross at the bridge (see below).
|
2026-09-12 20:35:44 +09:00
|
|
|
|
|
|
|
|
|
|
The alignment is reliable in the 60–97 km core, where tunnels anchor it, and unreliable at
|
|
|
|
|
|
both ends where small bridges cluster and OSM ways do not correspond one-to-one. 唐沢橋
|
|
|
|
|
|
(9.1 m) and 福本沢川橋 (3.0 m) have no position at all — below the size OSM splits out.
|
|
|
|
|
|
|
|
|
|
|
|
**Watercourses** are positioned at closest approach, which equals the crossing for streams
|
|
|
|
|
|
the road crosses and is arbitrary for streams it runs beside. サヌシュッペ川 is tangent at
|
|
|
|
|
|
two reaches 5 km apart for this reason; 沙流川 is placed where the road joins its valley
|
|
|
|
|
|
at 右左府, not at its nearest point, which falls past the range end.
|
|
|
|
|
|
|
|
|
|
|
|
**District bands** come from reverse-geocoding the road itself every 250 m — 287 samples
|
|
|
|
|
|
producing 23 bands with entry and exit kilometres. This is the only method here that can
|
|
|
|
|
|
say where the road enters and leaves a district; point data cannot, because representative
|
|
|
|
|
|
points sit at settlement centres.
|
|
|
|
|
|
|
|
|
|
|
|
**Name extraction** strips generic tails (橋, 川, トンネル, 覆道, 郵便局, 発電所, 町, 丁目),
|
|
|
|
|
|
strips the Ainu qualifiers パンケ/ペンケ/ポン, and aliases variants together (十三哩→十三里,
|
|
|
|
|
|
滝ノ上→滝の上, 浪ノ沢→浪の沢, 能見→熊見, クルキ→久留喜). Mechanical and meant to be corrected.
|
|
|
|
|
|
|
|
|
|
|
|
**Romaji** is generated from kana, never from kanji, in wāpuro style — おう→ou, ゅう→yuu,
|
|
|
|
|
|
っ doubles, ー repeats, ん→n' before a vowel or y. The trailing generic is split off and
|
|
|
|
|
|
lowercased. Kana is the source of truth; where kana is blank, romaji stays blank.
|
|
|
|
|
|
|
|
|
|
|
|
## Human in the loop
|
|
|
|
|
|
|
|
|
|
|
|
The machine-derived roster was wrong in ways no amount of cross-referencing would have
|
|
|
|
|
|
caught. Every item below came from the author reading signs, satellite imagery and Street
|
|
|
|
|
|
View, or from knowledge not in any dataset.
|
|
|
|
|
|
|
|
|
|
|
|
**Corrections to derived data**
|
|
|
|
|
|
|
|
|
|
|
|
- **十三哩橋 / 十三里橋** — the register writes 哩, the kanji for *mile*; the plate on the
|
|
|
|
|
|
bridge reads 里. Confirmed on Street View. As a place name it is read **とみさと**. The
|
|
|
|
|
|
origin is the 13-mile post from 追分駅, so the name runs mile → ri → hamlet, and the
|
|
|
|
|
|
register is the only place the mile survives.
|
|
|
|
|
|
- **ホルカクルキ川** — I claimed it had no counterpart in W05. It does, 河川コード
|
|
|
|
|
|
8101030169; I had fetched only 12 of 561 named rivers. The 北海道 plate on the bank
|
|
|
|
|
|
confirms the spelling and gives the Ainu original **ホロカ・クルヒ (horka・kurihi)**,
|
|
|
|
|
|
"to turn back" and "its shadow" — *horka* marks a stream running counter to its parent.
|
|
|
|
|
|
route01's ホロカクルキ is a slip.
|
|
|
|
|
|
- **モトツ橋** — I had it at 86.16 km on the パンケモトツ沢川 crossing. It is at 87.12,
|
|
|
|
|
|
the sheltered span between モトツトンネル and 福山トンネル. The identical 62 m lengths of
|
|
|
|
|
|
bridge and shelter are the same deck, not a coincidence. Street View and satellite,
|
|
|
|
|
|
July 2025: the two tunnels now read as continuous.
|
2026-09-17 09:44:33 +09:00
|
|
|
|
- **オロロップ橋 and 下福山橋** — I anchored オロロップ橋 on the オロロップ沢川 crossing at
|
|
|
|
|
|
77.05 km, but the stream crossing and the bridge are 1.2 km apart. An interim swap then
|
|
|
|
|
|
put 下福山橋 on that wrong spot. The author's Google pin places オロロップ橋 at 78.31, on
|
|
|
|
|
|
the 221 m OSM bridge way that matches the register's 205.9 m; 下福山橋 is the 104 m way
|
|
|
|
|
|
at 78.03. The original length-alignment had both right, and the sung order
|
|
|
|
|
|
ペンケ → 下福山 → オロロップ → 福山 was correct throughout.
|
|
|
|
|
|
- **紅葉山橋** — flagged by the author as the only `bridge (structure)` in the roster, with
|
|
|
|
|
|
a 533 m offset. The full Reiwa 8 bridge register lists it exactly once, on **国道452号**
|
|
|
|
|
|
(100.1 m, PC, 1989), just up R452 from the 紅葉山交差点. Removed.
|
2026-09-12 20:35:44 +09:00
|
|
|
|
- **滝ノ上信号場** — demoted from passenger station in 2024. Not in any dataset consulted.
|
|
|
|
|
|
- **登川** — the active community now falls under 楓 jurisdiction; 登川 is largely the
|
|
|
|
|
|
administrative remnant of Yubari's first settlements. This explains why 登川神社, 登川橋
|
|
|
|
|
|
and 登川郵便局 all geocode to 夕張市楓 while the district called 登川 begins further east.
|
|
|
|
|
|
- **穂別ダム神社** belongs to 穂別長和 — the dam and reservoir are in that district and only
|
|
|
|
|
|
the shrine fell the wrong side of an old boundary. **稲里神社**, the proper shrine for
|
|
|
|
|
|
穂別稲里, is too far inland to reach from R274. Neither fact is derivable from the
|
|
|
|
|
|
geocoded address, which reports only where each thing physically sits.
|
|
|
|
|
|
|
|
|
|
|
|
**Found by hand, absent from OpenStreetMap**
|
|
|
|
|
|
|
|
|
|
|
|
滝下八幡神社 · 滝下発電所 · 登川神社 · 豊進神社 · 穂別ダム神社 · 福山神社 · 名石駐車場 ·
|
|
|
|
|
|
日高神社 · 日高発電所 · 右左府発電所
|
|
|
|
|
|
|
|
|
|
|
|
Ten entries, all located from Google Maps pins resolved to coordinates, then positioned
|
|
|
|
|
|
against the route and geocoded like any other row. OSM carried two of the eight shrines.
|
|
|
|
|
|
A shrine 18 m from the carriageway (穂別ダム神社) was missing, so the shrine count is a
|
|
|
|
|
|
floor rather than a total, and parking and rest areas are effectively unmapped along the
|
|
|
|
|
|
whole route — 名石駐車場 came through only because it has a Google place listing.
|
|
|
|
|
|
|
|
|
|
|
|
**Judgement calls**
|
|
|
|
|
|
|
|
|
|
|
|
Readings were filled by hand and are not all guaranteed; the plaques will settle the
|
|
|
|
|
|
doubtful ones. Rivers are being skipped. Shops, restaurants, bus stops, temples, fuel
|
|
|
|
|
|
stations, campsites and hotels were removed deliberately. 名称不明, ベリベツ川 and
|
|
|
|
|
|
デチン沢川 were excluded with reasons recorded. A vacant Seicomart was rejected as an entry
|
|
|
|
|
|
and read instead as a relocation to the shop 859 m away.
|
|
|
|
|
|
|
|
|
|
|
|
## Errors found and fixed
|
|
|
|
|
|
|
|
|
|
|
|
Recorded because they indicate where this kind of pipeline fails.
|
|
|
|
|
|
|
|
|
|
|
|
- **Duplicate-named features shared one set of coordinates.** A name-keyed lookup meant
|
|
|
|
|
|
both セイコーマート pointed at the same spot 50 km apart; likewise three ENEOS and paired
|
|
|
|
|
|
bus stops. 12 coordinate cells were wrong.
|
|
|
|
|
|
- **穂高トンネル is 1,991 m long and was built in 1991.** The parser took the first
|
|
|
|
|
|
year-shaped token and grabbed the length. Fixed by anchoring build year and age from the
|
|
|
|
|
|
row end. The only such collision on the route.
|
|
|
|
|
|
- **W05 coverage** — see ホルカクルキ川 above. Assuming the 「その他」 group was the whole
|
|
|
|
|
|
dataset produced a confident false negative.
|
|
|
|
|
|
- **Over-stripping** — 登川 reduced to 登, and のぼりかわ romanised as "Nobori kawa", because
|
|
|
|
|
|
a trailing 川 looks generic. Both are toponyms where it is integral.
|
|
|
|
|
|
- **A table column mismatch** in the page: a header change applied while its matching cell
|
|
|
|
|
|
insert silently did not, shifting every column right of Kana by one.
|
|
|
|
|
|
- **A join key type mismatch** left the 大字 column empty in a committed CSV.
|
2026-09-17 09:44:33 +09:00
|
|
|
|
- **The corridor sweep selected by distance, not by road.** Anything within 2 km of R274 was
|
|
|
|
|
|
admitted, which is how 紅葉山橋 on R452 got in. An audit of all 53 roster structures
|
|
|
|
|
|
against every route in the three registers found no other stray.
|
|
|
|
|
|
- **Route shapes zig-zagged.** They were built by sorting road nodes by distance, and where
|
|
|
|
|
|
R274 has a central reservation OSM draws each carriageway as a separate way, so the sort
|
|
|
|
|
|
alternated between them. 216 of 1,715 main points lay on the second carriageway, up to 38 m
|
|
|
|
|
|
sideways, in the divided sections after 福山大橋 and through 占冠. All three shapes are now
|
|
|
|
|
|
traced back along the shortest-path tree, which follows one spine; point spacing sums to the
|
|
|
|
|
|
km span and km strictly increases. No roster coordinate came from a dropped point.
|
2026-09-12 20:35:44 +09:00
|
|
|
|
|
|
|
|
|
|
## Limits
|
|
|
|
|
|
|
|
|
|
|
|
- Distances are **not official kiloposts**.
|
|
|
|
|
|
- Structure positions are derived, not surveyed. Two have none at all.
|
|
|
|
|
|
- Register figures are not checked against the original page images.
|
|
|
|
|
|
- Shrine and parking coverage is a floor, not a total.
|
|
|
|
|
|
- The roster records where each object physically sits. It cannot express which community
|
|
|
|
|
|
an object belongs to — that distinction lives in the prose.
|
|
|
|
|
|
- The underlying 全国道路施設点検データベース restricts commercial use and copying of the
|
|
|
|
|
|
dataset. Facility names and build years are facts; wholesale redistribution of the tables
|
|
|
|
|
|
is not.
|
|
|
|
|
|
|
|
|
|
|
|
## Regenerating
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
2026-09-17 09:44:33 +09:00
|
|
|
|
cd wip/274
|
|
|
|
|
|
python3 274-romaji.py --check # dry run: report romaji differences
|
|
|
|
|
|
python3 274-romaji.py # fill the Romaji column from Kana
|
|
|
|
|
|
python3 274-transect-build.py # rewrite the page's data block
|
|
|
|
|
|
python3 274-lyrics-index.py # resolve the LRC against the roster
|
2026-09-12 20:35:44 +09:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-09-17 09:44:33 +09:00
|
|
|
|
All are stdlib-only and idempotent. The CSV, the GeoJSON and the published Artifact are
|
2026-09-12 20:35:44 +09:00
|
|
|
|
regenerated from the same Markdown by hand.
|