GIS Matilda データベースベクトルについて
一般的にマチルダはシェープファイルを中心として使われることが多いのですが、シェープファイルの長所でも短所である1レイヤー、1ファイル(正確には3ファイル)の形式であることである。
しかし1レイヤーが1ファイルであるということは、そのレイヤーに編集をかけているときは、その間変更することができない。つまり編集中にはファイルそのものをロックして書き込みができない状態になりますし、シェープファイルに保存をかけるということは、ファイルをオープンして、先頭からの終わりまで順に処理していき、クローズする。ここまでの一連の流れが「データ更新」になります。
ただ、これでは、書き込み時に万が一何かしらの不正な要素があった時はそのせいでファイルそのものが壊れる可能性があります。図面を複数人で編集をかけたいという時などは不可能になってしまいます。
この問題を解決する1つの手段としてデータベースベクトルという概念が採用され、開発されました。データベースベクトルは1レイヤーは1テーブルになり、1レコードは1要素(データ)になります。
1要素単位での編集が可能になるので、編集として考えた場合は非常に効率が良くなります。また複数の地図データを1つのデータベースファイルにまとめることができるのも管理がしやすくなるというメリットがあります。
シェープデータ(変換前)
次に7種類のシェープファイルをサンプルレイヤーとして用意しました。
azakai.dbf
azakai.shp
azakai.shx
douro.dbf
douro.shp
douro.shx
koazakai.dbf
koazakai.shp
koazakai.shx
koazamei.dbf
koazamei.shp
koazamei.shx
suigaisen.dbf
suigaisen.shp
suigaisen.shx
tatemono.dbf
tatemono.shp
tatemono.shx
tetsudou.dbf
tetsudou.shp
tetsudou.shx
データベース(変換後)
dbfだった属性データはテーブル「xxxxxx_FEA」として保存されます。
shpとshxはテーブル「xxxxxx_GEO」として保存されます。
azakai_FEA
azakai_GEO
douro_FEA
douro_GEO
koazakai_FEA
koazakai_GEO
koazamei_FEA
koazamei_GEO
suigaisen_FEA
suigaisen_GEO
tatemono_FEA
tatemono_GEO
tetsudou_FEA
tetsudou_GEO
tkGISLayerSQL
さらに、「ttkGISLayerSQL」というテーブルが作られ、地図データの最大最小値座標がレイヤーの数分のレコードとして保存されています。これらを含んでデータベースのファイル名をosakacity.mdbとしています。
xxxxx_FEAテーブル
FEAテーブルはdbfの内容がたんたんと書かれております。
GEOテーブルとはUIDキーでリレーションがなされています。
xxxxxx_GEOテーブル
UID(図形とのリンクに使うユニーク番号)とXY座標の最大最小値を持ち、図形そのものの構成座標はGEOMETORYフィールドにロングバイナリーデータとして保存されています。
次のサンプルは「azakai_GEO」テーブルです。
tkGISLayerSQLテーブル
各テーブル名とXY座標の最大最小値を持を持ちその他としてシェープタイプ、SRTEXTというフィールドも持っています。