Kart入門 ― 地理空間データのためのバージョン管理ツール

最終更新:

Kartとはなにか

Kartは地理空間データのためのバージョン管理ツールです.地理空間データと,データベースのテーブルを取り込み変更履歴の管理などをすることができます. 基本的な操作感はgitと似ており,commitpushなどの操作を行うことができます.

バージョン管理ツールとは

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つしか含まれていないため,どのテーブルをインポートするか指定する必要はありません.

bash
kart init --import=GPKG:../wellington-building-outlines.gpkg

一度インポートが完了すると,初期化されたリポジトリを使用できます.現在の状態を確認するには次のコマンドを実行します.

bash
kart status

ワーキングコピー(Working Copy)

ワーキングコピーとは,リポジトリを閲覧や編集が可能な形式にしたものです. 変更の追跡情報が追加された新たなGeoPackageファイルになります.

通常,ワーキングコピーはプロジェクトフォルダと同じ名前でフォルダの中にあります. QGISなどでワーキングコピーを開くことで,データを表示することができます.

なお,ワーキングコピーはGeoPackageだけでなく,PostGIS, Microsoft SQL Server MySQLにすることもできます.

コミットする(commit)

コミットとはワーキングコピーの変更をリポジトリに保存することです.1つのコミットにいくつでも変更,改正,追加,削除を含めることでができます.

変更の詳細はdiffコマンドで確認することができます.

bash
kart diff

変更をチェックし,正しかった場合はcommitコマンドで変更をリポジトリにコミットすることができます. コミットメッセージ(変更について人が読むことのできる説明)を入力する必要があります.

bash
kart commit -m "Commit message"

変更をリセットする

Kartではrestoreという,最後のコミットより後に行った変更を元に戻すシンプルな方法を提供しています.

restoreコマンドにより,変更を保存したかどうかにかかわらず前のコミットにデータを戻すことができます.

bash
kart restore

ブランチを切る

ブランチは他とはお互いに独立した変更をするために使われます.リポジトリを作成するとmasterブランチがデフォルトとなります.

新しいブランチを作るには次のコマンドを使用します.

bash
kart checkout -b <ブランチの名前>

ブランチを変更するには次のコマンドを使用します.

bash
kart checkout <ブランチの名前>

マージする

他のブランチを現在のアクティブブランチに統合するには,次のコマンドを使用します.

bash
kart merge <ブランチの名前>

タグをつける

データをリリースする際にはタグをつけることが推奨されています.次のようなコマンドにより,タグを追加することができます.

bash
kart tag <tag> 1b2e1d63

1b2e1d63はタグをつけたいコミットのidです.

古いバージョンに戻る

戻りたいコミットのIDを見つけます.

bash
kart log

その後,ワーキングコピーを次のコマンドで切り替えます.

bash
kart checkout <コミットのID>

リモートリポジトリをホストする

KartはGitをデータの移動と保存に使用しているため,Gitのリポジトリをホストできる場所(GitHub, Bitbucketなど)であればどこでもKartのリポジトリをホストすることができます. しかしながら,空間フィルタリングを使用したい場合は自分でGit serverを構築する必要があります.

空間フィルタリング

ポリゴン内のデータのみを取得することができます.

例えば,以下のようなコマンドで絞り込むことができます.

bash
kart clone <URL> --spatial-filter="EPSG:4326;POLYGON((...))"

他のフォーマットへのエクスポート

リポジトリを任意の形式に変更してエクスポートすることができます.

bash
kart export <dataset> <export-type>:<destination>

対応している出力形式は次のコマンドで確認できます.

bash
kart export --list-formats

現在Kartのリポジトリからエクスポートできるデータ形式はベクター/テーブルのデータに限られます.

環境構築

GitHubのリリースページからインストーラーをダウンロードすることができます.

参考