Athena エンジンバージョン 2 の地理空間関数 - Amazon Athena

Athena エンジンバージョン 2 の地理空間関数

このトピックでは、Athena エンジンバージョン 2 でサポートされる ESRI 地理空間関数のみを示しています。Athena のエンジンバージョンの詳細については、「Athena エンジンのバージョニング」を参照してください。

Athena エンジンバージョン 2 での変更

Athena は以下の種類の地理空間関数をサポートしています。

コンストラクター関数

コンストラクター関数では、pointline、または polygon ジオメトリデータ型のバイナリ表現を取得します。これらの関数を使用して、バイナリデータをテキストに変換し、Well-Known Text (WKT) として表現されるジオメトリデータのバイナリ値を取得することもできます。

ST_AsBinary(geometry)

指定されたジオメトリの WKB 表現を含む varbinary データ型を返します。例:

SELECT ST_AsBinary(ST_Point(-158.54, 61.56))

ST_AsText(geometry)

指定した各ジオメトリデータ型をテキストに変換します。値を varchar データ型で返します。これは、ジオメトリデータ型の WKT 表現です。例:

SELECT ST_AsText(ST_Point(-158.54, 61.56))

ST_GeomAsLegacyBinary(geometry)

指定されたジオメトリから、従来の varbinary を返します。例:

SELECT ST_GeomAsLegacyBinary(ST_Point(-158.54, 61.56)

ST_GeometryFromText(varchar)

WKT 形式のテキストをジオメトリデータ型に変換します。ジオメトリデータ型の値を返します。例:

SELECT ST_GeometryFromText(ST_AsText(ST_Point(1, 2)))

ST_GeomFromBinary(varbinary)

WKB 表現からジオメトリ型オブジェクトを返します。例:

SELECT ST_GeomFromBinary(ST_AsBinary(ST_Point(-158.54, 61.56)))

ST_GeomFromLegacyBinary(varbinary)

従来の varbinary 型から、ジオメトリ型オブジェクトを返します。例:

SELECT ST_GeomFromLegacyBinary(ST_GeomAsLegacyBinary(ST_Point(-158.54, 61.56)))

ST_LineFromText(varchar)

ジオメトリデータ型 line で値を返します。例:

SELECT ST_Line('linestring(1 1, 2 2, 3 3)')

ST_LineString(array(point))

Point ジオメトリ型の配列から形成される LineString のジオメトリ型を返します。指定された配列にある空ではないポイントが 2 個未満の場合、空の LineString が返されます。配列内の要素のいずれかが null、空、または以前のものと同じである場合は、例外がスローされます。返されるジオメトリは単純ではない場合があります。指定された入力に応じて、返されるジオメトリが自己交差している、または重複する頂点を含んでいる場合があります。例:

SELECT ST_LineString(ARRAY[ST_Point(-158.54, 61.56), ST_Point(-158.55, 61.56)])

ST_MultiPoint(array(point))

指定されたポイントから形成される MultiPoint のジオメトリオブジェクトを返します。指定された配列が空の場合は null を返します。配列内の要素のいずれかが null または空の場合は、例外がスローされます。返されるジオメトリは単純ではない場合があり、指定された配列に重複がある場合は、重複ポイントが含まれる可能性があります。例:

SELECT ST_MultiPoint(ARRAY[ST_Point(-158.54, 61.56), ST_Point(-158.55, 61.56)])

ST_Point(double, double)

ジオメトリ型が point のオブジェクトを返します。この関数への入力データ値には、ユニバーサル横メルカトル (UTM) 直交座標系の値などのジオメトリ値、または 10 進角で表した地図単位 (経度と緯度) を使用します。経度と緯度の値には、WGS 1984 または EPSG:4326 とも呼ばれる世界測地系が使用されます。WGS 1984 は、全地球測位システム (GPS) で使用されている座標系です。

たとえば、次の表記では、地図座標は経度と緯度で指定され、値 .072284 (バッファ距離) は 10 進角の角度単位で指定されます。

SELECT ST_Buffer(ST_Point(-74.006801, 40.705220), .072284)

構文:

SELECT ST_Point(longitude, latitude) FROM earthquakes LIMIT 1

以下の例では、特定の経度と緯度の座標を使用しています。

SELECT ST_Point(-158.54, 61.56) FROM earthquakes LIMIT 1

次の例では、特定の経度と緯度の座標を使用しています。

SELECT ST_Point(-74.006801, 40.705220)

以下の例では、WKT からジオメトリを取得するために ST_AsText 関数を使用しています。

SELECT ST_AsText(ST_Point(-74.006801, 40.705220)) AS WKT

ST_Polygon(varchar)

時計回り (左から右) に提供される縦座標のシーケンスを使用することで、ジオメトリデータ型 polygon が返されます。Athena エンジンバージョン 2 では、ポリゴンのみが入力として受け入れられます。例:

SELECT ST_Polygon('polygon ((1 1, 1 4, 4 4, 4 1))')

to_geometry(sphericalGeography)

指定された球面ジオグラフィオブジェクトからジオメトリオブジェクトを返します。例:

SELECT to_geometry(to_spherical_geography(ST_Point(-158.54, 61.56)))

to_spherical_geography(geometry)

指定されたジオメトリから球面ジオグラフィオブジェクトを返します。この関数は、ジオメトリオブジェクトを地球半径の球面での球面ジオグラフィオブジェクトに変換するために使用します。この関数は、2D 空間で定義された POINTMULTIPOINTLINESTRINGMULTILINESTRINGPOLYGON、および MULTIPOLYGON、またはこのようなジオメトリの GEOMETRYCOLLECTION のみで使用できます。この関数は、指定されたジオメトリの各ポイントについて、point.x[-180.0, 180.0] 内であり、point.y[-90.0, 90.0] 内であることを検証します。この関数は、これらのポイントを経度および緯度として使用して、sphericalGeography 結果の形状を構築します。

例:

SELECT to_spherical_geography(ST_Point(-158.54, 61.56))

地理空間関係関数

以下の関数は、入力として指定された 2 つの異なるジオメトリ間の関係を表現し、boolean 型の値を返します。ジオメトリのペアを指定する順序が重要になります。最初のジオメトリ値は左ジオメトリ、2 番目のジオメトリ値は右ジオメトリと呼ばれます。

これら関数は以下を返します。

  • TRUE。関数が記述する関係が満たされた場合に限ります。

  • FALSE。関数が記述する関係が満たされない場合に限ります。

ST_Contains(geometry, geometry)

左ジオメトリに右ジオメトリが含まれている場合に限り、TRUE を返します。例:

SELECT ST_Contains('POLYGON((0 2,1 1,0 -1,0 2))', 'POLYGON((-1 3,2 1,0 -3,-1 3))')
SELECT ST_Contains('POLYGON((0 2,1 1,0 -1,0 2))', ST_Point(0, 0))
SELECT ST_Contains(ST_GeometryFromText('POLYGON((0 2,1 1,0 -1,0 2))'), ST_GeometryFromText('POLYGON((-1 3,2 1,0 -3,-1 3))'))

ST_Crosses(geometry, geometry)

左ジオメトリが右ジオメトリとクロスする場合に限り、TRUE を返します。例:

SELECT ST_Crosses(ST_Line('linestring(1 1, 2 2 )'), ST_Line('linestring(0 1, 2 2)'))

ST_Disjoint(geometry, geometry)

左ジオメトリと右ジオメトリの共通部分が空の場合に限り、TRUE を返します。例:

SELECT ST_Disjoint(ST_Line('linestring(0 0, 0 1)'), ST_Line('linestring(1 1, 1 0)'))

ST_Equals(geometry, geometry)

左ジオメトリに右ジオメトリと等しい場合に限り、TRUE を返します。例:

SELECT ST_Equals(ST_Line('linestring( 0 0, 1 1)'), ST_Line('linestring(1 3, 2 2)'))

ST_Intersects(geometry, geometry)

左ジオメトリが右ジオメトリとインターセクトする場合に限り、TRUE を返します。例:

SELECT ST_Intersects(ST_Line('linestring(8 7, 7 8)'), ST_Polygon('polygon((1 1, 4 1, 4 4, 1 4))'))

ST_Overlaps(geometry, geometry)

左ジオメトリが右ジオメトリにオーバーラップする場合に限り、TRUE を返します。例:

SELECT ST_Overlaps(ST_Polygon('polygon((2 0, 2 1, 3 1))'), ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

ST_Relate(geometry, geometry, varchar)

左ジオメトリに、右ジオメトリとの DE-9IM (Dimensionally Extended nine-Intersection Model) 関係が指定されている場合に限り、TRUE を返します。3 番目の (varchar) 入力は、この関係を使用します。例:

SELECT ST_Relate(ST_Line('linestring(0 0, 3 3)'), ST_Line('linestring(1 1, 4 4)'), 'T********')

ST_Touches(geometry, geometry)

左ジオメトリが右ジオメトリに接する場合に限り、TRUE を返します。

例:

SELECT ST_Touches(ST_Point(8, 8), ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

ST_Within(geometry, geometry)

左ジオメトリが右ジオメトリ内にある場合に限り、TRUE を返します。

例:

SELECT ST_Within(ST_Point(8, 8), ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

オペレーション関数

オペレーション関数では、ジオメトリデータ型の値に対してオペレーションを実行します。たとえば、単一のジオメトリデータ型の境界、2 つのジオメトリデータ型の共通部分、左ジオメトリと右ジオメトリ間の差異 (両方が同じデータ型の場合)、および特定のジオメトリデータ型の外部バッファや外部リングを取得できます。

geometry_union(array(geometry))

指定されたジオメトリのポイントセットの和集合を表すジオメトリを返します。例:

SELECT geometry_union(ARRAY[ST_Point(-158.54, 61.56), ST_Point(-158.55, 61.56)])

ST_Boundary(geometry)

ジオメトリデータ型の 1 つを入力として使用し、boundary ジオメトリデータ型を返します。

例:

SELECT ST_Boundary(ST_Line('linestring(0 1, 1 0)')))
SELECT ST_Boundary(ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

ST_Buffer(geometry, double)

いずれかのジオメトリデータ型 (point、line、polygon、multiline、multipolygon、および double 型として distance) を入力として受け取ります。指定した距離 (または半径) でバッファリングされたジオメトリデータ型を返します。例:

SELECT ST_Buffer(ST_Point(1, 2), 2.0)

次の例では、地図座標は経度と緯度で指定され、値 .072284 (バッファ距離) は 10 進角の角度単位で指定されます。

SELECT ST_Buffer(ST_Point(-74.006801, 40.705220), .072284)

ST_Difference(geometry, geometry)

左ジオメトリと右ジオメトリ間の差のジオメトリを返します。例:

SELECT ST_AsText(ST_Difference(ST_Polygon('polygon((0 0, 0 10, 10 10, 10 0))'), ST_Polygon('polygon((0 0, 0 5, 5 5, 5 0))')))

ST_Envelope(geometry)

linepolygonmultiline および multipolygon ジオメトリデータ型を入力として受け取ります。point ジオメトリデータ型はサポートされていません。エンベロープをジオメトリとして返します。エンベロープは指定されたジオメトリデータ型を囲む矩形です。例:

SELECT ST_Envelope(ST_Line('linestring(0 1, 1 0)'))
SELECT ST_Envelope(ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))

ST_EnvelopeAsPts(geometry)

ジオメトリの境界矩形ポリゴンの左下隅と右上隅を表す 2 つのポイントの配列を返します。指定したジオメトリが空の場合は、null を返します。例:

SELECT ST_EnvelopeAsPts(ST_Point(-158.54, 61.56))

ST_ExteriorRing(geometry)

入力タイプ polygon の外部リングのジオメトリを返します。Athena エンジンバージョン 2 では、ポリゴン以外は入力として受け入れられません。例:

SELECT ST_ExteriorRing(ST_Polygon(1,1, 1,4, 4,1))
SELECT ST_ExteriorRing(ST_Polygon('polygon ((0 0, 8 0, 0 8, 0 0), (1 1, 1 5, 5 1, 1 1))'))

ST_Intersection(geometry, geometry)

左ジオメトリと右ジオメトリの共通部分のジオメトリを返します。例:

SELECT ST_Intersection(ST_Point(1,1), ST_Point(1,1))
SELECT ST_Intersection(ST_Line('linestring(0 1, 1 0)'), ST_Polygon('polygon((1 1, 1 4, 4 4, 4 1))'))
SELECT ST_AsText(ST_Intersection(ST_Polygon('polygon((2 0, 2 3, 3 0))'), ST_Polygon('polygon((1 1, 4 1, 4 4, 1 4))')))

ST_SymDifference(geometry, geometry)

左ジオメトリと右ジオメトリの間における幾何学的な対称差のジオメトリを返します。例:

SELECT ST_AsText(ST_SymDifference(ST_Line('linestring(0 2, 2 2)'), ST_Line('linestring(1 2, 3 2)')))

ST_Union(geometry, geometry)

指定されたジオメトリのポイントセットの和集合を表すジオメトリデータ型を返します。例:

SELECT ST_Union(ST_Point(-158.54, 61.56),ST_LineString(array[ST_Point(1,2), ST_Point(3,4)]))

アクセサ関数

アクセサ関数は、さまざまな geometry データ型から varchar 型、bigint 型、または double 型の値を取得するために役立ちます。geometry は、Athena でサポートされているジオメトリデータ型 (pointlinepolygonmultiline、および multipolygon) のいずれかです。たとえば、polygon ジオメトリデータ型の面積、指定したジオメトリデータ型の最大と最小の X 値と Y 値、line の長さ、または指定したジオメトリデータ型のポイント数を取得できます。

geometry_invalid_reason(geometry)

指定されたジオメトリが有効ではない、または単純ではない理由を varchar データ型で返します。指定されたジオメトリが有効でも単純でもない場合は、有効ではない理由を返します。指定されたジオメトリが有効で単純な場合は、null が返されます。例:

SELECT geometry_invalid_reason(ST_Point(-158.54, 61.56))

great_circle_distance(latitude1, longitude1, latitude2, longitude2)

地球表面上の 2 つのポイント間のキロ単位での大円距離を double として返します。例:

SELECT great_circle_distance(36.12, -86.67, 33.94, -118.40)

line_locate_point(lineString, point)

指定されたポイントに対する指定されたラインストリング上の最も近いポイントの位置を 2D ラインの合計長の割合として表す 0 から 1 の double を返します。

指定されたラインストリングまたはポイントが空または null の場合は、null が返されます。例:

SELECT line_locate_point(ST_GeometryFromText('LINESTRING (0 0, 0 1)'), ST_Point(0, 0.2))

simplify_geometry(geometry, double)

Ramer-Douglas-Peucker アルゴリズムを使用して、指定されたジオメトリの簡略化バージョンであるジオメトリデータ型を返します。無効な派生ジオメトリ (特にポリゴン) の作成を回避します。例:

SELECT simplify_geometry(ST_GeometryFromText('POLYGON ((1 0, 2 1, 3 1, 3 1, 4 1, 1 0))'), 1.5)

ST_Area(geometry)

ジオメトリデータ型を入力として受け取り、面積を double 型で返します。例:

SELECT ST_Area(ST_Polygon('polygon((1 1, 4 1, 4 4, 1 4))'))

ST_Centroid(geometry)

ジオメトリデータ型 polygon を入力として使用し、ポリゴンのエンベロープの中心点である point ジオメトリデータ型を返します。例:

SELECT ST_Centroid(ST_GeometryFromText('polygon ((0 0, 3 6, 6 0, 0 0))'))
SELECT ST_AsText(ST_Centroid(ST_Envelope(ST_GeometryFromText('POINT (53 27)'))))

ST_ConvexHull(geometry)

指定された入力内のすべてのジオメトリを囲む最小の凸型ジオメトリであるジオメトリデータ型を返します。例:

SELECT ST_ConvexHull(ST_Point(-158.54, 61.56))

ST_CoordDim(geometry)

サポートされているジオメトリデータ型のいずれかを入力として使用し、座標コンポーネントの数を tinyint 型で返します。例:

SELECT ST_CoordDim(ST_Point(1.5,2.5))

ST_Dimension(geometry)

サポートされているいずれかのジオメトリデータ型を入力として受け取り、ジオメトリの空間ディメンションを tinyint 型で返します。例:

SELECT ST_Dimension(ST_Polygon('polygon((1 1, 4 1, 4 4, 1 4))'))

ST_Distance(geometry, geometry)

空間参照に基づいて、2 つのジオメトリ間の投影単位での最短 2 次元デカルト距離が含まれる double を返します。Athena エンジンバージョン 2 では、入力の 1 つが空のジオメトリである場合、null を返します。例:

SELECT ST_Distance(ST_Point(0.0,0.0), ST_Point(3.0,4.0))

ST_Distance(sphericalGeography, sphericalGeography)

2 つの球面ジオグラフィポイント間のメートル単位での大円距離を double として返します。例:

SELECT ST_Distance(to_spherical_geography(ST_Point(61.56, -86.67)),to_spherical_geography(ST_Point(61.56, -86.68)))

ST_EndPoint(geometry)

line ジオメトリデータ型の最後のポイントを point ジオメトリデータ型で返します。例:

SELECT ST_EndPoint(ST_Line('linestring(0 2, 2 2)'))

ST_Geometries(geometry)

指定されたコレクション内のジオメトリの配列を返します。指定されたジオメトリがマルチジオメトリではない場合は、1 要素の配列を返します。指定されたジオメトリが空の場合は null を返します。

例えば、MultiLineString オブジェクトが与えられると、ST_GeometriesLineString オブジェクトの配列を作成します。GeometryCollection オブジェクトが与えられると、ST_Geometries は、その構成要素のフラット化されていない配列を返します。例:

SELECT ST_Geometries(GEOMETRYCOLLECTION(MULTIPOINT(0 0, 1 1), GEOMETRYCOLLECTION(MULTILINESTRING((2 2, 3 3)))))

結果:

array[MULTIPOINT(0 0, 1 1),GEOMETRYCOLLECTION(MULTILINESTRING((2 2, 3 3)))]

ST_GeometryN(geometry, index)

指定された整数インデックスにあるジオメトリ要素をジオメトリデータ型として返します。インデックスは 1 から始まります。指定されたジオメトリがジオメトリのコレクション (例えば GEOMETRYCOLLECTION または MULTI* オブジェクト) である場合は、指定されたインデックスのジオメトリが返されます。指定されたインデックスが 1 より小さい、またはコレクション内の要素の合計数より大きい場合は、null が返されます。要素の合計数を確認するには、ST_NumGeometries を使用します。特異ジオメトリ (例えば POINTLINESTRING、または POLYGON) は、1 つの要素のコレクションとして扱われます。空のジオメトリは空のコレクションとして扱われます。例:

SELECT ST_GeometryN(ST_Point(-158.54, 61.56),1)

ST_GeometryType(geometry)

ジオメトリの型を varchar として返します。例:

SELECT ST_GeometryType(ST_Point(-158.54, 61.56))

ST_InteriorRingN(geometry, index)

指定されたインデックスの内部リンク要素を返します (インデックスは 1 から始まります)。指定されたインデックスが 1 より小さい、または指定されたジオメトリ内の内部リングの合計数より大きい場合は、null が返されます。指定されたジオメトリがポリゴンではない場合は、エラーがスローされます。要素の合計数を確認するには、ST_NumInteriorRing を使用します。例:

SELECT ST_InteriorRingN(st_polygon('polygon ((0 0, 1 0, 1 1, 0 1, 0 0))'),1)

ST_InteriorRings(geometry)

指定されたジオメトリで見つかったすべての内部リングのジオメトリ配列を返します。または、ポリゴンに内部リングがない場合は、空の配列を返します。指定されたジオメトリが空の場合は null を返します。指定されたジオメトリがポリゴンではない場合は、エラーがスローされます。例:

SELECT ST_InteriorRings(st_polygon('polygon ((0 0, 1 0, 1 1, 0 1, 0 0))'))

ST_IsClosed(geometry)

line および multiline ジオメトリデータ型のみを入力として受け取ります。ラインが閉じている場合に限り、TRUE (boolean 型) を返します。例:

SELECT ST_IsClosed(ST_Line('linestring(0 2, 2 2)'))

ST_IsEmpty(geometry)

line および multiline ジオメトリデータ型のみを入力として受け取ります。指定されたジオメトリが空、つまり line の開始値と終了値が一致する場合に限り、TRUE (boolean 型) を返します。例:

SELECT ST_IsEmpty(ST_Point(1.5, 2.5))

ST_IsRing(geometry)

TRUE 型が閉じていてシンプルである場合に限り、boolean (line 型) を返します。例:

SELECT ST_IsRing(ST_Line('linestring(0 2, 2 2)'))

ST_IsSimple(geometry)

指定されたジオメトリに変則的なジオメトリポイント (自己交差や自己接触など) がない場合、true を返します。ジオメトリが単純ではない理由を判断するには、geometry_invalid_reason() を使用します。例:

SELECT ST_IsSimple(ST_LineString(array[ST_Point(1,2), ST_Point(3,4)]))

ST_IsValid(geometry)

指定したジオメトリが適切に形成されている場合に限り、true を返します。ジオメトリが適切に形成されていない理由を判断するには、geometry_invalid_reason() を使用します。例:

SELECT ST_IsValid(ST_Point(61.56, -86.68))

ST_Length(geometry)

line の長さを double 型で返します。例:

SELECT ST_Length(ST_Line('linestring(0 2, 2 2)'))

ST_NumGeometries(geometry)

コレクション内のジオメトリの数を整数で返します。ジオメトリがジオメトリのコレクション (例えば GEOMETRYCOLLECTION または MULTI* オブジェクト) である場合、ジオメトリの数を返します。単一のジオメトリは 1 を返し、空のジオメトリは 0 を返します。GEOMETRYCOLLECTION オブジェクト内の空のジオメトリは、1 つのジオメトリとして計上されます。例えば、以下の式は 1 と評価されます。

ST_NumGeometries(ST_GeometryFromText('GEOMETRYCOLLECTION(MULTIPOINT EMPTY)'))

ST_NumInteriorRing(geometry)

polygon ジオメトリの内部リング数を bigint 型で返します。例:

SELECT ST_NumInteriorRing(ST_Polygon('polygon ((0 0, 8 0, 0 8, 0 0), (1 1, 1 5, 5 1, 1 1))'))

ST_NumPoints(geometry)

ジオメトリのポイント数を bigint 型で返します。例:

SELECT ST_NumPoints(ST_Point(1.5, 2.5))

ST_PointN(lineString, index)

指定された整数インデックスでの指定されたラインストリングの頂点を point ジオメトリデータ型として返します。インデックスは 1 から始まります。指定されたインデックスが 1 より小さい、またはコレクション内の要素の合計数より大きい場合は、null が返されます。要素の合計数を確認するには、ST_NumPoints を使用します。例:

SELECT ST_PointN(ST_LineString(array[ST_Point(1,2), ST_Point(3,4)]),1)

ST_Points(geometry)

指定されたラインストリングジオメトリオブジェクトからのポイントの配列を返します。例:

SELECT ST_Points(ST_LineString(array[ST_Point(1,2), ST_Point(3,4)]))

ST_StartPoint(geometry)

line ジオメトリデータ型の最初のポイントを point ジオメトリデータ型で返します。例:

SELECT ST_StartPoint(ST_Line('linestring(0 2, 2 2)'))

ST_X(point)

ポイントの X 座標を double 型で返します。例:

SELECT ST_X(ST_Point(1.5, 2.5))

ST_XMax(geometry)

ジオメトリの X 座標の最大値を double 型で返します。例:

SELECT ST_XMax(ST_Line('linestring(0 2, 2 2)'))

ST_XMin(geometry)

ジオメトリの X 座標の最小値を double 型で返します。例:

SELECT ST_XMin(ST_Line('linestring(0 2, 2 2)'))

ST_Y(point)

ポイントの Y 座標を double 型で返します。例:

SELECT ST_Y(ST_Point(1.5, 2.5))

ST_YMax(geometry)

ジオメトリの Y 座標の最大値を double 型で返します。例:

SELECT ST_YMax(ST_Line('linestring(0 2, 2 2)'))

ST_YMin(geometry)

ジオメトリの Y 座標の最小値を double 型で返します。例:

SELECT ST_YMin(ST_Line('linestring(0 2, 2 2)'))

集計関数

convex_hull_agg(geometry)

入力として渡されたすべてのジオメトリを囲む最小凸型ジオメトリを返します。

geometry_union_agg(geometry)

入力として渡されたすべてのジオメトリのポイントセットの和集合を表すジオメトリを返します。

Bing tile 関数

以下の関数は、ジオメトリと Microsoft Bing Maps Tile System のタイル間の変換を実行します。

bing_tile(x, y, zoom_level)

整数座標 x および y と、指定されたズームレベルから Bing tile オブジェクトを返します。ズームレベルは、1 から 23 の整数である必要があります。例:

SELECT bing_tile(10, 20, 12)

bing_tile(quadKey)

quadkey から Bing tile オブジェクトを返します。例:

SELECT bing_tile(bing_tile_quadkey(bing_tile(10, 20, 12)))

bing_tile_at(latitude, longitude, zoom_level)

指定された緯度、経度、およびズームレベルの Bing tile オブジェクトを返します。緯度は、-85.05112878 から 85.05112878 までのものにする必要があります。経度は -180 から 180 までのものにする必要があります。latitude および longitude の値は、整数の double および zoom_level にする必要があります。例:

SELECT bing_tile_at(37.431944, -122.166111, 12)

bing_tiles_around(latitude, longitude, zoom_level)

指定されたズームレベルで、指定された緯度と経度のポイントを取り囲む Bing tile の配列を返します。例:

SELECT bing_tiles_around(47.265511, -122.465691, 14)

bing_tiles_around(latitude, longitude, zoom_level, radius_in_km)

指定されたズームレベルでの Bing tile の配列を返します。この配列には、指定された緯度と経度を囲む、キロメートル単位で指定された半径の円をカバーする Bing tile の最小セットが含まれます。latitudelongitude、および radius_in_km の値は double で、ズームレベルは integer です。例:

SELECT bing_tiles_around(37.8475, 112.596667, 10, .5)

bing_tile_coordinates(tile)

指定された Bing tile の x および y 座標を返します。例:

SELECT bing_tile_coordinates(bing_tile_at(37.431944, -122.166111, 12))

bing_tile_polygon(tile)

指定された Bing tile のポリゴン表現を返します。例:

SELECT bing_tile_polygon(bing_tile_at(47.265511, -122.465691, 4))

bing_tile_quadkey(tile)

指定された Bing tile の quadkey を返します。例:

SELECT bing_tile_quadkey(bing_tile(52, 143, 10))

bing_tile_zoom_level(tile)

指定された Bing tile のズームレベルを整数として返します。例:

SELECT bing_tile_zoom_level(bing_tile(52, 143, 10))

geometry_to_bing_tiles(geometry, zoom_level)

指定されたズームレベルで指定されたジオメトリを完全にカバーする Bing tile の最小セットを返します。1 から 23 のズームレベルがサポートされています。例:

SELECT geometry_to_bing_tiles(ST_Point(61.56, 58.54), 10)