gpsdにクエリを実行するPythonコードが少しあります
session=gps.gps(mode &c &c
report=session.next()
www全体に公開されているように。うまく機能しますが、高度はメートル単位、速度は km/h 単位で表示されます。航空(そして自由な世界)にいるので、結び目と足が欲しい. もちろん変換できますが、CPU 負荷が増えて精度が低下します。gps ライブラリが「適切な」測定単位を生成する方法はありませんか?
gpsdにクエリを実行するPythonコードが少しあります
session=gps.gps(mode &c &c
report=session.next()
www全体に公開されているように。うまく機能しますが、高度はメートル単位、速度は km/h 単位で表示されます。航空(そして自由な世界)にいるので、結び目と足が欲しい. もちろん変換できますが、CPU 負荷が増えて精度が低下します。gps ライブラリが「適切な」測定単位を生成する方法はありませんか?
Python で単位を変換しても、測定可能な程度までプログラムの速度が低下することはなく、精度も低下しません。1 ノットは正確に 1.852 km/h に等しく、1 フィートは正確に 0.3048 メートルに等しいので、次のようになります。
knots = speed / 1.852
altft = alt / 0.3048
そして、これらの数値は可能な限り正確です。
これらがどれだけのエラーを引き起こすかについては、そのような除算は精度に関して安全な操作であり、32 ビット IEEE 浮動小数点数が使用され、1 つの余分な乗算と 1 つの余分な除算を行うと仮定します。これらのそれぞれは、精度の 23 ビットのうち合計 1 バイナリ桁のエラーに対して、0.5 バイナリ桁の精度の最大エラーを持ちます。したがって、エラーの最大値は 1 / (2^22)、つまり 1/4194304 を超えません。500 ノットの範囲の速度の場合、時速 8.7 インチの差が生じます。高度が 30000 フィートまでの場合、0.86 インチの差が生じます (おっと、GPS 受信機が上下逆になっている可能性があります)。これらのエラーが重大であると思われる場合は、正常なライブラリと Python がすでに double を使用していることを知っておく必要があります。したがって、エラーは約 1073741824 倍小さくなります。