from choropleth import choropleth_chart
from choropleth import plotly_fig2array
import plotly.graph_objects as go
import numpy as np
import geopandas as gpd
import pandas as pd
import cv2

def extract(lst, i):
    return [item[i] for item in lst]

def is_what(source, compare):
    if compare in source:
        return True
    else:
        return False

shp = gpd.read_file('map/영천시 행정동.shp', encoding='utf-8')
shp = shp.sort_values('EMD_KOR_NM')
shp = shp.reset_index()

df = np.linspace(0,15,num=16)

address_book = pd.read_csv('data/영천시병원좌표.csv')

color = ["#45E646"] * len(address_book['lat'])
shape = ["circle"] * len(address_book['lat'])
size = [12] * len(address_book['lat'])

for i in range(len(color)):
    name = address_book['병원명'][i]
    if is_what(name, '보건소'):
        color[i]="#FC5BC1"
    elif is_what(name, '보건지소'):
        color[i]="#9781DB"
    elif is_what(name, '보건진료소'):
        color[i]="#FC5B48"
    elif is_what(name, '한의원'):
        color[i]="#A85214"
    elif is_what(name, '치과'):
        color[i]="#94FFE8"

for i in range(len(color)):
    emergency= address_book["업무구분"][i]
    if is_what(emergency, '지역응급의료기관'):
        shape[i] = 'star-diamond'
        size[i] = 20

colorscale = [\
    [0,'#FFEDCF'],
    [0.33, '#F0CF2E'],
    [0.57, '#F0FAA2'],
    [1, '#F0CF2E']
]

fig = choropleth_chart(shp, df, '영천시 병원', 'figure/병원', geo_annot_scale=3000, colorscheme=colorscale, adaptive_legend_font_size=True, scale=5, save=False)
fig.add_trace(
    go.Scattergeo(
        lat=address_book['lat'], lon=address_book['lon'],
        marker=dict(
            size= size,
            color= color,
            opacity= 0.6,
            symbol=shape
        ),
        name="",
        mode='markers',
        text=address_book['병원명'],
    )
)
fig.update(
    layout_showlegend=True,
    layout_coloraxis_showscale=False
)
scale = 4

fig.show()