現在、OpenLayersマッピングサイトを開発しています。測定は、ラインツールとエリアツールを使用して行うことができます。現在、これらの両方は、OpenLayers APIで概説されている測地線測定値を計算するように設定されています。
ユーザーのテスト中に、人々がツールの測定値に既に知っている距離(町間の運転など)を疑問視したため、平面測定ではなく測地線測定を使用します。
サイトの新機能は、ユーザーが設定された半径の地図上に円を描くことができることです。OpenLayersでは、平面距離を使用した円の描画のみが許可されているため、ユーザーが測地線測定ツールで円を測定すると、値が一致しません。下の画像では、円の平面半径は10kmですが、直径の測地線の測定値は12kmです。
これにより、ユーザー(と私)はどちらが正しいのか疑問に思うようになります。
この答えを見ると、ほとんどのデスクトップGISシステムはこの問題を「無視」し、平面測定値と距離を返しているようです。では、平面および測地線の測定を処理するためのユーザーインターフェイスと精度の観点から、ベストプラクティスは何でしょうか。
更新
半径とメルカトル図法の問題を示すこのGoogleの例を見つけました。
http://maps.forum.nu/gm_sensitive_circle2.html
円を描くJavaScriptコードは次のとおりです。
var lat1 = (PI/180)* center.lat(); // radians
var lng1 = (PI/180)* center.lng(); // radians
for (var a = 0 ; a < 361 ; a++ ) {
var tc = (PI/180)*a;
var y = asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc));
var dlng = atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(y));
var x = ((lng1-dlng+PI) % (2*PI)) - PI ; // MOD function
var point = new GLatLng(parseFloat(y*(180/PI)),parseFloat(x*(180/PI)));
circlePoints.push(point);
bounds.extend(point);
}
この円は地球の曲率を考慮していますか?
最終更新
http://geographika.co.uk/creating-a-geodesic-circle-in-openlayersに投稿された作業コード