国道の距離標(キロポスト)を地理院地図に表示させる~道路基準点案内システムCSVをKMLに変換するだけ

以前、Google Earth Proにキロポスト(距離標)を表示する方法を記しましたが、仕事で国土地理院のサイト「地理院地図」を使う必要があり使ってみたところ割と便利だったのでアリだなと感じました。Google Earth Proは衛星写真がベースですが、地理院地図は完全に地図がベースですから大きな違いがあります。

国土地理院が提供する情報であれば信頼性は高いと思います。実際使ってみたところで感じたのは、Google Earth Proで取得した位置情報ももちろん正確ですけど、衛星写真の更新頻度はかなり遅いので新しく開通した道路等の情報は反映されて無かったりします。やはり地図のお仕事なら地理院地図の出番です。新しい道路も迅速に反映されるので業務目的でも使えます。

今回はそんな地理院地図の機能として備わっているレイヤに、道路基準点案内システムで公開されているキロポストを表示して便利に使える様にする方法を記します。地図上にKP情報を表示させられると仕事が捗る場面が多々あります。

レイヤに表示させる為にはKMLファイルを準備する必要があります。残念な事にGoogle Earth用に作ったものではフォーマットが合わないので、あらたに内部構造を合わせて作り直す必要があります。

地理院地図にもCSV取り込みの仕組みはある様ですが(詳細は未確認ですが住所や場所の名前データベースと照合して地点を割り出している様です。)道路基準点を指定した緯度経度にプロットする用途には使えません。独自でKMLを作って読み込ませるしか無さそうです。

道路基準点(キロポスト)を取得してくる

「道路基準点案内システム」というサイトから道路基準点情報を調べることが出来ます。管轄組織、距離標の情報もわかります。

必要な情報を選んで表示し、右下のCSV出力をクリックすればダウンロード出来ます。

KP情報をCSV形式でDLする

ダウンロードしたCSVファイルを見てみます。私は自宅ではExcelよりもLibreOffice Calcを愛用しているので、LibreCalcで開いてみました。余計な事をしないのでCSVデータの扱いはExcelよりも優秀だと思っています。

LibreOfficeで開いてみた

地理院地図で適当なマーカーを設置して保存する

さて地理院地図サービスを調べます。

自分で作成した色々な情報をマッピングすることが出来ます。作成したマッピング情報を保存する時はKMLとJSON形式で保存出来るので、適当なダミーデータを作成して保存してみるとそこを足がかりに内部構造が解析出来ます。

作成したものは右上にフロートしている作図・ファイルの中にリストされます。適当に地点情報を作ってみます。これを保存するときに内部構造を見ることが出来ます。KML形式、JSON形式で保存出来る様ですが、JSONは慣れていないのでKMLを選びます。

KMLファイルの内容は難しく無さそうです。

基本的にはこれをひな形にして

<Placemark> 地点情報 </Placemark>

ここを必要な地点数だけつくってやれば実現できそうです。つまり何かしらのツールを使って(少ないならXML Notepadなどを使って手作業でも良いですが)Placemark部分をループ処理でひな形に情報を流し込んでやれば良い訳です。

CSVデータをKMLデータに変換する

ここが最大の課題になるところですが解決してしまえば応用はいくらでもきくので、色々と自分で工夫しようと思っている人は以下も是非読んで下さい。GISを扱う上でkmlデータの作成は避けられないです。緯度経度の形式変換(換算)も場合によっては必要です。

やっぱりこういう用途にはawkが超便利です。awkは素人さんでも当て打ち印刷の様な用途で使うことが出来ます。しかもレコード数分だけのループ処理はawkの基本概念にあるのでイメージしにくいプログラミング・ループ処理を意識する必要が有りません。Windowsで作業をしている人がawkを使用するのであれば、おーくの友だちが便利です。

かなり昔に作ったYouTube動画ですが良かったら参考にして下さい。音声は入れてないので字幕をONして視聴していただければと思います。

道路基準点案内システムから手に入れたKP情報のCSVデータには、KP地点と、緯度、経度情報が入っていますので、適切にkml形式に変換してやれば地理院地図サービスで使用できます。

サンプルとなるawkスクリプトをgistに置いたのでリンクしておきます。私はこういう用途にはawkが一番手軽だと思っているので簡単なスクリプトを作ってCSVからKMLに変換しています。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください