Nコード

Nコードをもっと利用しやすくするには?
その出発点になりうる Javascript ライブラリの実装。

Nコードとは

Nコード」とは、座標(経度・緯度)をより伝達・共有しやすくするための座標表記方法。

位置情報の基本である緯度経度を一般の人にも分かり易く、かつ専門的用途にも使える形に変換したものが、Nコードです。
WixBiz:座標軸のスタンダードを目指す「町の発明家」

緯度・経度を伝達する(例えば要救助者の座標をヘリに伝える…など)時、ミスを誘発するややこしさがある。

  • 度 – 度分秒 表記
    • 度 : 34.9999388, 134.9987552
    • 度分秒: 34°59′59.7797″, 134°59′55.5187″
  • 測地系
    • 日本測地系(旧日本測地系)
    • 世界測地系(WGS84), 日本測地系2000

座標を表現するときに「度」や「度分秒」が使われるが、これを理解していないと伝達時にミスが発生しそう。また、測地系という根の深い歴史的経緯があって(世界測地計に収束しつつあるけど)これを間違えると同じ座標でも450mもの違いになる。

そこで「Nコード」が登場する。
例えば…「にしわき経緯度地球科学館:テラドーム」の場合

世界測地系・度表現:34.9999388, 134.9987552

Nコード:6A 4187 6645/6667

と、簡潔になる。
また、日本に限定できるなら 6A は省略可能
市内など限定された範囲での運用なら 4187 を省略しても推定できる

これらの利点を活かして、大阪府や兵庫県などの防災関連で運用されている。

Nコードの問題点

端的に言えば、Nコードと経緯度の相互変換がお手軽というわけではないのが課題。
(もっとも、経緯度だってそれをすぐさま調べられる人は少ないとは思うけど)

例えば…
a) ハイキングで行動不能になったとき、そのハイカーはNコードを利用して消防に連絡できるか?
b) 家族から、Nコードを伝えられ、助けてくれと連絡があった場合、場所を特定できるか?

これらを実現するには、「Nコード簡易取得端末(愛称:Nぽじ)」や、スマフォアプリ「Nコード」、「Nコード地図検索ページ」を利用することになる。

一般人にとって、Nコードが利用しづらい理由は、単純に取得・相互変換の方法が「手元に無い」からで、消防関連内での利用にとどまりがちな理由である。

相互変換プログラム

んじゃ、もっと利用しやすい方法を模索しようとしたとき、その変換ロジックが結構クセモノ。
特許として充分な情報は得られるものの、それを実装しようとするととても厄介。

  • (おそらく)日本を1ブロックの範疇に収めるために、ブロックの起点がなんとも中途半端な座標
  • ゆえに、ブロックを定義する辞書が必要になっている
  • 日付変更線をまたぐブロックの存在、南極・北極などの例外処理

いったん、成果

個人的に汎用性が高い(Cordova, Electron, NodeJS)と感じている Javascript でコーディングしました。

Nコード:ブロックとユニット

Nコードの体系、ブロックとユニットを Google Map に描画しています。とりあえず、大枠を掴むのに良いでしょう。
https://rawgit.com/yambal/N-Code/master/blockAndUnit.html

座標からNコード算出

地図の中心地点の座標を、右上にNコード表示します。
ズームをすると、約5mのメッシュまで確認できます。
https://rawgit.com/yambal/N-Code/master/nCode.htm