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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 经纬度算距离,根据经纬度诀别用java和Oracle存储过程计算两点距离

發布時間:2025/3/11 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 经纬度算距离,根据经纬度诀别用java和Oracle存储过程计算两点距离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

根據經緯度分別用java和Oracle存儲過程計算兩點距離

create or replace procedure SP_GET_DISTANCE

(cx in number,cy in number,sx in number, sy in number,distance out varchar2)

is

d number;

x number;

y number;

r number;

pi number;

begin

--開始計算

r:=6371229;--地球半徑

pi:=3.14159265358979323;--圓周率

x:=(sx-cx)*pi*r*cos((sy+cy)/2*pi/180)/180;

y:=(sy-cy)*pi*r/180;

d:=SQRT(power(x,2)+power(y,2));

distance:=to_char(d,9999999999999.99);

end SP_GET_DISTANCE;

package com.wpn.web.util;

public class Distance {

private final static double PI = 3.14159265358979323;// 圓周率

private final static double R = 6371229; // 地球的半徑

private Distance() {

}

/**

* 緯度lat 經度lon

* @param longt1

* @param lat1

* @param longt2

* @param lat2

* @return

*/

public static double getDistance(double longt1, double lat1, double longt2, double lat2) {

double x, y, distance;

x = (longt2 - longt1) * PI * R * Math.cos(((lat1 + lat2) / 2) * PI / 180) / 180;

y = (lat2 - lat1) * PI * R / 180;

distance = Math.hypot(x, y);

return distance;

}

/*public enum GaussSphere {

Beijing54, Xian80, WGS84,

}

private static double Rad(double d) {

return d * Math.PI / 180.0;

}

public static double DistanceOfTwoPoints(double lng1, double lat1, double lng2, double lat2, GaussSphere gs) {

double radLat1 = Rad(lat1);

double radLat2 = Rad(lat2);

double a = radLat1 - radLat2;

double b = Rad(lng1) - Rad(lng2);

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

s = s * (gs == GaussSphere.WGS84 ? 6378137.0 : (gs == GaussSphere.Xian80 ? 6378140.0 : 6378245.0));

s = Math.round(s * 10000) / 10000;

return s;

}*/

public static void main(String[] arg){

double longt1 = 116.515502;

double lat1 = 39.863898;

double longt2 = 116.304187;

double lat2 = 40.052584;

System.out.println(getDistance(longt1,lat1,longt2,lat2));

}

}

總結

以上是生活随笔為你收集整理的oracle 经纬度算距离,根据经纬度诀别用java和Oracle存储过程计算两点距离的全部內容,希望文章能夠幫你解決所遇到的問題。

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