SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

オラクル技術エキスパートが紹介する 開発者のためのデータベース完全ガイド

地図データに代表される「空間データ」とは何か? データベースでの扱い方を紹介

オラクル技術エキスパートが紹介する 開発者のためのデータベース完全ガイド 第10回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ベクターデータとは

 ベクターデータでは、形状の情報をスカラー値のセットとメタ情報で表現します。現在地を表現するのに緯度と経度で表現していますが、それとほぼ同じことになります。

 実際のデータフォーマットはXMLやJSONなどのテキスト形式のものからバイナリ形式のものまでいろいろありますが、「形」を表現する部分の基本的な構造は似たものとなっており、基本的に「点」と「線」と「ポリゴン」と呼ばれる3種類の形状タイプで表現されます。

地図データ(ベクターデータ)の点、線、ポリゴン
地図データ(ベクターデータ)の点、線、ポリゴン

※より複雑な形状として、複合型、複数点、複数線分、複数ポリゴンや穴あきポリゴンなど上記を組み合わせた形状もありますが、この3つが基本的な要素となります。

 地図上のデータとして上記の各形状とデータ表現を見てみます。

 店舗や現在地などは地図上で「点」で表現されることが多いかと思います。このように「点」のデータは(経度、緯度)の1組のデータで表現されます。

 道路、鉄道、河川などは「線」の形状で表現されることが多く、先ほどの国土数値データの河川データでも「線」の形状で表現されています。「線」のデータはそれが線分であるというメタ情報と、その線分を構成する座標点の羅列(各座標点を順番に結ぶことでできる線分)で表現されます。

 都道府県や市区町村区域などの閉じた境界線で中と外が分けられるような形は「ポリゴン」と呼ばれます。「ポリゴン」のデータもポリゴンであるというメタ情報を持ち、座標点を辿る順番(多くの場合は反時計回りで線分の左側が表現する領域となる)に羅列し、その境界線の内部を指定する形でデータ表現されます。

 上記のメタ情報は座標点の解釈をするために必要な情報を提供することになります。

 基本的な地図データは、各対象地物(住宅、河川、道路、行政区など)ごとに、適した形状タイプで表現されたデータを、重ね合わせることで1枚の地図として作り上げられています。

データ表現の例(Well-Known Text形式)
データ表現の例(Well-Known Text形式)

 ベクターデータは形状タイプと座標点やその集合で表現される形状のデータに加えて、データの可搬性を考えた場合には、それを正しく解釈し、処理するための基準となる測地座標系の情報や単位の情報なども必要になります(※測地座標系については後段にて説明していますので、ご興味があればそちらも併せてご覧ください)。そのためデータ型としてのベクターデータは多くの場合、数値型や配列型を内部に持つオブジェクト形式のデータとして実装されています。

 Oracle Databaseの場合、SDO_GEOMETRYというオブジェクト形式のデータ型でベクターデータを表現します。先ほど例示したWell-Known Text形式と同様のデータは以下の図のようになります。

データ表現の例(Oracle SDO_GEOMETRY 形式)
データ表現の例(Oracle SDO_GEOMETRY 形式)

 Well-Known Text形式と比較すると少し複雑に見えるかと思いますが、SDO_GEOMETRYでは、1つのオブジェクトで、3Dデータを含むさまざまな形状データが表現できるように実装されています。そのためにデータの次元の情報を持ち、複合的な形状データを緻密に表現するための解釈用の配列などの情報もオブジェクトの内部に持つ形となっています。

 また、データの正確性と可搬性を担保しつつ、さまざまな地域の測地系のデータがDB内に存在していても個々のデータを正しく相互活用できる状態を保つため、測地座標系のIDを各オブジェクトに持つ形で実装されています。

次のページ
データベース内の空間データ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
オラクル技術エキスパートが紹介する 開発者のためのデータベース完全ガイド連載記事一覧

もっと読む

この記事の著者

中井 亮矢(日本オラクル株式会社)(ナカイ リョウヤ)

 日本オラクル株式会社でOracle Databaseを担当するエンジニア。主に地理空間機能、グラフ機能、機械学習機能を中心とするデータ活用や性能チューニングの領域で、製造業、小売業、公共・公益などの様々な問題解決およびコンサルティングに従事。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16867 2022/12/14 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング