座標とメートル単位の距離に基づいて2つの新しい経度と2つの新しい緯度を作成し、特定のポイントの周りにニースの境界ボックスを作成します。これは都市の一部用で、最大±1500メートルです。したがって、地球の曲率を考慮する必要はないと思います。
ので、私は持っています 50.0452345
(x)および4.3242234
(y)そしてx + 500メートル、x-500メートル、y-500メートル、y + 500メートルを知りたい
多くのアルゴリズムを見つけましたが、ほとんどすべてがポイント間の距離を処理しているようです。
経度ごとのキロメートル数はおよそ
(2*pi/360) * r_earth * cos(theta)
ここで、theta
は緯度で、度はr_earth
は約6378 kmです。
緯度ごとのキロメートル数は、すべての場所でほぼ同じで、約
(2*pi/360) * r_earth = 111 km / degree
だからあなたができる:
new_latitude = latitude + (dy / r_earth) * (180 / pi);
new_longitude = longitude + (dx / r_earth) * (180 / pi) / cos(latitude * pi/180);
dx
とdy
が地球の半径と比較して小さく、極に近づかない限り。
受け入れられた答えは完全に正しく、機能します。私はいくつかの調整を行い、これに変わりました:
double meters = 50;
// number of km per degree = ~111km (111.32 in google maps, but range varies
between 110.567km at the equator and 111.699km at the poles)
// 1km in degree = 1 / 111.32km = 0.0089
// 1m in degree = 0.0089 / 1000 = 0.0000089
double coef = meters * 0.0000089;
double new_lat = my_lat + coef;
// pi / 180 = 0.018
double new_long = my_long + coef / Math.cos(my_lat * 0.018);
これも役立つことを願っています。
緯度の場合:
var earth = 6378.137, //radius of the earth in kilometer
pi = Math.PI,
m = (1 / ((2 * pi / 360) * earth)) / 1000; //1 meter in degree
var new_latitude = latitude + (your_meters * m);
経度の場合:
var earth = 6378.137, //radius of the earth in kilometer
pi = Math.PI,
cos = Math.cos,
m = (1 / ((2 * pi / 360) * earth)) / 1000; //1 meter in degree
var new_longitude = longitude + (your_meters * m) / cos(latitude * (pi / 180));
変数your_meters
には、正の値または負の値を含めることができます。
チェックアウトしました: 特定の緯度/経度のx km北にある緯度/経度を見つける方法 ?
これらの計算はせいぜい迷惑です、私はそれらの多くをやった。 Haversine式はあなたの友達になります。