ベクターデータとは
ベクターデータでは、形状の情報をスカラー値のセットとメタ情報で表現します。現在地を表現するのに緯度と経度で表現していますが、それとほぼ同じことになります。
実際のデータフォーマットはXMLやJSONなどのテキスト形式のものからバイナリ形式のものまでいろいろありますが、「形」を表現する部分の基本的な構造は似たものとなっており、基本的に「点」と「線」と「ポリゴン」と呼ばれる3種類の形状タイプで表現されます。
※より複雑な形状として、複合型、複数点、複数線分、複数ポリゴンや穴あきポリゴンなど上記を組み合わせた形状もありますが、この3つが基本的な要素となります。
地図上のデータとして上記の各形状とデータ表現を見てみます。
店舗や現在地などは地図上で「点」で表現されることが多いかと思います。このように「点」のデータは(経度、緯度)の1組のデータで表現されます。
道路、鉄道、河川などは「線」の形状で表現されることが多く、先ほどの国土数値データの河川データでも「線」の形状で表現されています。「線」のデータはそれが線分であるというメタ情報と、その線分を構成する座標点の羅列(各座標点を順番に結ぶことでできる線分)で表現されます。
都道府県や市区町村区域などの閉じた境界線で中と外が分けられるような形は「ポリゴン」と呼ばれます。「ポリゴン」のデータもポリゴンであるというメタ情報を持ち、座標点を辿る順番(多くの場合は反時計回りで線分の左側が表現する領域となる)に羅列し、その境界線の内部を指定する形でデータ表現されます。
上記のメタ情報は座標点の解釈をするために必要な情報を提供することになります。
基本的な地図データは、各対象地物(住宅、河川、道路、行政区など)ごとに、適した形状タイプで表現されたデータを、重ね合わせることで1枚の地図として作り上げられています。
ベクターデータは形状タイプと座標点やその集合で表現される形状のデータに加えて、データの可搬性を考えた場合には、それを正しく解釈し、処理するための基準となる測地座標系の情報や単位の情報なども必要になります(※測地座標系については後段にて説明していますので、ご興味があればそちらも併せてご覧ください)。そのためデータ型としてのベクターデータは多くの場合、数値型や配列型を内部に持つオブジェクト形式のデータとして実装されています。
Oracle Databaseの場合、SDO_GEOMETRYというオブジェクト形式のデータ型でベクターデータを表現します。先ほど例示したWell-Known Text形式と同様のデータは以下の図のようになります。
Well-Known Text形式と比較すると少し複雑に見えるかと思いますが、SDO_GEOMETRYでは、1つのオブジェクトで、3Dデータを含むさまざまな形状データが表現できるように実装されています。そのためにデータの次元の情報を持ち、複合的な形状データを緻密に表現するための解釈用の配列などの情報もオブジェクトの内部に持つ形となっています。
また、データの正確性と可搬性を担保しつつ、さまざまな地域の測地系のデータがDB内に存在していても個々のデータを正しく相互活用できる状態を保つため、測地座標系のIDを各オブジェクトに持つ形で実装されています。