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 が非同期サーブレットを実装する方法の詳細な説明

推薦する

CSSスプライト技術は複数の背景を1つのPNG画像に統合しますCSSポジショニング

アメリカのYAHOOがページ制作で使用している画像統合技術。これらのアイコン、列背景、画像ボタンを定...

このような大画面のデジタルスクロール効果が必要になる場合があります

大画面のデジタル スクロール効果は、最近の作業における大画面 UI ダイアグラムから生まれました。U...

emとは?emとpxの紹介と変換方法

それは何ですか? em はフォントの高さを指し、どのブラウザでもデフォルトのフォントの高さは 16 ...

フォームにファイルをアップロードした後にアクションを保存するよう促す理由と解決策

jsonデータはhtml形式で返される必要がありますつまり、 response.setContent...

React+Ant Design開発環境をセットアップするための実装手順

基礎1. スキャフォールディングを使用してプロジェクトを作成し、開始する1.1 足場を設置する: n...

MySQL スケジュールされたデータベース バックアップ操作の例

この記事では、MySQL のスケジュールされたデータベース バックアップ操作の例について説明します。...

CSS初心者向けチュートリアル: 背景画像を画面全体に表示する

インターフェース全体に背景画像を表示したい場合は、当然 body に背景を追加することを考えます。コ...

Vue3のdefineComponentの役割についての簡単な説明

目次defineComponent オーバーロード関数開発実務defineComponent 関数は...

変換を使用して純粋な CSS ポップアップ メニューを実装するためのサンプル コード

序文トップメニューを作成する場合、ポップアップのセカンダリメニューを作成する必要があります。 以前の...

MySQL スライディング集計/年初来集計の原理と使用例の分析

この記事では、例を使用して、MySQL スライディング集計/年初来集計の原理と使用方法を説明します。...

HTML スタイル タグと関連する CSS リファレンスの詳細な説明

HTML スタイル タグスタイルタグ - ドキュメント内でスタイルを宣言するときにこのタグを使用しま...

MySQLの文字タイプは大文字と小文字を区別します

デフォルトでは、MySQLの文字タイプは大文字と小文字を区別しません。つまり、name='A...

MySQL で主キーと ROWID を使用する際の落とし穴の概要

序文MySQL の rowid の概念については聞いたことがあるかもしれませんが、テストや実践が難し...

検証コード干渉を実装する js (動的)

この記事の例では、検証コードの動的干渉を実装するためのjsの具体的なコードを共有しています。具体的な...

Docker イメージ管理の一般的な操作コード例

ミラーリングも Docker のコアコンポーネントの 1 つです。ミラーリングはコンテナ操作の基盤で...