質問

私は通常のメルカトルマップを備えたOpenLayersを使用していますが、LATLONGでポイントのグリッドを見つけることで、境界ボックスをサンプリングしようとしています。 Bボックスは、例えばラトロンで表現されています

48.1388,-15.3616,55.2057,-3.9359

距離を定義できます (例:x:2.5、y:2.4)そしてそこからポイントを解決します。しかし、私はこの距離を表現したいと思います メーター (例えば50000)それをユーザーの考え方に関連付けるために(人々は学位ではなくメーターを理解しています)。この距離を変換するにはどうすればよいですか?私はポイントを再損ける方法を知っていますが、距離はありません。

ヒントをありがとう!ムロン

役に立ちましたか?

解決

使用 ハーバーニンフォーミュラ LAT/LONGの2つのポイント間の距離を取得します。これは、地球が球体であることを前提としています(ほとんどの場合、「十分に良い」)。

それのJavaScriptの実装(恥知らずに盗まれた ここ)このように見えます:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;

他のヒント

地球のわずかに非球形の形を許すことなく、

北から南への緯度1分= 1航海マイル= 6075フィート= 60分= 60分= 60 * 6075フィート1メートルに3.28フィートあるので、1度= 60 * 6075 / 3.28メートル= 111,128メートル

または、緯度の1分= 1,852メートルなので、1度= 60 * 1852メートル= 111,120メートル

どちらがもっと正確かわかりません...

1つの経度の場合、同じことをしますが、北に移動すると経度が近づくため、コサイン(緯度)を掛けます。

程度とメートル間の変換は、地球の表面全体で異なります。

球状の地球を仮定すると、緯度=距離 * 360 /(2 * pi * 6400000)

経度は緯度によって異なることに注意してください:

程度の経度=距離 * 360 * /(2 * pi * cos(緯度))

上記は地球の表面用であり、メルカトル投影を使用しません。投影された線形距離で作業したい場合は、メルカトル投影を使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top