web-dev-qa-db-ja.com

キロメートルをラジアンに変換します

キロメートルをラジアンに変換する必要があります。これは正しい式ですか? MongoDBのニアスフィアにはラジアンが必要です。

5キロメートルをラジアンに変換する必要がある場合は、次のようにします。

5/6371

そして、私はこの結果を得ます(それは正しいように見えますか):

0.000784806153

[〜#〜] update [〜#〜]

これは数学の問題ではありません。MongoDBで地理空間クエリを実行できるようにするには、キロメートルからラジアンまで正しい計算を行っているかどうかを本当に知る必要があります。

19
Jonathan Clark

キロメートルからラジアンまたは距離とラジアンへの変換

私はここに到着し、混乱しました。その後、カーンアカデミーのビデオをいくつか見て、その時点でより理にかなっており、他の情報源からの方程式を実際に見て、さらに自分自身を教育することができました。

これが私の思考の流れです。

  1. ラジアンに関する図が表示されます。最初に、ジオロケーションポイントからの半径が間違っていると思います。

  2. 代わりに、地球が完全に半分にカットされ、半分の1つに焦点を合わせると想像してください。

enter image description here

  1. 今、その半分をあなたの方に向けて、数学の図を見てください。

enter image description here

  1. 数学の図式は、地球の中心から弧長に基づいて地球の端を測定していることを示していると考えてください。結局、地球は湾曲しているため、測定値は地球の表面で湾曲します。
  2. ラジアンは円の度のようなものであり、弧長は文字通り数学の図式のAとBの間の距離です。
  3. あなたにとって、それは鳥瞰図上の直線ですが、実際には、地球の端に沿った3D空間の単なる曲線です。
  4. ユーレカ!頭の中で電球が続いた。

distance = earth radius * radians

したがって、いくつかの非常に簡単な代数で...

radians = distance / earth radius

kmradians = distance in km / 6371

miradians = distance in mi / 3959

時々それを考え抜くのは楽しいです。

これを再確認してください... https://www.translatorscafe.com/unit-converter/en/length/7-89/kilometer-Earth%E2%80%99s%20equatorial%20radius/

ここで、特にnode.jsでmongooseを使用するMongov3.2に関して

私の最善の努力にもかかわらず、mongoは2Dインデックスの$ geoNearクエリで文書化されているように正しく動作しませんでした。 機能しなかった

  let aggregate = [
    {
      $geoNear: {
        near: { type: 'Point', coordinates: lonLatArray },
        spherical: false,
        distanceField: 'dist.calculated',
        includeLocs: 'dist.location',
        maxDistance: distanceInMeters / (6371 * 1000),
        query: {
          mode: 'nearme',
          fcmToken: { $exists: true }
        }
      }
    },
    { $skip: skip },
    { $limit: LIMIT }
  ];

ただし、2dsphereインデックスに変更すると、完全に機能しました。

  let aggregate = [
    {
      $geoNear: {
        near: { type: 'Point', coordinates: lonLatArray },
        spherical: true,
        distanceField: 'dist.calculated',
        includeLocs: 'dist.location',
        maxDistance: distanceInMeters,
        query: {
          mode: 'nearme',
          fcmToken: { $exists: true }
        }
      }
    },
    { $skip: skip },
    { $limit: LIMIT }
  ];

しかし、教育は決して時間の無駄のようには思えません。

5
Jason Sebring

あなたは正しいです。球面幾何学では、距離を球の半径で割ります。ユニットを保持する必要があることに注意してください。したがって、球の半径をキロメートルで計算する場合は、距離をキロメートルで使用する必要があります。マイルを使用する場合は、地球半径をマイルで使用する必要があります(約3,963.2)。

3
Sagi Forbes

変換するには

ラジアンまでの距離:距離を、距離の測定値と同じ単位で球(地球など)の半径で割ります。
ラジアンから距離:距離を変換する単位系で、ラジアンメジャーに球(地球など)の半径を掛けます。

:ラジアンで5マイルを変換する場合は、距離(5マイル)を球の半径(マイル単位)で割る必要があります。これは3959です。次に5/3959は0.0012629451です。

ありがとう

1
user10045612

地球の赤道半径は約,963.2マイル sまたは6,378.1キロメートルです。

注:1 KM = 0.621371マイル

計算のためのいくつかの簡単な式は次のとおりです。

100 KMからマイル:(100 * 0.621371)

100 KMから放射: 100/6378.1

100マイルから放射: 100/963.2

したがって、Kilometersにデータがある場合は、(100/6378.1)を使用する必要があり、Milesデータの場合は(100/3963.2)

1
Irshad Khan