2012-03-20 15 views
0

私の質問は、私は2つのポイント間の距離を計算することができる関数/数式を探していると述べています。今私は例を見て、偉大な機能を見いだしましたが、それらのどれも、2点のセットを供給すると、すべて0に戻りません。基本的には、次の関数(lat1、lon1、lat2、lon2)を渡して距離を戻す必要があります。この距離から、別のポイントが近くにあるかどうかをチェックすることができます。lonとlatの2つのセットの間の距離を計算する

UPDATE わかりましたので、私は今、これはキロと正常に動作しますが、私が探していますがメートルで、

BEGIN 
    DECLARE pi, q1, q2, q3 , roundedVal FLOAT ; 
     DECLARE rads FLOAT DEFAULT 0; 
     SET pi = PI(); 
     SET lat1 = lat1 * pi/180; 
     SET lon1 = lon1 * pi/180; 
     SET lat2 = lat2 * pi/180; 
     SET lon2 = lon2 * pi/180; 
     SET q1 = COS(lon1-lon2); 
     SET q2 = COS(lat1-lat2); 
     SET q3 = COS(lat1+lat2); 
     SET rads = ACOS(0.5*((1.0+q1)*q2 - (1.0-q1)*q3)); 
     RETURN FORMAT((6371 * rads) , 1); 
    END 

を次の関数を使用しています。だから、私はその機能の数字を変えているが、どれが何であるか知っている。どんな助け?

+0

のEr、どのような言語でこれを適用し、この文字列で検索してください?そして[あなたは何を試しましたか](http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – ghoti

+0

申し訳ありませんが、langaugeはmysqlです。私はキロメートルを得るための計算式を持っています。すべての助けを借りてくれてありがとう! –

+0

でkmをmに変更すると、結果に1000が掛かります。つまり、 "k"は "kilo"が "thousand"であることを意味します。 –

答えて

1

私は、MySQLの特別な拡張を見てみることをお勧めします。

http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html

あなたは、このブログはあなたにいくつかの使用を持っている可能性があることを空想しない場合:

http://zcentric.com/2010/03/11/calculate-distance-in-mysql-with-latitude-and-longitude/

+0

ありがとうございました!これらが存在するかどうかはわかりませんでした。 –

0

$qry = "SELECT *,(((acos(sin((".$latitude."*pi()/180)) * 
sin((`Latitude`*pi()/180))+cos((".$latitude."*pi()/180)) * cos((`Latitude`*pi()/180))* 
cos(((".$longitude."- `Longitude`)*pi()/180))))*180/pi())*60*1.1515) as distance FROM 
'MyTable` WHERE distance >= ".$distance." 
0

は値

double theta = src_longitude - dest_longitude; 
double min_distance = (Math.sin(Math.toRadians(src_latitude)) * Math.sin(Math.toRadians(dest_latitude))) +(Math.cos(Math.toRadians(src_latitude)) * Math.cos(Math.toRadians(dest_latitude)) * Math.cos(Math.toRadians(theta))); 
min_distance = Math.acos(min_distance); 
min_distance = Math.toDegrees(min_distance); 
min_distance = min_distance * 60 * 1.1515 * 1.609344; 
+0

ここで何をしているのか分かりません。シータとは何ですか?なぜ距離を度に変換しますか? 60 * 1.1515 * 1.609344とは何ですか? min_distance(ft/m/miles/nautical miles/km)の単位は何ですか? – TreyA

+0

申し訳ありません..私の間違いは、答えを編集しました。一見する – skaur

関連する問題