Я разрабатывал карту маршрутов полетов для Лексингтона, используя фолиум.Пример моего кода приведен ниже:
import pandas as pd
import numpy as np
import folium
import pyproj
lex_air = folium.Map(location=[38.034,-84.500],zoom_start=1)
df=pd.DataFrame({'lat_source':[38.036499,38.036499], 'long_source':
[-84.605904,-84.605904], 'lat_dest':[35.764702, 34.858398], 'long_dest':
[140.386002, 136.804993]})
for index, row in df.iterrows():
marker1 = folium.CircleMarker([row["lat_source"],row["long_source"]], color='green', fill_color='green', radius=2)
marker1.add_to(lex_air)
marker2 = folium.CircleMarker([row["lat_dest"], row["long_dest"]], color='green', fill_color='green', radius=2)
marker2.add_to(lex_air)
gc_points = getGreatCirclePoints(row["lat_source"], row["long_source"], row["lat_dest"], row["long_dest"])
line = folium.PolyLine(gc_points, weight=2)
line.add_to(lex_air)
lex_air.save('mapa.html')
Функция getGreatCirclePoints
должна была создать круговой маршрут для карты.Но сгенерированные из него полилинии были заблокированы на границе созданной карты , а затем они пошли по прямому пути на карте.Какие изменения я должен внести в эту функцию, чтобы генерировать непрерывный круговой путь, не блокируясь на границе карты?Функция getGreatCirclePoints
приведена ниже:
def getGreatCirclePoints(startlat, startlon, endlat, endlon):
g = pyproj.Geod(ellps='WGS84')
(az12, az21, dist) = g.inv(startlon, startlat, endlon, endlat)
lonlats = g.npts(startlon, startlat, endlon, endlat,
1 + int(dist / 20000))
latlons = []
for lon_lat in lonlats:
(lon, lat) = lon_lat
latlons.append((lat, lon))
latlons.insert(0, (startlat, startlon))
latlons.append((endlat, endlon))
return latlons