位置データは正常系だけでなくエッジケースでもテストする
よく地図化された市の中心部の住所からは、システムが農村部のルート、係争中の国境、極地付近のクエリをどう扱うかについてほとんど何もわかりません。難しいケースを意図的にテストしてください。
座標が保存や表示の前に小数点以下数桁に切り詰められているのはよく見かけることで、多くの場合、表やURLの中で数値をすっきり見せるためだけに行われています。見落としやすいのは、緯度や経度の値の小数点以下の各桁が地上の具体的で計算可能な距離に対応しているということです。桁を丸めて削ることは、見た目の煩雑さだけでなく、実際の物理的な精度を削ることなのです。
赤道付近では、小数点以下4桁までの座標で約10メートル離れた地点、つまり建物1棟の幅ほどの距離を区別できます。代わりに小数点以下2桁にすると、区別できるのは1キロメートル近く離れた地点になり、これは隣り合う地区の違いに簡単に相当します。小数点以下0桁に丸めると、区別できるのは度単位になり、何キロメートルにも及びます。経度については、経線が極に向かって収束するため、赤道から極へ離れるにつれて小数点以下1桁あたりの正確な距離はわずかに短くなりますが、小数点以下の桁数と実世界の距離との一般的な関係はどこでも成り立ちます。
これはよくあるいくつかの状況で現実の問題になります。小数点以下の精度が不十分なデータベースのカラムに座標を保存すると、保存の時点でデータが気づかないうちに切り捨てられます。しかも、結果の数値は精度が下がっただけで有効な座標のままなので、その失敗はエラーのようには見えません。表示のために丸めを行うシステムに座標を通し、その丸めた値を距離チェックや近接検索のような後続の計算に使うと、元の丸めが下流のすべての結果に積み重なっていきます。システム間で座標を手作業でコピーし、完全な値が不必要に長く見えたからと人が桁を削る場合も、同じ結果になります。
安全な習慣は、実際の用途に見合った十分な小数点以下の精度で座標を保存し、受け渡すことです。建物や通りのレベルで意味のある精度を保つ必要があるものなら、一般に少なくとも小数点以下5桁から6桁が目安です。そして丸めは、人に数値を見せる直前の最後の段階で表示のためだけに行い、計算の前には決して行わないことです。本当に都市レベルの区別しか必要ないなら、早い段階で丸めても問題ありませんが、それはデータベースのカラム幅や書式の習慣による偶然ではなく、アプリケーションに必要なものに基づいた意図的な選択であるべきです。
ここでのジオコーディングと逆ジオコーディングが返す座標は、建物レベルの用途に対応できる十分な小数点以下の精度を持っています。その精度を下流でどう扱うか、特に保存と丸めについては、パイプラインのすべての段階で変わらず保たれると決めつけず、意図的に確認する価値があります。