久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

根據緯度/經度在20公里內選擇

select within 20 kilometers based on latitude/longitude(根據緯度/經度在20公里內選擇)
本文介紹了根據緯度/經度在20公里內選擇的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有一個按照以下示例構建的 mysql 表:

i have a mysql table structured as per the example below:

POSTAL_CODE_ID|PostalCode|City|Province|ProvinceCode|CityType|Latitude|Longitude
7|A0N 2J0|Ramea|Newfoundland|NL|D|48.625599999999999|-58.9758
8|A0N 2K0|Francois|Newfoundland|NL|D|48.625599999999999|-58.9758
9|A0N 2L0|Grey River|Newfoundland|NL|D|48.625599999999999|-58.9758

現在我要做的是創建一個查詢,該查詢將選擇搜索位置選定公里范圍內的結果

now what i am trying to do is create a query that will select results within selected kilometers of a searched location

假設他們搜索灰色河流"并選擇查找 20 公里內的所有結果"

so lets say they search for "grey river" and select "find all results within 20 kilometers"

顯然應該選擇灰河",但也應該根據經緯度選擇灰河20公里范圍內的所有位置.

it should obviously select "grey river", but it should also select all locations within 20 kilometers of grey river based on the latitudes and longitudes.

我真的不知道該怎么做.我已經閱讀了半正弦公式,但不知道如何將其應用于 mysql SELECT.

i really have no idea how to do this. i've read up on the haversine formula but have no idea how to apply this to a mysql SELECT.

任何幫助將不勝感激.

推薦答案

SELECT  *
FROM    mytable m
JOIN    mytable mn
ON      ACOS(COS(RADIANS(m.latitude)) * COS(RADIANS(mn.latitude)) * COS(RADIANS(mn.longitude) - RADIANS(m.longitude)) + SIN(RADIANS(m.latitude)) * SIN(radians(mn.latitude))) <= 20 / 6371.0
WHERE   m.name = 'grey river'

如果您的表是 MyISAM,您可能希望以原生幾何格式存儲您的點并在其上創建一個 SPATIAL 索引:

If your table is MyISAM you may want to store your points in a native geometry format and create a SPATIAL index on it:

ALTER TABLE mytable ADD position POINT;

UPDATE  mytable
SET     position = POINT(latitude, longitude);

ALTER TABLE mytable MODIFY position NOT NULL;

CREATE SPATIAL INDEX sx_mytable_position ON mytable (position);

SELECT  *
FROM    mytable m
JOIN    mytable mn
ON      MBRContains
                (
                LineString
                        (
                        Point
                                (
                                X(m.position) - 0.009 * 20,
                                Y(m.position) - 0.009 * 20 / COS(RADIANS(X(m.position)))
                                ),
                        Point
                                (
                                X(m.position) + 0.009 * 20,
                                Y(m.position) + 0.009 * 20 / COS(RADIANS(X(m.position))
                                )
                        ),
                mn.position
                )
        AND ACOS(COS(RADIANS(m.latitude)) * COS(RADIANS(mn.latitude)) * COS(RADIANS(mn.longitude) - RADIANS(m.longitude)) + SIN(RADIANS(m.latitude)) * SIN(radians(mn.latitude))) <= 20 / 6371.0
WHERE   m.name = 'grey river'

這篇關于根據緯度/經度在20公里內選擇的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Joining 2 tables in SELECT(MYSQL/PHP)(在 SELECT(MYSQL/PHP) 中加入 2 個表)
How to make lt;option selected=quot;selectedquot;gt; set by MySQL and PHP?(如何使lt;option selected=“selectedgt;由 MySQL 和 PHP 設置?)
Auto populate a select box using an array in PHP(使用 PHP 中的數組自動填充選擇框)
PHP SQL SELECT where like search item with multiple words(PHP SQL SELECT where like search item with multiple words)
json_encode produce JSON_ERROR_UTF8 from MSSQL-SELECT(json_encode 從 MSSQL-SELECT 產生 JSON_ERROR_UTF8)
MySQL ORDER BY rand(), name ASC(MySQL ORDER BY rand(),名稱 ASC)
主站蜘蛛池模板: 91av视频在线 | 日韩精品在线观看视频 | 日韩一级免费视频 | 国产视频福利 | 在线日韩 | 可以免费看黄色的网站 | 九色自拍 | 成人毛片在线观看 | 亚洲欧美成人 | 97国产视频 | 在线观看黄色小视频 | 久久免费视频网站 | 欧美一级淫片bbb一84 | 久久久久婷婷 | 国产精品美女视频 | 免费看黄色录像 | 国产精品一区二区av | 亚洲综合在线视频 | 一区二区三区久久久 | 一个色综合网 | 天天拍夜夜操 | 97精品视频| 久热精品视频在线观看 | 精品视频国产 | 亚洲国产精品久久久 | 成人毛片在线播放 | 成人香蕉网 | 日日干av| 羞羞网站入口 | 日韩av在线一区二区 | 亚洲视频中文字幕 | 黄色一级片免费看 | 天天摸天天爽 | 精品黄色片 | 久久激情视频 | 亚洲精品久 | 九九九九精品 | 美利坚合众国av | 欧美色综合天天久久综合精品 | 黄色片视频| 综合久久久久 |