JA:Import Bus stop from NagoyaCitiy
Goals / 目的
名古屋市オープンデータ 市バス停留所一覧(平成28年4月1日)からバス停データをインポートする。
ライセンス
データソースサイト
名古屋市オープンデータ 市バス停留所一覧(平成28年4月1日)
データライセンス
ライセンス種別
クリエイティブ・コモンズ表示2.1日本ライセンスの下に提供されており、二次利用することが可能です。
許可へのリンク(if required)
このマップは、以下の著作物を改変して利用しています。
名古屋市、クリエイティブ・コモンズ・ライセンス 表示 2.1 日本
http://creativecommons.org/licenses/by/2.1/jp/
OSMの著作権表示
「http://wiki.openstreetmap.org/wiki/Contributors」に追記する。
ODbLコンプライアンスチェック
yes / no
Schedule / スケジュール
- OSM Wikiページの作成 (English/Japanese) / from 2017-02-26 / doing
- 変換プログラムの作成 / from 2017-02-25 / doing
- 精度の検証
- 一括インポート対象のOSMファイルを作成する機能の実装
- 手動インポート対象のOSMファイルを作成する機能の実装
- 作業アカウントの作成 (NAGOYA_import_busstop) / not yet
- Talk-jaでのディスカッション / not yet
- Import MLでのディスカッション
- OSM著作権表示の表記を決める
- 実行
Import Data / インポートデータ詳細
ソースデータ
「名古屋市オープンデータ 市バス停留所一覧(平成28年4月1日)」 2017-02-26現在の最新版 CSV形式ファイル、キャラクターセットは「MS932」と思われる。
項目番号 | 項目名 | OSM | 備考 |
---|---|---|---|
1 | 停留所名称 | name | バス停の名称。漢字かな混じりの表記。一部カッコ記号「()」も含まれる |
2 | 停留所コード+乗降場所コード | (id) | 停留所コードと乗降場所コードを文字列連結させたもの。 数値のように見えるが非数値が含まれるため文字列扱い。文字数は不定。 |
3 | 停留所コード | 上下両岸のバス停をグルーピングしたコード。駅前ターミナルではたくさんある | |
4 | 乗降場所コード | 停留所コードでグルーピングされたバス停の個々を識別するためのコード。 非数字を含む文字列です。 | |
5 | 乗降場所補足情報 | local_ref | 設定されていないレコードが多い。 「東」「西」「1番」「5番」など |
6 | 停留所名カナ | name:ja_kana | カタカナ表記。 name:ja_kanaとして使うにはひらがなに変換する必要あり |
7 | 緯度 | lat | 小数点以下第13桁までのデータ。 |
8 | 経度 | lon |
- 非常に精度が高いデータで、上下のバス停が分離されている。
- local_ref相当の情報もある
- 他のデータ(「市バス停留所並順」)との相互参照が可能
既存データ
名古屋市内ということもあり、既にサーベイによる入力が進んでいます。
既に入力済みのデータについてはインポート対象としないことにいたします。
インポート対象とするかどうかは「変換プログラム」を作成して判定します。
赤: 未入力 緑: 既入力 |
入力済み747件 / データ件数 3819件 = 19.6%(2017-02-25調べ) |
しかし、ソースデータには上下分離で入力されているため片側のみ入力されている場合は入力されていない方のデータは取り込みたいところです。
下図の「C」は「既入力」となるように判定範囲を広げ、
かつ、「A」と「B」は未入力となる程度に判定範囲を狭める。
A: 1ブロックほどずれている? B: ズレ? C: 僅かな位置ずれ? |
インポート方法
インポート種別
生成されたインポートデータは、JOSMでマニュアルインポートを行います。
1回限りのインポート作業ではありますが、将来、更新が行われるかもしれません。その際には、更新されたノードデータのみ追加インポートする可能性があります。
Data Preparation / データの準備
Data Reduction & Simplification / データの縮小、簡素化
変換プログラムを利用してインポート用のOSM形式ファイルを作成します。
変換プログラムには、osmCoverage.jarを利用する。
既存のバス停との重複を避けるため、既存のバス停データをOSMサーバから取得します。
対象とする既存データのTAGは、「highway=bus_stop」と「 public_transport=platform かつ bus=yes」とを対象とします。
<osm-script timeout="900" element-limit="1073741824"> <union> <query type="node"> <has-kv k="highway" v="bus_stop"/> <bbox-query s="south" n="north" w="west" e="est"/> </query> <query type="node"> <has-kv k="public_transport" v="platform"/> <has-kv k="bus" v="yes"/> <bbox-query s="south" n="north" w="west" e="est"/> </query> </union> <print/> </osm-script>
インポートするデータの周囲を調べ、
- 40m四方に既存バス停がある場合は自動インポート対象から外す。(import_busstop_auto.osm)
- 20m四方に既存バス停がなく、40m四方に既存バス停がある場合には自動インポート対象から外し、手動インポートの対象とする。(import_busstop_manual.osm)
という処理を行い、二重に登録されるのを防ぎます。
「バス停」のデータは簡単に入力することができ、サーベイヤーによる入力が頻繁に行われています。
OSMサーバーから最新データのダウンロードを行った後には、可能な限り速やかにインポートを実施するのが望ましい。
Tagging Plans / タグ定義計画
<node id="-101" lat="35.29617121" lon="139.25256091" timestamp="2015-04-04T11:23:15Z"> <tag k="name" v="梅沢"/> <tag k="name:ja_kana" v="うめざわ"/> <tag k="highway" v="bus_stop"/> <tag k="public_transport" v="platform"/> <tag k="bus" v="yes"/> <tag k="source" v="Nagoya citiy 2016-04-01"/> </node>
- バス停として、highway=bus_stop, public_transport=platform, bus=yes の3つのタグを付与します。
- name=* バス停の名称(「停留所名称」)
- name:ja_kana=* バス停の名称(「停留所名カナ」)
- source=Nagoya Citiy 2016-04-01
2016-04-01は元になった「バス停留所一覧」情報の更新日を表します。
- 極力シンプルにするために最低限のタグとします。
Changeset Tags / 変更セットへのタグ付け
インポート作業時の変更セットコメントとして、下記を付与します。
「名古屋市:オープンデータ 交通局「バス停留所一覧(平成28年4月1日)」よりインポート」
Data Transformation / データ形式変換
sourceforgeのサイトからosmCoverage.jarを利用してOSMファイルに変換する。
Data Transformation Results / データ変換結果
変換されたデータのサンプル:
(作成中)
Data Merge Workflow データマージ作業計画
Team Approach / チーム編成
変換プログラムの作成は、hayashiが行います。
生成されたインポートデータの検証のために、地元のマッパーの協力が必要です。協力者を募集します。
References / リファレンス
Workflow / ワークフロー
- 手順:
- 1週間前にTalk-jaに実施日時を告知する。
- 予定の実施日時に変換プログラムを実行させる
- import_busstop_auto.osm が生成される。
- import_busstop_manual.osm が生成される。
- 生成されたimport_busstop_auto.osm ファイルをJOSMを使ってアップロードする。
- 生成されたimport_busstop_manual.osm ファイルをJOSMを使って一つづつアップロードする。
- リバート計画
インポート作業は、" NAGOYA_import_busstop"という専用アカウントを作成して行われます。
もし問題が発生した場合、hayashiが対象の変更セットの切り戻し(revert)を行います。
Conflation / 既存データとの整合性維持
既存のデータを優先します。
インポートするデータの周囲を調べ、
- 40m四方に既存バス停がある場合は自動インポート対象から外す。(import_busstop_auto.osm)
- 20m四方に既存バス停がなく、40m四方に既存バス停がある場合には自動インポート対象から外し、手動インポートの対象とする。(import_busstop_manual.osm)
という処理を行い、二重に登録されるのを防ぎます。
QA / 品質管理
- 実行前に「変換プログラム」が確実に動作することを十分に検証する。 / yet
- 既存バス停付近にインポートデータが生成されていないことをJOSMで開いて確認する。 / yet
- インポートの実行と検証は、現地を確認可能な地元のマッパーが行う。 / yet