Сравнение расстояний по долготе и широте между двумя файлами - PullRequest
0 голосов
/ 03 июня 2018

У меня есть два файла, которые я хочу объединить.Два файла представлены следующим образом:

Hour  Longitude Latitude 
12:00 116.5      39.5

Другой файл выглядит так:

Some_datas Longitude Latitude Some_other_datas ...
x          116.529     39.521     x                ...
x          116.632     39.471     x                ...
x          116.233     39.556     x                ...
x          116.445     39.990     x                ...
etc..

И я хочу получить из второго файла все строки и поместить их вдругой файл, но только если долгота и широта находятся близко друг к другу (скажем, 15 километров).

Используя найденную мной функцию:

import geopy.distance

coords_1 = (116.5, 39.5)
coords_2 = (x,y)  # Where x and y are longitude and latitude from the second file

print geopy.distance.vincenty(coords_1, coords_2).km

Как мне сделать так, чтобы она читала все точки второго файла, проверил, если он меньше 15 километров, если да, поставьих в другом файле CSV.

1 Ответ

0 голосов
/ 03 июня 2018

Я думаю, вам нужно zip оба столбца, получить расстояние и сравнить создание логического списка:

from geopy.distance import vincenty

#coordinates are swapped
coords_1 = (39.5, 116.4)
mask = [vincenty(coords_1, (i, j)).km < 15 for i, j in zip(df['Latitude'], df['Longitude'])]
print (mask)
[True, False, False, False]

Затем отфильтровать по boolean indexing

df1 = df[mask]
print (df1)
  Some_datas  Longitude  Latitude Some_other_datas
0          x    116.529    39.521                x

... и записать в файл:

df1.to_csv(file, index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...