0
私の目標は、ユーザーの緯度/経度の位置を取得し、次に緯度/経度に最も近い緯度/経度を検索することです。以下は私が持っているものですが、私はそれがうまくいくと信じていますが、これが私が望む最終結果に至る最善の方法であるかどうかはわかりません。最も近い値のペアをPython3で探す
私は場所のリストを絶対値に変換してから、ユーザーの位置の値を差し引いて距離を取得します。 X oy Yが以前に記録されたXまたはYより小さい場合、距離変数は新しい値で更新されます。
しかし、私が言ったように、これはうまくいくとは思えません。私の場所のリストは非常に頻繁に更新されますが、100の可能な位置を超えません。
ありがとうございます。
locations = [(-71.43994800000002,41.6919549),
(-71.61075089999997,41.577545),
(-71.06653670000003,42.41383099999999),
(-71.41283429999999,41.8239891),
(-71.05888010000001,42.3600825),
(-74.00594130000002,40.7127837)]
userlocation = (-71.28254930000003,41.7303793)
distance = [999,999] #initial value holder for distance
for location in locations:
x = abs(location[0]) # absolute value of latitude
y = abs(location[1]) #absolute value of longitude
xu = abs(userlocation[0]) #absolute value of user's latitude
yu = abs(userlocation[1]) #absolute value of user's longitude
dx = x-xu #Subtract user from location X
dy = y-yu #subtract user from location Y
if dx < distance[0]: #if distance X is less than the current distance value
distance[0] = dx #update with new values
distance[1] = dy
continue #go to the next one
if dy < distance[1]: #if distance Y is less than the current distance value
distance[0] = dx #update with new values
distance[1] = dy
continue #go to the next one
print(distance) #print the end smallest result
緯度と経度は、x/yのない取得しよう。このような2つの座標間のユークリッド距離やマンハッタン距離などを単純に計算することはできません。もっといっぱい、ラパラッドがあります。 –
どのくらい正確に必要ですか?ユークリッド距離は十分に正確ではないかもしれません - 例えば、極の緯度は約111.7kmですが、赤道では唯一〜110.6kmをカバーします。 – zwer
私は、グリッドとしてこれらの座標を表現することができない地球全体にスケールアップされたときは理解していますが、私は米国の小さな領域で作業していますので、制限された領域内では相対距離で動作すると思っていました。私の仮定は間違っていますか? – Reizvoller