Skip to content

共同編集者としての参加

Kohei Otsuka edited this page Dec 26, 2021 · 1 revision

共同編集者としての参加手順

更新環境の整備

本リポジトリをgitでcloneし、作業PC上にダウンロードしてください。
ダウンロードしたファイル構造の中にbinフォルダがあるので、そこに管理用プログラムを設置します。
管理用プログラムとしてはToriiというプログラムを用いますが、左記のリンクからアクセスし、ご利用のPCのOSにあわせた実行ファイルの含まれたzipファイルを取得してください。
zipファイルのファイル名は、torii_[OS名]_[バージョン].zipのようになっています。
zipを展開すると、qgis2Xlsx_[OS名]xlsx2Qgis_[OS名]で始まる、各OS用の実行ファイルが含まれているので、これを先述のbinフォルダの下に配置すれば、管理環境の構築は完了です。
(なお、これらの実行ファイルの初回実行時は、怪しい実行ファイルを実行してよいかの注意が出る可能性がありますが、こちらは実行することを許可してください。将来的に、注意を出さないような施策を打ちたいとは考えていますが、現状は初回に注意が出てしまいます。)

データ構成

データマスタで管理されている情報

データマスタとしては、Excelファイル(tatebayashi_stones.xlsx)もしくはGeoJSONファイル(pois.geojsonbooks.geojsonrefs.geojsonimages.geojson)のどちらかで管理されますが、どちらでも管理している情報は同じです。
4つのテーブルが、Excelでは異なるワークシート、GeoJSONではテーブル毎に異なるファイルで管理されます。

pois (石造物地物の基本情報)

属性名(GeoJSON) 属性名(Excel) データ種別 備考
fid ID 数値 昇順、項目削除などで飛びが生じてもよいが一度つけると変更厳禁
name 名称 文字列
type 種別 文字列 "地蔵菩薩像","如来像","馬頭観世音","庚申","道標"など、取り得る値は他のデータを参考にしてください
庚申兼道標など、コンマで区切って複数の値を認めます
era 和暦 文字列 和暦の年号を記載します
天保年間などあいまいな記載でも大丈夫です
year 文字列 西暦での年を指定しますが、あいまいな和暦に対応するため、空や複数記載でも構いません(そのため数値ではなく文字列になっています)
area 地域 文字列 館林内での地域"館林","赤羽","郷谷","六郷","渡瀬","多々良","三野谷"のいずれかを採ります
oaza 大字 文字列 現在の町丁目名を指定します
koaza 小字 文字列 町丁目内での小字が分かっていれば記載します
detail_place 詳細場所 文字列 寺社や公民館、あるいは交差点、○○氏宅など所在地情報がわかっていれば記載します
番地情報などは元本にあっても経緯度で表現するので削除します
reference_memo 参照本情報 文字列 参照本に記載されている情報で、形状やサイズなど他に項目がない内容をここに書きます(向いている向きなど)
folklore 言い伝え 文字列 参照本などに記載されている情報で、言い伝えに類するもの(詣でれば虫歯が直る、他)を記載する
history 歴史 文字列 参照本などに記載されている情報で、歴史、来歴に類するものを記載する
survey_memo 調査情報 文字列 実際の調査の際に判明した情報を記載する
surveyed 調査日 文字列 最新の調査が実施された年月日
confirmed 現況調査済み Boolean 一度でも調査がなされればTRUEとする
primary_image 優先画像ID 数値 imagesテーブルで管理されている関連画像の内、表示を最優先する画像のfidを指定する
height 総高 数値 石造物の総高、cmで
statue_height 像高 数値 石造物の像など主要部分の高さ、cmで
width 数値 石造物の幅、cmで
depth 厚さ 数値 石造物の厚さ、cmで
shape 形状 文字列 形状に関する情報
material 材質 文字列 石造、木造、銅造など材質情報
inscription 刻銘 文字列 刻銘の記載内容
color 文字列 彩色されている場合などの色情報
contradiction データの矛盾 文字列 言及されている複数の本同士の記載の矛盾や、記載内容と調査の矛盾など、今後再調査などで解決すべき矛盾
need_action 要対応 文字列 地物をGoogle StreetViewで見つけた場合など、データの矛盾ではないが今後追加調査が必要な場合、その内容を記載
status 状況 文字列 "新規発見""消失?"など、状況を表す文字列
longitude 経度 数値 経度
latitude 緯度 数値 緯度

books (石造物について記載のある本のマスタ)

属性名(GeoJSON) 属性名(Excel) データ種別 備考
fid ID 数値 昇順、項目削除などで飛びが生じてもよいが一度つけると変更厳禁
name 書籍名 数値 書籍の名称を記載
editor 著者 文字列 著者、編者等を記載
published_at 出版年 文字列 出版年を記載、雑誌の場合はmonthly等の発行間隔を指定
reference_type 参照タイプ 文字列 refsテーブルで記載場所を指定する形式、"page"の場合ページ指定、"journal"の場合雑誌なので発行年月など指定

refs (地物と本の関係性と記載ページの管理)

属性名(GeoJSON) 属性名(Excel) データ種別 備考
fid ID 数値 昇順、項目削除などで飛びが生じてもよいが一度つけると変更厳禁
book 書籍ID 数値 関連するbooksテーブルのfid
poi 石造物ID 文字列 関連するpoisテーブルのfid
description 説明 文字列 記載に関する説明文
note ノート 文字列 記載に関する備考
pages 参照ページ 文字列 記載場所を指定する形式、ページ指定や雑誌の場合発行年月など

images (画像ファイルの管理)

属性名(GeoJSON) 属性名(Excel) データ種別 備考
fid ID 数値 昇順、項目削除などで飛びが生じてもよいが一度つけると変更厳禁
poi 石造物ID 数値 関連するpoisテーブルのfid
path 画像パス 文字列 元画像の格納位置の相対パス
shooting_date 撮影日 文字列 画像の取得年月日時刻
shooter 撮影者 文字列 画像の撮影者
description 説明 文字列 画像に関する説明文
note ノート 文字列 画像に関する備考
mid_thumbs 中サイズサムネイル 文字列 中サイズサムネイルの格納位置の相対パス
small_thumbs 小サイズサムネイル 文字列 小サイズサムネイルの格納位置の相対パス

ファイルシステムで管理されている情報

imagesディレクトリ

このディレクトリの下に、poisテーブルで管理されている地物のfidと一致するディレクトリが用意され、その下にその地物と紐づく画像が管理されます。
この画像は1枚1枚、imagesテーブルの中で対応づくレコードで管理されていますが、その対応レコードはToriiプログラムの実行で自動生成されるので、手動で作る必要はありません。

mid_thumbs, small_thumbsディレクトリ

imagesディレクトリ下の画像1枚1枚に対応する、サムネイル画像が同じディレクトリ構造で管理されます。
サムネイルは、Toriiプログラムの実行で自動生成されるので、手動で作る必要はありません。

Web配信用のファイル

index.htmltatebayashi_stones.geojsonassetsディレクトリ下のファイルは、Web配信用です。
特に手動で変更を管理する必要はなく、Web用のデータであるtatebayashi_stones.geojsonToriiプログラムの実行で自動的に更新されますので、githubに反映すればWeb配信も自動的に更新されます。

Torii管理用のファイル

bin/torii.json

bin/torii.jsonは、Toriiの動作を制御する設定ファイルです。
データ項目を追加したい場合など、この設定を変更することで対応できますが、通常は触らないでください。

bin/torii_local.json

bin/torii_local.jsonは、最初は設定されていません。もし必要であれば、torii_local_template.jsonをコピーして、内容を修正して利用してください。 内容は

{
  "shooter": "Kohei Otsuka",
  "date": "2021-12-25T00:00:00"
}

のような感じですが、この内容を編集すると、

shooter: 画像を追加する際の、撮影者のデフォルト値
date: 画像を追加する際、写真のメタデータから撮影時間が取れなかった場合のデフォルト値

が設定できます。

管理方法

テーブルデータの更新

マスタデータであるExcelもしくはGeoJSONを、上記テーブルの定義に従って修正してください。
ExcelとGeoJSON双方に同時に変更を加えるのはやめてください(Toriiプログラムの実行時に、一方の変更が失われてしまいます)。
必ず、一方を変更=>Toriiの実行でもう一方に反映=>もう一方を変更、の手順を踏んでください。

Excelでの管理

Excelでのデータは、tatebayashi_stones.xlsxを更新してください。
Excel内には注意 pois books images refsの5ワークシートが存在しますが、注意ワークシートは変更にあたっての注意が記載されているので、そちらをよく確認して更新作業を行ってください。
注意ワークシートはToriiプログラムを実行しても引き継がれるので、追加で注意点、コメントなどを加える場合は、注意ワークシートに追加してください。

QGISでの管理

GeoJSONは4つの*.geojsonファイルで管理されていますが、これはテキストファイルなので、小さな変更ならばメモ帳、秀丸などのテキストエディタで修正しても問題はありません。
が、位置情報などを変更するのにはGISツールであるQGISを使うのが便利です。
QGISを利用するには、専用のプロジェクトファイルtatebayashi_stones.qgzを開くと、4つの*.geojsonファイルがリレーションも定義された形で読み込まれますので、QGISを通じて効率よく編集できます。
QGISの使い方などについては、他の本やサイトなどを参考にしてください。

画像の追加

画像を追加したい場合は、imagesディレクトリの下に地物のfid名のディレクトリを作成し(既にある場合はそれを利用)、その下に追加したい画像を置きます。
複数の画像を追加する際に、特定の画像をその地物の代表画像としたい場合は、画像ファイル名をPRIM.で始まるようにしてください(例: IMG4235.JPEG => PRIM.IMG4235.JPEG)。

Toriiの実行

テーブルデータの更新、画像の追加などを行ったのちに、もう一方のテーブルに更新を反映させるため、Toriiのプログラムを実行します。
実行の前に、Excel、QGISなどのプログラムは全て終了してください。
その上で、ExcelからQGIS(GeoJSON)側にデータを反映する場合は、binディレクトリ下に配置したxlsx2Qgis_[OS名]で始まるプログラム、QGIS(GeoJSON)からExcel側にデータを反映する場合は、qgis2Xlsx_[OS名]で始まるプログラムを実行してください。
そうすると、

  • テーブルデータへのもう一方への反映
  • 画像のデータへの反映
  • Web配信用データであるtatebayashi_stones.geojsonの更新

が行われます。

実行する場合は、画像が更新されない場合、あるいは画像の更新があってもbin/torii_local.jsonが設定されている場合は、GUIからプログラムをクリックしての実行で大丈夫です。
bin/torii_local.jsonが設定されていない場合は、コマンドプロンプト(Macの場合はコンソール)からコマンドを実行して、デフォルトの画像撮影者や画像撮影日を指定する必要があります。

Windowsの場合(TatebayashiStonesのディレクトリ下で)

> bin¥qgis2Xlsx_win.exe -s '撮影者名' -d '撮影年月日時'

Macの場合(TatebayashiStonesのディレクトリ下で)

$ ./bin/qgis2Xlsx_macm1 -s '撮影者名' -d '撮影年月日時'

Githubへの反映

ブランチを作成

git、Githubをよくわかっている技術者であれば、あるいは他の人の更新がないので衝突が発生しないと確実にわかっている場合は、ブランチを作らずに直接ローカルのmasterからリモートのmasterにプッシュしても構いません。
が、自信がない場合はまず新しいブランチを作成し、変更は全て新しいブランチにコミットしてください。

リモートのmasterをブランチにマージ

新しいブランチにリモートのmasterをマージします。
衝突などがなければ、そのまま新しいブランチをローカルのmasterに再マージし、リモートのmasterにプッシュして反映は完了です。

衝突が発生した場合

衝突が発生した場合、その衝突がtatebayashi_stones.xlsxでの衝突か、それともGeoJSONでの衝突かで対応が異なります。

tatebayashi_stones.xlsxでの衝突の場合

tatebayashi_stones.xlsxだけが衝突した場合は、GeoJSONから再反映すればよいので、bin/qgis2Xlsx_[OS名]を実行してExcelを再構成します。
そうしてExcelが再構成されると、衝突を解決済みにし、新しいブランチをローカルのmasterに再マージし、リモートのmasterにプッシュして反映は完了です。

GeoJSONでも衝突が発生した場合

GeoJSONが衝突した時は間違いなくtatebayashi_stones.xlsxでも衝突が起きているので、Excelからの再反映はできません。
なので、手作業でGeoJSONの衝突を解決した後、Excelに反映し、masterに反映してプッシュする必要がありますが、もし自信がない場合は、マージを中止して新しいブランチの元の状態に戻し、(masterではなく)新しいブランチをリモートにプッシュして、技術者に対応を依頼してください。

masterにプッシュが完了すれば、Webページも自動反映

上記のような作業の末にmasterをプッシュすると、変更はWebページへも反映されます。
Webページはこちらのリンクで確認できます。