プライマリ・コンテンツに移動
Oracle® Spatial and Graph開発者ガイド
12cリリース1 (12.1)
B72470-07
目次へ移動
目次
索引へ移動
索引

前
次

6.2 測地座標のサポート

Oracle9i以上のSpatial and Graphでは、測地座標の合理的かつ完全な処理が提供されます。Oracle9iより前の空間計算は、ジオメトリのレイヤーに対して指定された座標系に関係なく、平面(デカルト)座標のみに基づいていました。したがって、測地座標系のデータの計算では、常に座標が平面上にある場合と同様に処理され、表面の曲率が考慮されないため、計算が不正確でした。

リリース2(9.2)以上では、指定された測地座標系での地球の曲率を考慮して楕円体の表面が計算されるため、正確な結果が得られます。そのため、空間問合せは常に正しい回答を戻します。

6.2.1 測地および2次元のジオメトリ

2次元のジオメトリは面ジオメトリですが、を正確に定義しておくことが必要です。平らな面(平面)は、デカルト座標によって正確に表現されます。ただし、デカルト座標は、ソリッドの表面の表現には適していません。一般的に使用される空間ジオメトリの表面は地表面ですが、地表面でのジオメトリの法則は平面での法則とは異なります。たとえば、地表面に平行線はなく、線は測地線であり、すべての測地線は交差します。そのため、デカルト・ジオメトリでは閉曲面の問題を正確に処理できません。

Spatial and Graphでは、データを平面上に投影せずに、座標系または関連する地域のサイズに関係なく正確な結果を提供します。問合せが地表面上のどの部分を対象にしているかに関係なく、極などの特殊な地域でも、正確な結果が得られます。そのため、選択した任意のデータおよび投影に座標を格納し、座標系に関係なく正確な問合せを実行できます。

6.2.2 測地座標系または投影座標系の選択

地表面を処理するアプリケーションでは、データは、測地座標系または投影平面座標系を使用して表現できます。どちらの方法を使用するかは、次の精度およびパフォーマンスに関連するすべての要件を考慮してください。

  • 精度

    多くの空間アプリケーションは、非常に小さい地域を対象としているため、ローカル投影のデカルト座標上で正確な計算を行うことができます。たとえば、New Hampshire州平地のローカル投影では、その州のデータを使用するほとんどの空間アプリケーションで適切な精度が得られます。

    ただし、カナダやスカンジナビアなどの広い地域については、平面投影上でのデカルト計算では正確な結果を得られません。たとえば、スウェーデンのストックホルムおよびフィンランドのヘルシンキが、指定した距離内にあるかどうかの問合せを実行した場合、指定した距離が実際の距離に近い値である場合は、不適切な結果が戻される場合があります。広い地域に関係する計算を行う場合または非常に高い精度を必要とする場合は、地表面の曲率を考慮する必要があります。

  • パフォーマンス

    球体の計算は、デカルトの計算より多くの計算リソースを使用します。測地座標を使用する一部の操作では、同じ操作をデカルト座標を使用して行う場合よりも、完了までに時間がかかることがあります。

座標系の種類は浮動小数点演算に関連する異形が表示される可能性がある点に影響するため、適切な種類の座標系を選択することが重要です。

6.2.3 非楕円体高または楕円体高の選択

この項では、3次元データ(非楕円体または楕円体)の高さについて、その適切なタイプを選択するためのガイドラインを説明します。楕円体高は幅広く使用される、多くのGPSアプリケーションのデフォルトです。また、楕円体計算ではパフォーマンスのオーバーヘッドはあまり発生しません。ただし、アプリケーションの中には、非楕円体高の方が適切であったり、あるいは必須であるものもあります。

高さ基準のタイプは、最初の指定から変更することもできます。これは、異なる高さ基準間での変換がサポートされているためです。

6.2.3.1 非楕円体高

非楕円体高は、準拠楕円体以外のある地点から測定されます。非楕円体における高さの一般的な測定値は、地表面、平均海水面(MSL)または基準のジオイドからのものです。

  • 地表面: 地表面からの高さの測定は、概念的には最も簡単な方法であり、非常にローカルなアプリケーションあるいは非公式のアプリケーションで一般的です。たとえば、1つのビルや1つのビル群をモデル化する場合、地表レベルで十分であることがあります。

    さらに、ローカルの地表高さをグローバルな高さデータと統合する必要がある場合は、ローカルの一定の基準の高さを追加するという変換(EPSG method 9616)を介して行うことができます。ローカルの地形のうねりをモデル化する必要がある場合は、オフセット・マトリックス(EPSG method 9635)を使用した変換を介して行います。これは、ジオイドと楕円体の間での変換と同じように行うことができます。

  • 平均海水面(MSL): MSLは、海面を示すものとしては一般的であり、概念的には単純です。これは、海面におけるローカルでの相違や、時間経過による変化を無視します。また、陸地で覆われている領域に対しても推定できます。

    MSLとの相対的な高さは、洪水の危険性、重力ポテンシャル、空気の希薄さを扱う場合など、様々なアプリケーションで役立ちます。MSLは、一般に、航空機の飛行中の高度を示すために使用されます。

  • ジオイド: ジオイドは、MSLに最も近い等ポテンシャル面です。これは、気候変動や地殻変動などを考慮しているため、重力の点から考えると、高さについて最も正確な測定値となります。ジオイドとMSLとの差は、おおよそ(プラスまたはマイナス) 2mになります。

    その時点での局所的な海面よりも、重力の方がアプリケーションにとって影響が大きいときは、MSLではなくジオイドを基準に使用します。MSL、ジオイドまたは楕円体の間で変換を行う場合は、EPSG method 9635と、適切なタイムスタンプが設定されたオフセット・マトリックスを使用できます。

多くの非楕円体の高さ基準には規則性がなく、表面にはうねりがあるため、非楕円体高の間での変換は、楕円体高の場合よりも複雑になります。1つの方法として、オフセット格子ファイルを使用して変換を定義することもできます。この方法は、EPSG method 9635に実装されています。格子ファイルは、入手する必要がありますが、政府機関のWebサイトから公的に入手できる場合があります。さらに、このような非楕円体高データ(ジオイド、海水面、ローカルの地形を含む)のほとんどは、時間とともに変化するため、その変化が大きくはないとしてもオフセット・マトリックスのタイムスタンプが重要になることがあります。(当然、長期的に考えると楕円体は静的ではないため、同じことが楕円体にも当てはまります。結局のところ、楕円体は、変化し続けるジオイド、MSLまたは地形の近似値を表すことになります。)

EPSG method 9635でのパフォーマンスおよびメモリー使用量を考慮すると、実行時には、データセットの変換前に格子をロードしておく必要があります。このロード操作によって、メイン・メモリー内にフットプリントが一時的に増え、1回のみのロード・オーバーヘッドが発生します。1つのデータセット全体を変換してもオーバーヘッドはそれほど大きくありませんが、個々のジオメトリに対して変換を頻繁に行うと、その累積オーバーヘッドが大きくなる場合があります。

6.2.3.2 楕円体高

楕円体高は、参照する楕円体のある地点から測定されます。楕円体は、地球を簡便かつ比較的忠実に表現した近似的なものです。地球を表現するために楕円体を使用すると、球体を使用する場合よりも複雑になりますが、ほとんどのアプリケーションでは、楕円体の使用は、ジオイドまたは局所的な高さを使用する場合よりも簡単です(ただし、精度の低下は多少あります)。さらに、ジオイド高および海水面高は、数学的な分析に適さない場合があります。これは、うねりがあり不規則な形状が、特定の計算を非常に複雑かつ高コストにするためです。

多くのGPSアプリケーションは、楕円体高を基準として想定し、デフォルトとして使用しています。その楕円体は、ジオイド(およびこれに近い海水面)と一致するように選択されるため、楕円体高とMSL高との差は大きくありません。たとえば、ジオイドとNAD83楕円体との差は、最大でも50メートルです。特定の国との一致がより正確になるとして、他の楕円体が選択されることがあります。

様々な団体が異なる楕円体を使用していても、WKTではその相違点を簡単に記述できます。単純なデータ変換は、楕円体間で効率的かつ正確に変換を実行できます。オフセット・マトリックスが含まれないため、ロード・オーバーヘッドは不要です。したがって、将来の要件または分析に、MSL、ジオイドまたは他の非楕円体高データの使用が必要になることがあっても、楕円体高を使用すると相互運用性が高くなります。

6.2.4 測地MBR

測地データに対する特定の操作の問合せウィンドウを作成するには、SDO_ETYPE値に1003または2003(最適化された矩形)を指定し、SDO_INTERPRETATION値に3を指定して、MBR(最小境界矩形)を使用します(「SDO_ELEM_INFO」表2-2を参照)。測地MBRは、SDO_FILTERANYINTERACT maskを指定したSDO_RELATESDO_ANYINTERACTおよびSDO_WITHIN_DISTANCEの演算子で使用できます。

例6-1では、測地MBRと空間的に相互作用するすべてのコーラのマーケットの名前が得られます。

例6-1 測地MBRの使用

SELECT c.name FROM cola_markets_cs c WHERE
   SDO_FILTER(c.shape, 
       SDO_GEOMETRY(
           2003,
           8307,    -- SRID for WGS 84 longitude/latitude
           NULL,
           SDO_ELEM_INFO_ARRAY(1,1003,3),
           SDO_ORDINATE_ARRAY(6,5, 10,10))
       ) = 'TRUE';

例6-1では、次の出力が生成されます(「座標系変換の例」例6-17で定義されたデータを想定)。

NAME
--------------------------------
cola_c
cola_b
cola_d

測地MBRを使用する場合は、次のことを考慮してください。

  • データベースに格納されている空間オブジェクトには、測地MBRを使用しないでください。問合せウィンドウを作成するためにのみ使用します。

  • 左下のY座標(minY)は、右上のY座標(maxY)より小さい値である必要があります。左下のX座標(minX)が右上のX座標(maxX)より大きい場合、ウィンドウは、日付変更線(本初子午線と「逆」の子午線、または経度180度(-180度))をまたぐと想定されます。たとえば、経度/緯度データ(-10,10, -100, 20)のMBRは、(日付変更線をまたいで)地球の4分の3周に渡り、緯度線10から20度に渡っています。

  • Spatial and Graphで問合せ用のMBRを内部的に作成する場合、緯度線に沿った線は、1度間隔で点を追加することで稠密化されます。これは、MBRの枠から数メートル以内にあるオブジェクト(特に両方の半球で中間緯度にあるオブジェクト)の結果に影響を及ぼす場合があります。

  • 最適化された矩形の範囲が経度で119度を越えている場合、内部的に3つの矩形に分割され、結果として、これら3つの矩形は、そこで共通する境界であるエッジを共有します。このような最適化された矩形のジオメトリを検証すると、内部矩形に共有エッジがあるため、エラー・コード13351が戻されます。問合せにこのような最適化された矩形を使用できるのは、SDO_ANYINTERACT演算子、ANYINTERACTマスクを指定したSDO_RELATE演算子またはANYINTERACTマスクを指定したSDO_GEOM.RELATEファンクションでのみです。(他の問合せをこのような最適化された矩形に対して行うと、誤った結果が戻されることがあります。)

次の例では、特殊なケースを示し、測地MBRの緯度/経度データを解釈する方法を説明します。

  • (10,0, -110,20)は、日付変更線をまたいで地球をほぼ一周し、赤道から緯度20度に渡っています。

  • (10,-90, 40,90)は、経度10から40度の間で、南極から北極までの帯域を示します。

  • (10,-90, 40,50)は、経度10から40度の間で、南極から緯度50度までの帯域を示します。

  • (-180,-10, 180,5)は、地球を一周する南緯10度から北緯5度の帯域を示します。

  • (-180,-90, 180,90)は、地球全体を示します。

  • (-180,-90, 180,50)は、緯度50度から下の地球全体を示します。

  • (-180,50, 180,90)は、緯度50度から上の地球全体を示します。

6.2.5 測地データでのその他の考慮事項および要件

測地座標系を使用する場合または変換を行う場合は(ある投影座標系から別の投影座標系への変換であっても)、次のジオメトリは使用できません。

  • 円弧

測地座標系は、点または測地線(楕円体上の線)で構成されるジオメトリのみにサポートされます。投影座標系に円または円弧を含むジオメトリがある場合、それらのジオメトリを測地座標に変換する前に、SDO_GEOM.SDO_ARC_DENSIFYファンクション(「SDO_GEOMパッケージ(ジオメトリ)」を参照)を使用してジオメトリを稠密化してから、結果のジオメトリに対して空間操作を実行することができます。

測地データを使用する場合、次のサイズ制限が適用されます。

  • ポリゴン要素は、地表面の半分以上の面積を持つことはできません。また、2つのポリゴンの和集合の結果が地表面の半分より大きい場合、操作によって正しい結果が生成されません。たとえば、AとBの和集合の結果が地表の領域の半分より大きいポリゴンの場合、AとBの差集合演算、AとBの積集合演算およびAとBのXOR演算はサポートされず、これら2つのポリゴン間でANYINTERACTマスクを指定したRELATE演算のみがサポートされます。

  • 1つの線上の隣接する座標間の距離を、地球の外周(大円)の長さの半分以上にすることはできません。

これらの制限より大きい要素を使用する必要がある場合は、まず、これらの要素をより小さい複数の要素に分割してから使用します。たとえば、地球のすべての海洋面を表現するジオメトリは作成できませんが、それぞれが海洋面全体の一部を表現する複数のジオメトリ要素を作成することはできます。長さが地球外周の半分以上の線ストリングを処理する場合は、その線上に1つ以上の中間点を追加して、隣接する座標が地球の外周の半分未満になるようにします。

測地レイヤーでは、許容差がm単位で指定されます。通常、非測地データに使用される許容差を使用する場合、測地データでは、これらの値がm単位で解釈されます。たとえば、測地データに0.05の許容差を指定した場合、この値は5cmまでの精度で解釈されます。この値の精度がアプリケーションで必要とされる精度より高い場合、指定した精度の実装に必要な内部計算操作のために、パフォーマンスに影響を与える場合があります。(許容差の詳細は、「許容差」を参照してください。)

測地レイヤーでは、索引メタデータの次元のエクステントを、経度に対しては-180,180、緯度に対しては-90,90に指定する必要があります。次の文(「座標系変換の例」例6-17から抜粋)は、測地データ・レイヤーに対して、これらのエクステント(次元ごとに10mの許容差を持つ)を指定します。

INSERT INTO user_sdo_geom_metadata
    (TABLE_NAME,
     COLUMN_NAME,
     DIMINFO,
     SRID)
  VALUES (
  'cola_markets_cs',
  'shape',
  SDO_DIM_ARRAY(
    SDO_DIM_ELEMENT('Longitude', -180, 180, 10),  -- 10 meters tolerance
    SDO_DIM_ELEMENT('Latitude', -90, 90, 10)  -- 10 meters tolerance
     ),
  8307   -- SRID for 'Longitude / Latitude (WGS 84)' coordinate system
);

測地データに関連する追加の注意事項と制限事項については、「座標系サポートでの注意事項および制限事項」を参照してください。