Open Location Code/実装例
minimalな実装ではある
もっと精度を出すには追加実装が必要
code:python
import math
def format_pluscode(code_chars: liststr) -> str: """8文字ごとに+を挿入する
open location codeは8文字ごとに+を挿入することになっているので+を挿入する
Args:
code_chars (liststr): 1文字づつ文字(ここではpluscodeで許容されている2文字を指す)を挿入した状態のリスト Returns:
str: +を挿入した状態の、pluscode(open location code)として有効な文字列
"""
s = ''
for i in range(0, len(code_chars) // 8):
s += '+'
if (i+2)*8 <= len(code_chars):
else:
return s
def encode(lat: float, lng: float) -> str:
"""緯度経度からopen location codeを生成する
Args:
lat (float): latitude
lng (float): longitude
Returns:
str: pluscodeとして有効な文字列
"""
lng = math.trunc((lng + 180) * 8000)
lat = math.trunc((lat + 90) * 8000)
code = []
for _ in range(0,5):
lng = math.trunc(lng / 20)
lat = math.trunc(lat / 20)
return format_pluscode(code)
公式の実装見たらやけに複雑な実装してるなと思ったけどこれ割り算の誤差対策か?