GeoJsonデータの関数

boolean geo_intersect(any*, any*)

オペランドが単一の有効なジオメトリ・オブジェクトを返さないことがコンパイル時に検出されると、エラーが発生します。それ以外の場合、実行時の動作は次のようになります。
  • いずれかのオペランドが0個または複数の項目を返した場合はfalseを返します。
  • いずれかのオペランドがNULLを返した場合はNULLを返します。
  • いずれかのオペランドが有効なジオメトリ・オブジェクトではない項目を返した場合は、falseを返します。
最後に、両方のオペランドが単一のジオメトリ・オブジェクトを返した場合、2つのジオメトリに共通点があればtrueを返し、そうでない場合はfalseを返します。

boolean geo_inside(any*, any*)

オペランドが単一の有効なジオメトリ・オブジェクトを返さないことがコンパイル時に検出されると、エラーが発生します。それ以外の場合、実行時の動作は次のようになります。
  • いずれかのオペランドが0個または複数の項目を返した場合はfalseを返します。
  • いずれかのオペランドがNULLを返した場合はNULLを返します。
  • いずれかのオペランドが有効なジオメトリ・オブジェクトではない項目を返した場合は、falseを返します(ただし、オペランドが有効なジオメトリを返さないことがコンパイル時に検出された場合は、エラーが発生します)。
  • 2番目のオペランドがポリゴンではないジオメトリ・オブジェクトを返した場合は、falseを返します。
最後に、両方のオペランドが単一のジオメトリ・オブジェクトを返し、2番目のジオメトリがポリゴンである場合、最初のジオメトリが2番目のポリゴンの内部に完全に含まれている場合、つまり、最初のジオメトリのすべてのポイントがポリゴンの内部に属している場合は、trueを返します。それ以外の場合はfalseを返します。ポリゴンの内部は、ポリゴンの境界を定義する線形リングのポイントを除いて、ポリゴン領域内のすべてのポイントです。

boolean geo_within_distance(any*, any*, double)

最初の2つのオペランドのいずれかが単一の有効なジオメトリ・オブジェクトを返さないことがコンパイル時に検出されると、エラーが発生します。それ以外の場合、実行時の動作は次のようになります。
  • 最初の2つのオペランドのいずれかが0個または複数の項目を返した場合はfalseを返します。
  • 最初の2つのオペランドのいずれかがNULLを返した場合はNULLを返します。
  • 最初の2つのオペランドのいずれかが有効なジオメトリ・オブジェクトではない項目を返した場合は、falseを返します。
最後に、最初の2つのオペランドの両方が単一のジオメトリ・オブジェクトを返した場合、最初のジオメトリが2番目のジオメトリからNメートル以内にある場合はtrueを返します。Nは3番目のオペランドによって返された数値です。それ以外の場合はfalseを返します。2つのジオメトリの間の距離は、1つ目のポイントが1つ目のジオメトリに属し、2つ目のポイントが2つ目のジオメトリに属しているポイントのペアの距離の最小値として定義されます。Nが負の数の場合は、0に設定されます。

boolean geo_near(any*, any*, double)

geo_nearは、内部でgeo_within_distanceに変換され、2つのジオメトリ間の距離に(暗黙的な) ORDER BYが指定されます。ただし、問合せに(明示的な) ORDER BYがすでに存在する場合、距離による順序付けは実行されません。geo_near関数はWHERE句にのみ使用できます。この場合、最上位レベルの述語(ORまたはNOT演算子の下にネストされていない)にする必要があります。

double geo_distance(any*, any*)

オペランドが単一の有効なジオメトリ・オブジェクトを返さないことがコンパイル時に検出されると、エラーが発生します。それ以外の場合、実行時の動作は次のようになります。
  • いずれかのオペランドが0個または複数の項目を返した場合は-1を返します。
  • いずれかのオペランドがNULLを返した場合はNULLを返します。
  • オペランドのいずれかがジオメトリでない場合は-1を返します。
それ以外の場合は、2つの入力ジオメトリ間の測地距離が返されます。返される距離は、1つ目のポイントが1つ目のジオメトリに属し、2つ目のポイントが2つ目のジオメトリに属しているポイントのペアの距離の最小値として定義されます。このような2つのポイントの間の距離は、ポイントを結ぶ測地線の長さです。

boolean geo_is_geometry(any*)

  • オペランドが0個または複数の項目を返した場合はfalseを返します。
  • オペランドがNULLを返した場合はNULLを返します。
  • 入力が単一の有効なジオメトリ・オブジェクトである場合はtrueを返します。それ以外の場合はfalseを返します。