Настройка углов входа Folium (Python)

В файле poi_base.csv находятся названия точек, долгота, широта, радиус и секторы входа (в градусах), которые нужно отобразить на карте графически.

import folium
from folium import plugins
import pandas as pd
poi = pd.read_csv('poi_base.csv')
poi.head(6)
my_map = folium.Map(
    location = [53.481521531976696, -104.79119341622707],
    zoom_start=10
)
for _, city in poi.iterrows():
    folium.Marker(
        location = [city['latitude'], city['longitude']]
    ).add_to(my_map)
for _, city in poi.iterrows():
    plugins.SemiCircle(
        location = [city['latitude'], city['longitude']],
        radius = [city['radius']],
        start_angle = [city['from']],
        stop_angle = [city['until']],
        fill_color='blue'
    ).add_to(my_map)
my_map

Пример неправильной прорисовки:

folium.Marker(
    location = [53.481521531976696, -104.79119341622707],
    popup = 'test'
).add_to(my_map)
plugins.SemiCircle(
    location = (53.481521531976696, -104.79119341622707),
    radius = 60,
    start_angle = 350,
    stop_angle = 90,
    fill_color = 'blue'
).add_to(my_map)

my_map

Пример

Правильно введите сюда описание изображения


Ответы (1 шт):

Автор решения: strawdog

Вы неверно задаете углы. для выпуклого сектора у вас начальный угол должен быть меньше конечного, при этом ноль градусов отсчитывается от вертикали по часовой стрелке:

plugins.SemiCircle(
    location = (53.481521531976696, -104.79119341622707),
    radius = 60,
    start_angle = -10,
    stop_angle = 90,
    fill_color = 'red'
).add_to(my_map)

введите сюда описание изображения

В общем случае, решение можно свести к такому коду:

if start_angle > stop_angle:
    start_angle-=360

print(start_angle, stop_angle)    
plugins.SemiCircle(
    location = (53.481521531976696, -104.79119341622707),
    radius = 60,
    start_angle = start_angle,
    stop_angle = stop_angle,
    fill_color = 'red'
).add_to(my_map)
→ Ссылка