日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 计算gps坐标距离_mysql、sqlserver和php计算GPS经纬度坐标距离

發布時間:2024/9/20 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 计算gps坐标距离_mysql、sqlserver和php计算GPS经纬度坐标距离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要:mysql、sqlserver、oracle和php計算GPS經緯度坐標距離

mysql計算GPS經緯度距離DELIMITER $$

CREATEDEFINER=`root`@`localhost` FUNCTION`getDistance`(

lon1 float(10,7)

,lat1 float(10,7)

,lon2 float(10,7)

,lat2 float(10,7)

) RETURNSdouble

begin

declared double;

declareradius int;

setradius = 6378140; #假設地球為正球形,直徑為6378140米

setd = (2*ATAN2(SQRT(SIN((lat1-lat2)*PI()/180/2)

*SIN((lat1-lat2)*PI()/180/2)+

COS(lat2*PI()/180)*COS(lat1*PI()/180)

*SIN((lon1-lon2)*PI()/180/2)

*SIN((lon1-lon2)*PI()/180/2)),

SQRT(1-SIN((lat1-lat2)*PI()/180/2)

*SIN((lat1-lat2)*PI()/180/2)

+COS(lat2*PI()/180)*COS(lat1*PI()/180)

*SIN((lon1-lon2)*PI()/180/2)

*SIN((lon1-lon2)*PI()/180/2))))*radius;

returnd;

end

mssql計算GPS經緯度距離SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE FUNCTION [dbo].[getDistance](@lng1 FLOAT,@lat1 FLOAT,@lng2 FLOAT,@lat2 FLOAT)

RETURNS FLOAT

AS

BEGIN

DECLARE @Distance FLOAT

DECLARE @EARTH_RADIUS FLOAT

SET @EARTH_RADIUS = 6378140

DECLARE @RadLatBegin FLOAT,

@RadLatEnd FLOAT,

@RadLatDiff FLOAT,

@RadLngDiff FLOAT

SET @RadLatBegin = @lat1 *PI()/ 180.0

SET @RadLatEnd = @lat2 *PI()/ 180.0

SET @RadLatDiff = @RadLatBegin - @RadLatEnd

SET @RadLngDiff = @lng1 *PI()/ 180.0 - @lng2 *PI()/ 180.0

SET @Distance = 2 *ASIN(

SQRT(

POWER(SIN(@RadLatDiff / 2), 2)+COS(@RadLatBegin)*COS(@RadLatEnd)

*POWER(SIN(@RadLngDiff / 2), 2)

)

)

SET @Distance =ROUND(@Distance * @EARTH_RADIUS,1)

--SET @Distance = Round(@Distance * 10000) / 10000

RETURN @Distance

END

PHP計算GPS經緯度坐標<?php

functionrad($d){

return$d* 3.1415926535898 / 180.0;

}

functionGetDistance($lat1, $lng1, $lat2, $lng2){

$EARTH_RADIUS= 6378.137;

$radLat1= rad($lat1);

$radLat2= rad($lat2);

$a= $radLat1- $radLat2;

$b= rad($lng1) - rad($lng2);

$s= 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)));

$s= $s*$EARTH_RADIUS;

$s= round($s* 10000) / 10000;

return$s;

}

echoGetDistance(116.480733,39.98684,117.480733,39.98684);

?>

Oracle計算GPS經緯度距離create or replace FUNCTION GET_DISTANCE

(

LNG1 IN NUMBER,

LAT1 IN NUMBER,

LNG2 IN NUMBER,

LAT2 IN NUMBER

) RETURN NUMBER IS

DISTANCE NUMBER:=0;

PI NUMBER:=3.141592625;

EARTH_RADIUS NUMBER :=6378140;

RADLATBEGIN NUMBER :=LAT1*PI/180.0;

RADLATEND NUMBER :=LAT2*PI/180.0;

RADLATDIFF NUMBER :=RADLATBEGIN-RADLATEND;

RADLNGDIFF NUMBER :=LNG1*PI/180.0-LNG2*PI/180.0;

BEGIN

DISTANCE:=2*ASIN(SQRT(POWER(SIN(RADLATDIFF/2),2)+COS(RADLATBEGIN)*COS(RADLATEND)*POWER(SIN(RADLNGDIFF/2),2)));

DISTANCE:=ROUND(DISTANCE*EARTH_RADIUS,1);

RETURN DISTANCE;

END GET_DISTANCE;

總結

以上是生活随笔為你收集整理的mysql 计算gps坐标距离_mysql、sqlserver和php计算GPS经纬度坐标距离的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。