The route shapes were built by sorting road nodes by distance. Where R274 has a central reservation OSM draws each carriageway as its own way, so the sort alternated between them: 216 of 1,715 points in 274-route.json 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, so they follow one spine. Point spacing sums to exactly the km span and km strictly increases in every file. No roster coordinate came from a dropped point. 274-route-west.json 54 pts 30.46 - 35.53 ends on the first main point 274-route.json 1499 pts 35.53 - 108.74 274-route-east.json 54 pts 108.56 - 113.99 overlaps main by 0.18 km The stubs let the video bring the road in before 川端橋 and carry it on past 右左府 for 東に続く. The GeoJSON carries all three as separate lines. Page and GeoJSON rebuilt, which also picks up the roster fixes. 274-dev.md brought up to date: file table, current roster figures, and three new entries under errors found and fixed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
15 KiB
title, categories, wiki
| title | categories | wiki | |||
|---|---|---|---|---|---|
| 274 - how the roster was built |
|
|
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; the song page is 274.
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 |
|---|---|
274-lookup.md |
The roster. 131 entries, 37.27–107.83 km, 20 kinds, 86 distinct names, 91 with readings. Source of truth. |
274-lookup.csv |
The same rows, 16 columns, generated from the Markdown. |
274-lookup.geojson |
The same rows as points, plus the three route lines (route-west, route, route-east) and the district bands. |
274-transect.html |
Self-contained interactive page. Opens from disk; also published as an Artifact. |
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 東に続く. |
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. |
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. |
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 草木橋, ポン久留喜橋, 福山大橋 and 新川橋. It misled twice: モトツ橋 and オロロップ橋 are both named for streams they do not cross at the bridge (see below).
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.
- オロロップ橋 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. - 滝ノ上信号場 — 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.
- 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.
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
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
All are stdlib-only and idempotent. The CSV, the GeoJSON and the published Artifact are regenerated from the same Markdown by hand.