Javaはこちら:https://github.com/smzn/Hubeny
public function Hubeny_Distance_start($x1, $y1, $x2, $y2){
$d;//二点間距離
$X1; $Y1; $X2; $Y2;//各値のラジアン値
$dx; $dy;//X値、Y値の差
$MuY;//緯度の平均値
$W;
$M;//子午線曲率半径
$N;//卯酉線曲率半径
//double E =0.00669437999014;//第一離心率eの二乗
$E;
$a=6378137.0;//長半径(赤道半径)
$b=6356752.314140;//短半径(極半径)
$X1 = $this->_toRadians($x1);
$Y1 = $this->_toRadians($y1);
$X2 = $this->_toRadians($x2);
$Y2 = $this->_toRadians($y2);
$dx = $X1-$X2;
$dy = $Y1-$Y2;
$MuY = ($Y1+$Y2)/2;
$E = (($a*$a)-($b*$b))/($a*$a);
$W = sqrt( 1-($E*(sin($MuY)*sin($MuY))) );
$M = ($a*(1-$E)) / ($W*$W*$W);
$N = $a/$W;
$d = sqrt((($dy*$M)*($dy*$M))+(($dx*$N*cos($MuY))*($dx*$N*cos($MuY))));
return $d;
}
public function _toRadians($deg)
{
return $deg * M_PI / 180.0;
}
/*
* ラジアンを角度に変換する
*/
public function _toDegrees($rad)
{
return $rad * 180.0 / M_PI;
}
0 件のコメント:
コメントを投稿