
Kart入門 ― 地理空間データのためのバージョン管理ツール
Kartとはなにか
Kartは地理空間データのためのバージョン管理ツールです.地理空間データと,データベースのテーブルを取り込み変更履歴の管理などをすることができます.
基本的な操作感はgitと似ており,commitやpushなどの操作を行うことができます.
バージョン管理ツールとは
gitに代表されるバージョン管理ツールとは,ファイルなどの変更を記録し,変更単位で統合や特定のバージョンの呼び出しができるシステムです. これにより,編集した履歴の把握や複数人での編集ができます.
gitに関する詳しい説明はこちらをご参照ください.
類似のソフトウェア
GeoGig
Kartと似た地理空間データのためのバージョン管理ツールですが,近年更新が止まっています.
DVC
AIや機械学習の大量のデータを管理するためのツールですが,地図データの履歴管理に使われることもあります.
対応しているデータ形式
Kartでは以下のデータ形式を扱うことができます.
- ベクター・表データ
- GeoPackage
- PostGIS
- Microsoft SQL Server
- MySQL
- Shapeファイル
- 点群
- LAZ
- COPC(Cloud-Optimized Point Cloud)
- ラスター
- GeoTIFF
- COG(Cloud-Optimized GeoTIFF)
基本的な操作
Kartのバージョン管理はgitのようなコマンドの操作で行うことができます.
この章の内容は公式のチュートリアルを和訳,要約したものです.
リポジトリの作成とデータのインポート
リポジトリを作成し,テーブルをインポートしするためにinitコマンドを使用します.今回の例で使用するGeoPackage(wellington_building_outlines.gpkg)の場合はテーブルが1つしか含まれていないため,どのテーブルをインポートするか指定する必要はありません.
kart init --import=GPKG:../wellington-building-outlines.gpkg
一度インポートが完了すると,初期化されたリポジトリを使用できます.現在の状態を確認するには次のコマンドを実行します.
kart status
ワーキングコピー(Working Copy)
ワーキングコピーとは,リポジトリを閲覧や編集が可能な形式にしたものです. 変更の追跡情報が追加された新たなGeoPackageファイルになります.
通常,ワーキングコピーはプロジェクトフォルダと同じ名前でフォルダの中にあります. QGISなどでワーキングコピーを開くことで,データを表示することができます.
なお,ワーキングコピーはGeoPackageだけでなく,PostGIS, Microsoft SQL Server MySQLにすることもできます.
コミットする(commit)
コミットとはワーキングコピーの変更をリポジトリに保存することです.1つのコミットにいくつでも変更,改正,追加,削除を含めることでができます.
変更の詳細はdiffコマンドで確認することができます.
kart diff
変更をチェックし,正しかった場合はcommitコマンドで変更をリポジトリにコミットすることができます.
コミットメッセージ(変更について人が読むことのできる説明)を入力する必要があります.
kart commit -m "Commit message"
変更をリセットする
Kartではrestoreという,最後のコミットより後に行った変更を元に戻すシンプルな方法を提供しています.
restoreコマンドにより,変更を保存したかどうかにかかわらず前のコミットにデータを戻すことができます.
kart restore
ブランチを切る
ブランチは他とはお互いに独立した変更をするために使われます.リポジトリを作成するとmasterブランチがデフォルトとなります.
新しいブランチを作るには次のコマンドを使用します.
kart checkout -b <ブランチの名前>
ブランチを変更するには次のコマンドを使用します.
kart checkout <ブランチの名前>
マージする
他のブランチを現在のアクティブブランチに統合するには,次のコマンドを使用します.
kart merge <ブランチの名前>
タグをつける
データをリリースする際にはタグをつけることが推奨されています.次のようなコマンドにより,タグを追加することができます.
kart tag <tag> 1b2e1d63
1b2e1d63はタグをつけたいコミットのidです.
古いバージョンに戻る
戻りたいコミットのIDを見つけます.
kart log
その後,ワーキングコピーを次のコマンドで切り替えます.
kart checkout <コミットのID>
リモートリポジトリをホストする
KartはGitをデータの移動と保存に使用しているため,Gitのリポジトリをホストできる場所(GitHub, Bitbucketなど)であればどこでもKartのリポジトリをホストすることができます. しかしながら,空間フィルタリングを使用したい場合は自分でGit serverを構築する必要があります.
空間フィルタリング
ポリゴン内のデータのみを取得することができます.
例えば,以下のようなコマンドで絞り込むことができます.
kart clone <URL> --spatial-filter="EPSG:4326;POLYGON((...))"
他のフォーマットへのエクスポート
リポジトリを任意の形式に変更してエクスポートすることができます.
kart export <dataset> <export-type>:<destination>
対応している出力形式は次のコマンドで確認できます.
kart export --list-formats
現在Kartのリポジトリからエクスポートできるデータ形式はベクター/テーブルのデータに限られます.
環境構築
GitHubのリリースページからインストーラーをダウンロードすることができます.