- カテゴリ:
ST_GEOHASH¶
Returns the geohash for a GEOGRAPHY object. A geohash is a short base32 string that identifies a geodesic rectangle containing a location in the world.
geohashの文字数によって精度が決まります。geohashの末尾から文字を削除すると、geohashの精度が低下し、より大きな長方形の領域が識別されます。
ST_GEOHASH 20文字の長さのgeohashを返します。オプションの precision
引数は、返されるgeohashの精度を指定します。たとえば、 precision
に 5
を渡すと、精度の低い、短いgeohash(5文字)が返されます。
注釈
ポイントではない地理空間オブジェクトの場合、関数はデフォルトまたは precision
の指定値に関係なく、精度の低いgeohashを返す可能性があります。
これらの場合、精度は空間オブジェクトの境界ボックスによって決定されます。ST_GEOHASH 最初に、境界ボックスの左下隅と右上隅のgeohashを決定し、次にこれら2つのgeohashに共通のプレフィックスを返します。
- こちらもご参照ください。
構文¶
ST_GEOHASH( <geography_expression> [, <precision> ] )
引数¶
必須:
geography_expression
引数は GEOGRAPHY 型の式でなければなりません。
オプション:
precision
geohashで使用する文字数。
1
から20
までの値を指定できます。デフォルトでは、
precision
は20
であり、20文字の長さのgeohashを生成します。
戻り値¶
指定されたオブジェクトのgeohash(STRING 型の値)を返します。
オブジェクトがポリゴンであり、境界ボックスの2つのポイントが同じgeohashプレフィックスを共有していない場合、関数は空の文字列を返す可能性があります。
例¶
次の例は、ポイントのgeohashを返します。
SELECT ST_GEOHASH( TO_GEOGRAPHY('POINT(-122.306100 37.554162)')) AS geohash_of_point_a; +----------------------+ | GEOHASH_OF_POINT_A | |----------------------| | 9q9j8ue2v71y5zzy0s4q | +----------------------+
次の例では、同じポイントのgeohashを精度を下げて返します。
SELECT ST_GEOHASH( TO_GEOGRAPHY('POINT(-122.306100 37.554162)'), 5) AS less_precise_geohash_a; +------------------------+ | LESS_PRECISE_GEOHASH_A | |------------------------| | 9q9j8 | +------------------------+
次の例は、同じプレフィックスを共有する2つのgeohashを示しています。これは、2つのポイントが互いに近いことを示しています。
SELECT ST_GEOHASH( TO_GEOGRAPHY('POINT(-122.306100 37.554162)')) AS geohash_of_point_a, ST_GEOHASH( TO_GEOGRAPHY('POINT(-122.323111 37.562333)')) AS geohash_of_point_b; +----------------------+----------------------+ | GEOHASH_OF_POINT_A | GEOHASH_OF_POINT_B | |----------------------+----------------------| | 9q9j8ue2v71y5zzy0s4q | 9q9j8qp02yms1tpjesmc | +----------------------+----------------------+ SELECT ST_GEOHASH( TO_GEOGRAPHY('POINT(-122.306100 37.554162)'), 5) AS less_precise_geohash_a, ST_GEOHASH( TO_GEOGRAPHY('POINT(-122.323111 37.562333)'), 5) AS less_precise_geohash_b; +------------------------+------------------------+ | LESS_PRECISE_GEOHASH_A | LESS_PRECISE_GEOHASH_B | |------------------------+------------------------| | 9q9j8 | 9q9j8 | +------------------------+------------------------+
次の例では、ポリゴンのgeohashを返します。このポリゴンの境界ボックスの左下隅と右上隅は、前の例で使用したのと同じ2つの点です。この例に示すように、 ST_GEOHASH は、境界ボックスの左下隅と右上隅のbeohashに共通のプレフィックスを返します。
SELECT ST_GEOHASH( TO_GEOGRAPHY( 'POLYGON((-122.306100 37.554162, -122.306100 37.562333, -122.323111 37.562333, -122.323111 37.554162, -122.306100 37.554162))' ) ) AS geohash_of_polygon; +--------------------+ | GEOHASH_OF_POLYGON | |--------------------| | 9q9j8 | +--------------------+