MySQL のジオメトリ型を使用して経度と緯度の距離の問題を処理する方法

MySQL のジオメトリ型を使用して経度と緯度の距離の問題を処理する方法

テーブルを作成する

テーブル `map` を作成します (
 `id` int(11) NULLではない、
 `address` varchar(255) NOT NULL DEFAULT ''
 `location` ジオメトリが NULL ではない、
 主キー (`id`)、
 空間キー `idx_location` (`location`)
)

入れる

マップ (ID、アドレス、場所) に VALUES (1、'somewhere'、ST_GeomFromText('POINT(121.366961 31.190049)') を挿入します。

ST_GeomFromText関数を使用する必要があり、POINT()には経度+空間+緯度が含まれていることに注意してください。

クエリ

1.緯度と経度を確認する

マップから、アドレス、ST_AsText(location) を location として選択します。

2. 2点間の距離を計算する

ST_Distance_Sphere(POINT(121.590347, 31.388094),location) を distance FROM map として選択します。

計算結果はメートル単位です。

POINT() 内の緯度と経度がカンマで区切られていることに注意してください。

3. 1000m以内の場所を検索し、遠いものから近いものへと並べ替える

次のようにコードをコピーします
SELECT id, address, ST_Distance_Sphere(POINT(121.590347, 31.388094),location) AS distance FROM map WHERE ST_Distance_Sphere(POINT(121.590347, 31.388094),location) < 1000 ORDER BY distance;

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Mybatis 学習ロード mysql バッチ データ追加方法
  • MySQLとRedisでセカンダリキャッシュを実装する方法の詳細な説明
  • MySQL共通インデックスとユニークインデックスの詳細な説明
  • mysql binlog (バイナリログ) を表示する方法
  • Docker が MySQL を作成する説明
  • PHP date() フォーマット MySQL 挿入 datetime メソッド
  • pymysql で SQL インジェクション問題を解決する方法
  • MySQLテーブルのフィールドと関連属性をエクスポートする手順
  • テーブルを開く際のMySQLスレッドの問題の解決方法
  • MySQL の制限パフォーマンス分析と最適化

<<:  vue $http の get および post リクエストのクロスドメイン問題を解決する

>>:  Tomcat が非同期サーブレットを実装する方法の詳細な説明

推薦する

Linux環境でタイムゾーンを設定できない問題を解決

Linuxでタイムゾーンを変更する場合、常に変更することはできませんAsia/Shanghai に変...

インタビュアーはCSSで固定アスペクト比を実現する方法を尋ねました

この質問に関連するニーズはまだないかもしれませんし、面接でこの質問をされたことがないかもしれませんが...

CSSはラジオをクリックして2つの画像スタイルを切り替えますが、複数のラジオのうち1つだけをチェックできます。

クリックされたボタンには赤い画像スタイルを実装し、選択されていない他のボタンには灰色の画像スタイルを...

CSS3アニメーションとHTML5の新機能の詳しい説明

1. CSS3アニメーション☺CSS3 アニメーションは、JavaScript を介して要素のスタイ...

データベースSQL SELECTクエリの仕組み

私たちは Web 開発者として、プロの DBA ではありませんが、データベースなしではやっていけませ...

MySQL 5.7.20 の解凍バージョンをインストールするための詳細な手順 (2 つの方法)

Windows 64ビットでのMySQLのインストールについて説明します。5.7以降、MySQLの...

Zabbixは複数のmysqlプロセスの監視を実装します

1 つのサーバー上で 3 つの MySQL インスタンス プロセスが開始され、それぞれ異なるポート ...

Docker コンテナを他のサーバーに移行する 5 つの方法

多くの場合、移行は避けられません。ハードウェアのアップグレード、データ センターの変更、古いオペレー...

vue3.0共通コンポーネントの自動インポート方法の例

1. 前提条件インポートには require.context メソッドを使用します。vite で作成...

docker+devpi を使用してローカル pypi ソースをビルドする方法

以前、開発で頻繁に pip ダウンロードを使用する必要がありました。pip ソースを国産ソースに変更...

CSS3 すりガラス効果

すりガラス効果がうまく表現されていれば、ページが非常に鮮やかで立体的に見えるようになります。写真に直...

よくある Linux 英語エラーの中国語翻訳 (初心者必見)

1.コマンドが見つかりません コマンドが見つかりません2. そのようなファイルまたはディレクトリは...

オンラインMySQLオプティマイザの誤判断によって発生した低速クエリイベントを記録する

序文:非常に遅いクエリとリクエストのタイムアウトのアラートを受け取りました。メトリックを通じて My...

MySQL スケジュールタスク (EVENT イベント) を詳細に設定する方法

目次1. イベントとは何ですか? 2. 「イベント」機能を有効にする1. 機能が有効になっているかど...

シンプルなショッピングカートの最も完全なコード分析を実装する JavaScript (ES6 オブジェクト指向)

この記事では、シンプルなショッピングカートを実装するためのJavaScriptの具体的なコードを参考...