Геопанды соединяют точки - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь создать базовую карту отправления / назначения линий.Мои данные имеют такую ​​структуру:

ID lon_origin  lat_origin  lon_destination  lat_destination
0  -116.284    43.617      -116.304         43.608
1  -116.291    43.610      -116.304         43.608

Есть идеи о том, как соединить источники и пункты назначения?Я попытался сжать их, но не могу заставить геопанду распознавать два геометрических столбца одновременно.

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Я отказался от функции drawgreatcircle, потому что она не была бы очень большой или круглой в масштабе, который я использовал.plt.plot сделал то, что я был после: Код и вывод

0 голосов
/ 08 марта 2019

, если вы просто хотите рассчитать расстояние, вот одно из решений:

from geopy.distance import lonlat, distance
data = """
  id      lon_origin  lat_origin  lon_destination  lat_destination
   0    -116.284    43.617      -116.304         43.608
   1    -116.291    43.610      -116.304         43.608
    """
df = pd.read_csv(pd.compat.StringIO(data), sep='\s+')
df['KM'] = df.apply(
    (lambda row:distance(lonlat(row['lon_origin'], row['lat_origin']),
                         lonlat(row['lon_destination'], row['lat_destination'])).km), axis=1)

print(df)

выход:

   id  lon_origin  lat_origin  lon_destination  lat_destination       KM
0   0    -116.284      43.617         -116.304           43.608  1.89910
1   1    -116.291      43.610         -116.304           43.608  1.07277

Если вы хотите использовать Мили, просто измените метрику:

df['MILES'] = df.apply(
    (lambda row:distance(lonlat(row['lon_origin'], row['lat_origin']),
                         lonlat(row['lon_destination'], row['lat_destination'])).miles), axis=1)

   id  lon_origin  lat_origin  lon_destination  lat_destination     MILES
0   0    -116.284      43.617         -116.304           43.608  1.180046
1   1    -116.291      43.610         -116.304           43.608  0.666588
...