經緯度計算距離sql
1. sql語句怎麼寫算坐標經緯度之間的距離我是mysql資料庫。 請詳細點!謝謝!
給大家一條語句能執行的地方
SELECT id, ( 6371* acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY id LIMIT 20 資料庫中查找 距離 37,-122 距離 小於25公里的 經緯度
以前看GOOGLE 地圖 API 開發時候的一篇文章裡面有 給分 給分
2. sql (mysql)怎麼實現查詢某一個經緯度周圍500米距離的餐館,資料庫存放所有餐館的經緯度
回答的有點晚,正好我做到相關的項目了,希望能幫到其他人.
餐館申請時候通過填寫的地址取得經緯度存入資料庫,下面是查詢某個經緯度附近500米的
$user_lat='41.749034'; //傳過來的緯度
$user_lng='123.46017';//傳過來的經度
$store_mod=db("store"); //資料庫
$storelist=$store_mod->query("SELECT
*,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((".$user_lat."*PI()/180-【store_latitude】*PI()/180)/2),2)+COS(".$user_lat."*PI()/180)*COS(【store_latitude】*PI()/180)*POW(SIN((".$user_lng."*PI()/180-【store_longitude】*PI()/180)/2),2)))*1000)
AS distance FROM store HAVING 【搜索條件如 state=1】 distance<【周圍距離多少米 如
500】 ORDER BY distance ASC");
var_mp($storelist);
【】sql語句中括弧的store_latitude,store_longitude為你資料庫存的商家經緯度的欄位名,其餘的為注釋
3. 知道兩地經緯度,如何求實地距離
同一經線上1緯度差大約等於111km;同一緯線上1經度差大約等於111×(cos緯度)km。
已知兩點經緯度,計算兩地直線距離需遵循以下計算:
①將兩地的經緯度轉換為(x,y)(x',y')的形式計算經緯度的差值;
②計算兩地緯度值相差/x-x'/距離,經度值相差/y-y'/距離。
③利用數學中的勾股定理計算兩地直線距離。
經度的每一度被分為60分
每一分被分為60秒。一個經度因此一般看上去是這樣的:東經23°27′ 30"或西經23°27′ 30"。更精確的經度位置中秒被表示為分的小數,比如:東經23°27.500′,但也有使用度和它的小數的:東經23.45833°。有時西經被寫做負數:-23.45833°。但偶爾也有人把東經寫為負數,但這相當不常規。
以上內容參考:網路-經緯度
4. sql (mysql)實現查詢某一個經緯度周圍500米距離的餐館,資料庫存放所有餐館的經緯度。
mysql兩點間距,你也自己弄成函數
公式如下,單位米:
第一點經緯度:lng1 lat1
第二點經緯度:lng2 lat2
round(6378.138*2*asin(sqrt(pow(sin(
(lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)*
pow(sin( (lng1*pi()/180-lng2*pi()/180)/2),2)))*1000)
例如:
SELECT store_id,lng,lat,
ROUND(6378.138*2*ASIN(SQRT(POW(SIN((22.299439*PI()/180-lat*PI()/180)/2),2)+COS(22.299439*PI()/180)*COS(lat*PI()/180)*POW(SIN((114.173881*PI()/180-lng*PI()/180)/2),2)))*1000)
AS
juli
FROM store_info
ORDER BY juli DESC
LIMIT 316
5. mysql中怎麼根據經緯度計算距離
DROP FUNCTION IF EXISTS func_calcDistance ;
CREATE FUNCTION func_calcDistance(
origLng DECIMAL(20,6), -- 目的地經度
origLat DECIMAL(20,6), -- 目的地緯度
longitude DECIMAL(20,6), -- 當前所在地點經度
latitude DECIMAL(20,6) -- 當前所在地點緯度
)
RETURNS DOUBLE
BEGIN
DECLARE result DOUBLE DEFAULT 0;
SET result = round(6378.138*2*asin(sqrt(pow(sin(
(origLat*pi()/180-latitude*pi()/180)/2),2)+cos(origLat*pi()/180)*cos(latitude*pi()/180)*
pow(sin( (origLng*pi()/180-longitude*pi()/180)/2),2)))*1000);
RETURN result;
END ;
6. 怎麼知道經緯度算距離,
北京緯度為39°54′N,馬來西亞緯度為1°22′N,則兩地緯度差為38°32′,根據緯度相差1度,緯度1秒的長度,地球的子午線總長度大約40008km。
平均:緯度1度 = 大約111km;緯度1分= 大約1.85km;緯度1秒= 大約30.8m。那麼距離相差111km的規律,計算得兩地南北距離為4281km。
經度分為360度,每15度1個時區,其中0度的叫本初子午線,是第一個進入新一天的地方,然後向西每過1個時區就相差1小時。
例如是早上5點,那麼向西一個時區就是早上4點,再過1個時區就是早上3點,依此類推,向東則相反,一直到本初子午線,也就是說本初子午線兩側剛好相差23個小時,從赤道向兩級,緯度越來越高。赤道是劃分南北兩半球的分界線。
經緯度1度=60分=3600秒,這個六十進制是古巴比倫人定製的,我們今天仍然在使用,只要關於角度和圓都是一樣。
赤道的緯度為0°,將行星平分為南半球和北半球。緯度是指某點與地球球心的連線和地球赤道面所成的線面角,其數值在0至90度之間。位於赤道以北的點的緯度叫北緯,記為N,位於赤道以南的點的緯度稱南緯,記為S。
緯度數值在0至30度之間的地區稱為低緯地區,緯度數值在30至60度之間的地區稱為中緯地區,緯度數值在60至90度之間的地區稱為高緯地區。赤道、南回歸線、北回歸線、南極圈和北極圈是特殊的緯線。
(6)經緯度計算距離sql擴展閱讀:
經緯度計算方法
在地球上任何地點,只要有隻表,有根竹竿,一根捲尺,就可知道當地經緯度。但表必須與該國標准時校對。
方法如下:
1、先算兩分日
比如在中國某地,桿影最短時是中午13點20分,且桿長與影長之比為1,則可知該地是北緯45°(tgα=1),東經100°(從120°里1小時減15°,4分鍾減1°)桿長與影長之比需查表求α,這里用了特殊角。
2、再算兩至日經度的演算法不變 緯度在北半球冬至α+23.5°,夏至α-23.5°在任意一天加減修正值即可。
3、修正值演算法:就是距兩分或兩至日的天數差乘以94/365. 比如2013年2月17日,2013年3月22日春分差33天,即太陽直射點在南緯
33×94/365=8.5°
所以今天正午時得到的緯度是(arctgα+8.5)°
tgα= 桿長/影長
參考資料來源:網路-經緯度
7. oracle 根據已知的點的經緯度查詢數據中距離該點500米的經緯度點,用sql怎麼查呢
猜猜你的資料庫列大致的格式為:經度,緯度,餐廳。 。 。 估計經緯度應該有精確的控制,你可以根據需要設置查詢 1。矩形(簡單):減去經度,緯度和一個固定值的減法運算的一個固定值,條件是在這個范圍內 2設置。圓(復雜):經度和平方和的平方根的緯度,條件設置 在此范圍內的資料庫的估計要大,所以輸出音量加一個限制是必要 SQL,甲骨文 SELECT TOP 10 *從'表名,其中
選擇*從
8. 經緯度與距離的換算
經緯度與距離的換算有以下兩種方法:
1、二維轉換
二維轉換方法是將平面坐標(東坐標和北坐標)從一個坐標系統轉換到另一個坐標系統。在轉換時不計算高程參數。該轉換方法需要確定4個參數(2個向東和向北的平移參數,1個旋轉參數和1個比例因子)。如果要保持GPS測量結果獨立並且有地方地圖投影的信息,那麼採用三維轉換方法最合適。
2、三維轉換
該方法基本操作步驟是利用公共點,也就是同時具有WGS84直角坐標和地方坐標的直角坐標的點位,一般需要3個以上重合點,通過布爾莎模型(或其他模型)進行計算,得到從一個系統轉換到另一個系統中的平移參數、旋轉參數和比例因子。
坐標轉換分類
1、大地坐標(BLH)對平面直角坐標(XYZ)
常規的轉換應先確定轉換參數,即橢球參數、分帶標准(3度,6度)和中央子午線的經度。橢球參數就是指平面直角坐標系採用什麼樣的橢球基準,對應有不同的長短軸及扁率。畫到直角坐標系可以寫為(x+z*acosθ,y+z*asinθ)a,θ為參數。
2、北京54全國80及WGS84坐標系的相互轉換
一種國際上採用的地心坐標系。坐標原點為地球質心,其地心空間直角坐標系的Z軸指向BIH (國際時間)1984.O定義的協議地球極(CTP)方向,X軸指向BIH 1984.0的零子午面和CTP赤道的交點,Y軸與Z軸、X軸垂直構成右手坐標系,稱為1984年世界大地坐標系統。
3、任意兩空間坐標系的轉換
由於測量坐標系和施工坐標系採用不同的標准,要進行精確轉換,必須知道至少3個重合點(即為在兩坐標系中坐標均為已知的點。採用布爾莎模型進行求解。
9. sql語句怎麼寫算坐標經緯度之間的距離
declare @x1 float
declare @x2 float
declare @y1 float
declare @y2 float
set @x1 = 5
set @x2 = 10
set @y1 = 5
set @y2 = 10
select power(power((@x1-@x2),2)+power((@y1-@y2),2),0.5)
10. 經緯度計算距離公式
關於用經緯度計算距離:
地球赤道上環繞地球一周走一圈共40075.04公里,而@一圈分成360°,而每1°(度)有60,每一度一秒在赤道上的長度計算如下:
40075.04km/360°=111.31955km
111.31955km/60=1.8553258km=1855.3m
而每一分又有60秒,每一秒就代表1855.3m/60=30.92m
任意兩點距離計算公式為
d=111.12cos{1/[sinφasinφb十cosφacosφbcos(λb—λa)]}
其中a點經度,緯度分別為λa和φa,b點的經度、緯度分別為λb和φb,d為距離。
至於比例尺計算就不廢話了