1. ホーム
  2. python

[解決済み] Djangoで経度と緯度の値を格納するためにどのモデルフィールドを使用するか?

2023-05-22 03:20:09

質問

私は、経度と緯度を使用してユーザーの位置を保存したいと思います。現時点では、これはGoogle Mapsから来ていますが、私はGeoDangoといくつかのポイントを使用して、ポイント間の距離も計算する予定です。

しかし、私が最初に混乱したのは、Django のどのフィールドを使用して経度と緯度の値を保存すべきかです。私が得ている情報は矛盾しています。

公式ドキュメントでは FloatField https://docs.djangoproject.com/en/dev/ref/contrib/gis/tutorial/#geographic-models

lon = models.FloatField()
lat = models.FloatField()

stackoverflow のほぼすべての回答で DecimalField

long = models.DecimalField(max_digits=8, decimal_places=3)
lat = models.DecimalField(max_digits=8, decimal_places=3)

では、何を使えばいいのでしょうか?

どうすればいいのか?

フロートは一般に近似値であり、以下を参照してください。 を参照してください。 をご覧ください。モデルを次のようなものに変更すると、非常に良い結果を得ることができます。 DecimalField(max_digits=9, decimal_places=6) というようにモデルを修正することで、非常に良い結果を得ることができます。なぜなら、座標において小数は非常に重要ですが、6つ以上を使用することは基本的に無意味だからです。