0

場所を含むテーブルがあり、それぞれに緯度と経度のポイントがあります。緯度と経度のポイントがあり、KM で距離が必要です。select コマンドを使用して、この距離に一致する行を db で見つける必要があります。

すべての行を選択せず​​に、各ポイントの関数を実行して距離を計算する方法はありますか?

ありがとう

4

3 に答える 3

0

皆さんありがとう!ここに答えがあります:

    String SelectString = "SELECT * FROM (SELECT *,(((acos(sin((";
    SelectString += userLat;
    SelectString += "*pi()/180)) * sin((latPoint*pi()/180))+cos((";
    SelectString += userLat;
    SelectString += "*pi()/180)) * cos((latPoint*pi()/180)) * cos(((";
    SelectString += userLon;
    SelectString += "- lonPoint)*pi()/180))))*180/pi())*60*1.1515*1.609344) as distance FROM MYTABLE ) t WHERE distance <=";
    SelectString += userDistance;
于 2013-01-25T09:13:01.213 に答える
0

使用しているSQL Serverのバージョンはわかりません.2008には、「すべての行を選択する」という懸念を回避できるジオクエリ機能があります。それ以外の場合は、次のブログ投稿が役立つ場合があります: http://johndyer.name/latitudelongitude-distance-calculation-in-sql-server/

于 2013-01-09T18:02:02.403 に答える
0

これには計算列を使用するのが好きです。具体的には、緯度/経度である地理タイプの計算列を作成します。それがあれば、その列に対して必要なすべての空間メソッドを使用できます。

于 2013-01-20T21:04:11.687 に答える