2015年5月31日日曜日

GeoGigでGISデータのバージョン管理をする (2)データ更新

今回はデータを更新してみます。

前回、3つのフィーチャーを持つshapefileを登録しました。
C:\work\geogig>geogig ls parks
parks/
    3
    2
    1

フィーチャーの追加

新しいshapefileでデータを更新します。更新するshapefileは、以前登録したものにフィーチャーを1個追加したものです。

まずは、前回同様importします。
C:\work\geogig>geogig shp import c:\work\tutorial_data\snapshot2\parks.shp
Importing from shapefile c:\work\tutorial_data\snapshot2\parks.shp

Importing parks            (1/1)...
25%
4 distinct features inserted in 100.8 ms

Building final tree...

4 features tree built in 6.239 ms
100%
c:\work\tutorial_data\snapshot2\parks.shp imported successfully.

statusコマンドで、リポジトリ内のデータに対してどのような変更がかかるのかがわかります。
C:\work\geogig>geogig status
# On branch master
# Changes not staged for commit:
#   (use "geogig add <path/to/fid>..." to update what will be committed
#   (use "geogig checkout -- <path/to/fid>..." to discard changes in working dir
ectory
#
#      modified  parks
#      added  parks/4
# 2 total.
ここで、parks/4というフィーチャーが追加されることがわかります。

さらに、diffコマンドで、より具体的な差分がわかるようです。
C:\work\geogig>geogig diff
000000... c202e4... 000000... 628763...   A  parks/4
the_geom    MULTIPOLYGON (((-122.8673652884942 42.331042804943124, -122.86738814251632 42.32974514244516, <途中省略>  -122.8673652884942 42.331042804943124)))
owner    City Of Medford
agency    City Of Medford
name    Hawthorne Park / Pool
usage    Public
parktype    Park
area    54662.815673828125
perimeter    1020.6679216977345

addとcommitを使って、フィーチャーの追加をコミットします。
C:\work\geogig>geogig add
Counting unstaged elements...2
Staging changes...
100%
1 features and 1 trees staged for commit
0 features and 0 trees not staged for commit

C:\work\geogig>geogig commit -m "first modification"
100%
[2819d13a8419a1186a44f71f46cbb89a37806d2d] first modification
Committed, counting objects...1 features added, 0 changed, 0 deleted.

logコマンドで、リポジトリに対するコミットのログが見られるようです。
C:\work\geogig>geogig log
Commit:  2819d13a8419a1186a44f71f46cbb89a37806d2d
Author:  testuser <testuser@test.com>
Date:    (4 minutes ago) 2015-05-31 01:57:08 +0900
Subject: first modification

Commit:  f157afde4e55026608733c1d50ab4935db33fb17
Author:  testuser <testuser@test.com>
Date:    (9 hours ago) 2015-05-30 16:04:54 +0900
Subject: first version

logコマンドに-pオプションを指定することで、特定のフィーチャーに対する変更のみを表示することができるようです。
C:\work\geogig>geogig log -p parks/4
Commit:  2819d13a8419a1186a44f71f46cbb89a37806d2d
Author:  testuser <testuser@test.com>
Date:    (7 minutes ago) 2015-05-31 01:57:08 +0900
Subject: first modification

diffコマンドで2つのコミットIDを指定することで、コミット時点どうしの比較もできます。
C:\work\geogig>geogig diff f157afde4e55026608733c1d50ab4935db33fb17 2819d13a8419a1186a44f71f46cbb89a37806d2d
000000... c202e4... 000000... 628763...   A  parks/4

<以下省略>

フィーチャーの変更


次に、既存のジオメトリと属性値を変更してみます。park/1は、ポリゴンの頂点を一つ動かして、さらにownerの属性値を変更し、park/3は、属性値のみ変更しました(チュートリアルにはこのようなデータはないので、自分で加工して作りました)。
これをimportで取り込みます。
C:\work\geogig>geogig shp import c:\work\tutorial_data\snapshot2a\parks.shp
Importing from shapefile c:\work\tutorial_data\snapshot2a\parks.shp

Importing parks            (1/1)...
25%
3 distinct features inserted in 261.7 ms

Building final tree...

4 features tree built in 5.612 ms
100%
c:\work\tutorial_data\snapshot2a\parks.shp imported successfully.

差分をdiffで確認します(parks/3のperimeterとareaの属性値が勝手に変わってるのが気になります…)。
C:\work\geogig>geogig diff
c202e4... c202e4... af4c5f... 9a6b21...   M  parks/3
owner: Medford School District -> test
perimeter: 572.1249849079909 -> 572.124984907991
area: 17345.00048828125 -> 17345.0004882812

c202e4... c202e4... 75a0cb... d3e4f5...   M  parks/1
owner: Jackson County -> test
the_geom: MultiPolygon -122.87290806613127,42.335410926692404 -122.87265408473853,42.335482522206775 -122.87253735255466,42.33526317433605 [-122.87279895095871,42.3351865382066] (-122.87280229470025,42.33512635085884) -122.87290806613127,42.335410926692404
最後にaddとcommitで変更をコミットします。
C:\work\geogig>geogig add
Counting unstaged elements...3
Staging changes...
100%
2 features and 1 trees staged for commit
0 features and 0 trees not staged for commit

C:\work\geogig>geogig commit -m "second modification"
100%
[26efb5b977761415689a88e5a3493e5c19f8cec8] second modification
Committed, counting objects...0 features added, 2 changed, 0 deleted.

変更の確認

logコマンドでフィーチャーの変更履歴をみてみます。
C:\work\geogig>geogig log -p parks/1
Commit:  26efb5b977761415689a88e5a3493e5c19f8cec8
Author:  testuser <testuser@test.com>
Date:    (1 minutes ago) 2015-05-31 13:49:25 +0900
Subject: second modification

Commit:  f157afde4e55026608733c1d50ab4935db33fb17
Author:  testuser <testuser@test.com>
Date:    (21 hours ago) 2015-05-30 16:04:54 +0900
Subject: first version

blameコマンドでフィーチャーを確認すると、the_geom(ジオメトリ)とowner属性値の変更日時が新しくなっているのがわかります。
C:\work\geogig>geogig blame parks/1
parktype: Riparian f157afd testuser testuser@test.com 2015-05-31 01:04:54
area: 600.217529296875 f157afd testuser testuser@test.com 2015-05-31 01:04:54
perimeter: 98.3058889120852 f157afd testuser testuser@test.com 2015-05-31 01:04:54
name: Bear Creek Channel f157afd testuser testuser@test.com 2015-05-31 01:04:54
the_geom: MULTIPOLYGON (((-122.87290806613127 42.335410926692404, -122.87265408473853 42.335482522206775, -122.87253735255466 42.33526317433605, -122.87280229470025 42.33512635085884, -122.87290806613127 42.335410926692404))) 26efb5b testuser testuser@test.com 2015-05-31 10:49:25
owner: test 26efb5b testuser testuser@test.com 2015-05-31 10:49:25
usage: Public f157afd testuser testuser@test.com 2015-05-31 01:04:54
agency: Jackson County f157afd testuser testuser@test.com 2015-05-31 01:04:54
 今回はここまで。

0 件のコメント:

コメントを投稿