Полилинии в Фолиуме блокируются на границе карты - PullRequest
0 голосов
/ 29 сентября 2018

Я разрабатывал карту маршрутов полетов для Лексингтона, используя фолиум.Пример моего кода приведен ниже:

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
...