MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
geohash は、任意の精度の緯度と経度の座標をテキスト文字列にエンコードするためのシステムです。 geohash 値は、"0123456789bcdefghjkmnpqrstuvwxyz"
から選択された文字のみを含む文字列です。
このセクションの関数を使用すると、geohash データのインポートとエクスポート、および geohash 値のインデックス付けと検索の機能をアプリケーションに提供する geohash 値を操作できます。
特に指定がないかぎり、このセクションの関数はジオメトリ引数を次のように処理します:
いずれかの引数が NULL
の場合、戻り値は NULL
です。
無効な引数がある場合は、エラーが発生します。
範囲外の経度または緯度を持つ引数がある場合、エラーが発生します:
経度の値が (−180, 180]の範囲内にない場合は、ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE
エラーが発生します (MySQL 8.0.12 より前の ER_LONGITUDE_OUT_OF_RANGE
)。
緯度の値が[−90, 90]の範囲内にない場合は、ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE
エラーが発生します (MySQL 8.0.12 より前の ER_LATITUDE_OUT_OF_RANGE
)。
表示される範囲は度数です。 浮動小数点演算のため、正確な範囲制限はわずかに偏差します。
いずれかの点引数に SRID 0 または 4326 がない場合は、ER_SRS_NOT_FOUND
エラーが発生します。point
引数 SRID の有効性はチェックされません。
SRID 引数が未定義の空間参照システム (SRS) を参照している場合、ER_SRS_NOT_FOUND
エラーが発生します。
SRID 引数が 32 ビット符号なし整数の範囲内にない場合は、ER_DATA_OUT_OF_RANGE
エラーが発生します。
それ以外の場合、戻り値は NULL
以外です。
次の geohash 関数を使用できます:
ST_GeoHash(
, longitude
, latitude
, max_length
)ST_GeoHash(
point
, max_length
)
接続文字セットおよび照合順序で geohash 文字列を戻します。
最初の構文では、longitude
は[-180, 180]の範囲の数値である必要があり、latitude
は[-90, 90]の範囲の数値である必要があります。 2 番目の構文では、POINT
値が必要です。X 座標と Y 座標は、それぞれ経度と緯度の有効範囲内にあります。
結果の文字列は max_length
文字以下で、上限は 100 です。 geohash 値を作成するアルゴリズムでは、場所または max_length
文字の正確な表現のいずれか (いずれか早い方) の文字列が作成されるまで続行されるため、文字列が max_length
文字より短い場合があります。
ST_GeoHash()
は、このセクションの概要で説明されているように引数を処理します。
mysql> SELECT ST_GeoHash(180,0,10), ST_GeoHash(-180,-90,15);
+----------------------+-------------------------+
| ST_GeoHash(180,0,10) | ST_GeoHash(-180,-90,15) |
+----------------------+-------------------------+
| xbpbpbpbpb | 000000000000000 |
+----------------------+-------------------------+
ST_LatFromGeoHash(
geohash_str
)
geohash 文字列値から緯度を範囲[−90, 90]の倍精度数値として返します。
ST_LatFromGeoHash()
デコード関数は、geohash_str
引数から 433 文字以内を読み取ります。 座標値の内部表現における情報の上限を表します。 433rd を超える文字は、それ以外の場合でも無視され、エラーが発生します。
ST_LatFromGeoHash()
は、このセクションの概要で説明されているように引数を処理します。
mysql> SELECT ST_LatFromGeoHash(ST_GeoHash(45,-20,10));
+------------------------------------------+
| ST_LatFromGeoHash(ST_GeoHash(45,-20,10)) |
+------------------------------------------+
| -20 |
+------------------------------------------+
ST_LongFromGeoHash(
geohash_str
)
geohash 文字列値から経度を範囲[−180, 180]の倍精度数値として返します。
geohash_str
引数から処理される最大文字数に関する ST_LatFromGeoHash()
の説明の注釈は、ST_LongFromGeoHash()
にも適用されます。
ST_LongFromGeoHash()
は、このセクションの概要で説明されているように引数を処理します。
mysql> SELECT ST_LongFromGeoHash(ST_GeoHash(45,-20,10));
+-------------------------------------------+
| ST_LongFromGeoHash(ST_GeoHash(45,-20,10)) |
+-------------------------------------------+
| 45 |
+-------------------------------------------+
ST_PointFromGeoHash(
geohash_str
, srid
)
geohash 文字列値を指定して、デコードされた geohash 値を含む POINT
値を戻します。
点の X 座標と Y 座標は、それぞれ[−180, 180]の範囲の経度と[−90, 90]の範囲の緯度です。
srid
引数は 32 ビットの符号なし整数です。
geohash_str
引数から処理される最大文字数に関する ST_LatFromGeoHash()
の説明の注釈は、ST_PointFromGeoHash()
にも適用されます。
ST_PointFromGeoHash()
は、このセクションの概要で説明されているように引数を処理します。
mysql>SET @gh = ST_GeoHash(45,-20,10);
mysql>SELECT ST_AsText(ST_PointFromGeoHash(@gh,0));
+---------------------------------------+ | ST_AsText(ST_PointFromGeoHash(@gh,0)) | +---------------------------------------+ | POINT(45 -20) | +---------------------------------------+