Ejemplo n.º 1
0
def get_mini_map():
    name = request.args.get('name')
    lat = request.args.get('lat')
    lng = request.args.get('lng')
    size = request.args.get('size')
    size = f"{round(float(size)*0.00024710538146717,1)} acres" if size else 'unknown size'  # convert to acres
    m = folium.Map(location=(lat, lng), zoom_start=14, min_zoom=11, width='100%', height='100%', disable_3D=False)
    popup=folium.map.Popup(html=f"""
            <style>
              root {{
                text-align: center;
                font-family: 'Noto Sans', sans-serif;
                font-size: 20%;
              }}
              h6 {{
                margin-bottom: -1em
              }}
            </style>
            <h6>{name}</h6>
            <p>
              {size}<br>
              {lat}, {lng}
            </p>
        """)
    m.add_child(folium.Marker(
        [lat, lng],
        popup=popup,
        icon=folium.Icon(prefix='fa', icon='circle', color='lightgray')
    ))
    #, width='70vw', height='60vh', max_width='250', max_height='200'
    LocateControl().add_to(m)
    return m.get_root().render()
Ejemplo n.º 2
0
def on_change(change):
    if change['type'] == 'change' and change['name'] == 'value':
        clear_output(wait=True)
        display(w)
        valor = w.value
        print(valor)
        lat1 = valor[0]
        lon1 = valor[1]
        ubs = valor[2]
        mapa = folium.Map (location = [-4.275,-41.78],
               tiles = 'OpenStreetMap',
               zoom_start =  13.5,
               attr = 'Colaboradores do OpenStreetMap e Alunos de CartoUFPR/ Dados IPPUC' 
               )
        request_params = {'coordinates': [[lon1, lat1], [-41.77286170000001,-4.2696983]],
                'format_out': 'geojson',
                'profile': 'driving-car',
                'preference': 'shortest',
                'instructions': 'false',}
        route_normal = clnt.directions(**request_params)
        folium.features.GeoJson(data=route_normal,
                        name='Rota entre os pontos',
                        style_function=lambda x: style,
                        overlay=True).add_to(mapa)
        coordenadas = [[lat1,lon1], [-4.2696983,-41.77286170000001]]
        folium.Marker([valor[0],valor[1]],icon=valor[2], tooltip=valor[3], popup=valor[4]).add_to(mapa)
        LocateControl(auto_start=True).add_to(mapa)
        mapa.fit_bounds(coordenadas)
        display(mapa)
Ejemplo n.º 3
0
def basemap_layer():
    m = folium.Map(
        location=[39, 136],
        tiles=
        'https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}{r}.png',
        attr=
        '&copy; <a href="https://stadiamaps.com/">Stadia Maps</a>, &copy; <a href="https://openmaptiles.org/">OpenMapTiles</a> &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors',
        prefer_canvas=True,
        control_scale=True,
        zoom_start=5,
        min_zoom=4,
        max_zoom=20,
        width=800,
        height=600)
    LocateControl(auto_start=False).add_to(m)
    return m
Ejemplo n.º 4
0
import folium
from folium.plugins import MarkerCluster
from folium.plugins import LocateControl
import json

m = folium.Map(location=[41.69342, 44.80182], zoom_start=11)
mk = MarkerCluster().add_to(m)
lc = LocateControl().add_to(m)

node = json.load(open('pharmacy_geo.geojson', encoding='utf8'))
gj = folium.GeoJson(node)

try:
    for feature in gj.data['features']:
        if feature['geometry']['type'] == 'Point':
            folium.Marker(
                location=list(reversed(feature['geometry']['coordinates'])),
                popup=folium.Popup(feature['properties']['name'])).add_to(mk)

except:
    pass

m.save('index.html')
Ejemplo n.º 5
0
folium.Marker([-4.271438,-41.791732], popup = ppp02, tooltip=ttp02, icon = ubsf02).add_to(cluster)

#Tempo Integral

a20 = folium.features.CustomIcon('https://lh3.googleusercontent.com/BPN1b1myVtu9QMVeEGrx6ctrRIxD4vZ_rjlal-oIb7fzowjctFKgEKnzjVWekWswHMqrqPCmFwyOC1bgGiEjoWPpopeuu8ND6H359K5y8Fb_5Z6RXEXfVcuwY_uLdt6rZaxfFd0QjnLs-sKIGao1xZ8RCOcv2LIcduwXB4RCvUU2sgLgJh7k2K2AXzaM4xL51LRd8VmGjN9T9ke5BWmzlEFBTvQYo9oPtMsRNG4x4oTUr8MP-yao7rIZdqbbc5a3qUkp3PdXa6IYwoBCXO1zDnHqqTWjm-61ZqbfaIR-oYVP-a5rgBoqcmx-RySRpGFqt1y02TeNQxcBFzhwc106zbooGHJNVMMeYUH0YRzj626fBDd-im6hodn6cyOkDJffbp5CcBerhPkHJiR4b6KmEdSDzBqf7n4_Zxh3PnGNd6iPlwZZVpJTGSqJIfvBknYN0oiXJ1VMY54PpDOyXlAdL5jgHF8LTXzw5u6RIzjEJ8altqmIOPbcJ7sWOgOOSgeITEK3TGdakD0MZ3jftOZshKas9sW7FtMSd1XlYhZ3ixUpioeldCwLG2hV_dMZBU92s9SR1DPGi7Aa3rRa75FvmH8450qDYdkJZ4uDFU18Pk9LlAMMhlyW6KLaFnEIf0flqlUloXoiReRTz2K-Mzym5UNg2AsqLmoMqnU5ovszSjGfmmHnGf5-POnvAUbZZQ=w98-h82-no?authuser=0'
,icon_size=(75, 65))
f20 = folium.features.CustomIcon('https://lh3.googleusercontent.com/bZu6KNSlrfo8Nwz1IiQ4tY8hoXw7WuVP_r9TLui8JWKgz4Mz8PGfD79tUNKjdRTmVU-HHREzrpPfg_ef88loWj6EECjeGXzb3pPP6IlaD6abnmZjdUQBlG_A8a1Ffqhr1QAZjAic0qvLdA-0TG_KS4wUsXO9_q3pg_5cwGDV4P07fH_cXxtGj4kfR0C79O52ZNQ0YujSFEp24ZrVqRW0bxiZvlk8loqIcrPaY4lbCxK13WFN5KvMwarQIc2rJ4g90VaVcRlupig3xA4PxtXL9MsLpLla3yKkAg9WVdQLyXnTTbuM7rTV9QrAGmXndpKPa0mPuKapaLVeT8kzce0N5KzQ_-xQSqXuqjuqdcuqTnMNyAwAU45NACChJWBOuXCnu3bSpcneznMEqhF6aFmpZZfb8mADsBfn6XbRXew5oQRAtPdAO5C9SUIQyq_lu3pO0ioqRqRKww3tDyfEqm5JBUsw0HrAB1vjVFKZrGNY7fWnrRQjJVBRWJSPELOirqvKsnbJhJpw0bkJsdGT0ZvJPp7GF3P9QwkCfDlZmYyKA8I1yArHmzGYNLgNxCuf_JC2Y4nglvQ_63COHVpAnZdDtV0WSKtHGElRKKNIzAssF7svlTU7LD_YYMnS1NWHvkseyuRjPE5pVeR3Eeh567tpylMtHj-7vDYgG8I4fSY_fOPI-TyXvvvoK8egwyJyUg=w104-h79-no?authuser=0'
,icon_size=(70, 60))

if hora in range(7, 17) and dia in range(0,5):
    ubsf20 = a20
else:
    ubsf20 = f20

folium.Marker([-4.272683,-41.762476], popup=ppp20, tooltip = ttp20, icon = ubsf20).add_to(cluster)
LocateControl(auto_start=True).add_to(m)


#Legenda

from branca.element import Template, MacroElement
template = """
{% macro html(this, kwargs) %}

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Draggable - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
Ejemplo n.º 6
0
def build_folium_map(language):

    # df_vol, df_req = get_sheets_df(gc, '16EcK3wX-bHfLpL3cj36j49PRYKl_pOp60IniREAbEB4') #TODO: hide sheetname
    df_vol, df_req = get_sheets_df(
        gc, '1CmhMm_RnnIfP71bliknEYy8HWDph2kUlXoIhAbYeJQE'
    )  #Uncomment this sheet for testing (links to public sheet) and comment out line above

    def get_popup_html(row, category):
        '''Builds a folium HTML popup to display in folium marker objects
        row (pandas Series): row from the google sheets dataframe
        '''

        va_email = '*****@*****.**'

        if category == 'Volunteers':
            email_subject = f"Delivery%20Request%20for%20{row['Given Name']}"
            html = "<head><style>body{font-size:14px;font-family:sans-serif}</style></head><body>"+\
                f"<b>{translator('Volunteers', language)}</b> <br>" + \
                f"<b>{translator('Name', language)}:</b> {row['Given Name']} <br>" +  \
                f"<b>{translator('Country', language)}:</b> {row['Country']} <br>" +\
                f"<b>{translator('City', language)}:</b> {row['City/Town']} <br>" +\
                f"<b>{translator('Services', language)}:</b> {row['Type of Services']} <br>" +\
                f"<b>{translator('Transportation', language)}:</b> {row['Mode of Transportation']} <br>" +\
                f"<b>{translator('Radius', language)}:</b> {int(row['Radius'])} km <br>" +\
                f"<b>{translator('Day of Week', language)}:</b> {row['Preferred Day of Week']} <br>" +\
                f"<b>{translator('Time of Day', language)}:</b> {row['Preferred Time of Day']} <br>" +\
                f"<b>{translator('Languages', language)}:</b> {row['Languages Spoken']} <br>" +\
                f"<b>{translator('Payment', language)}:</b> {row['Reimbursement Method']} <br>" +\
                f"<b>{translator('About Me', language)}:</b> {row['About Me']} <br>" +\
                f"<a href='mailto:{row['Email Address']}?cc={va_email}&Subject={email_subject}' target='_blank'>Contact {row['Given Name']}</a>  <br></body>"
        elif category == 'Requests':
            html = "<head><style>body{font-size:14px;font-family:sans-serif}</style></head><body>"+\
                f"<b>{translator('Requests', language)}</b> <br>" + \
                f"<b>{translator('Country', language)}:</b> {row['Country']} <br>" +\
                f"<b>{translator('City', language)}:</b> {row['City/Town']} <br>" +\
                f"<b>{translator('Services', language)}:</b> {row['Type of Services']} <br>" +\
                f"<b>{translator('Type', language)}:</b> {row['Type of Request']} <br>" +\
                f"<b>{translator('Day of Week', language)}:</b> {row['Preferred Day of Week']} <br>" +\
                f"<b>{translator('Time of Day', language)}:</b> {row['Preferred Time of Day']} <br>" +\
                f"<b>{translator('Languages', language)}:</b> {row['Languages Spoken']} <br>" +\
                f"<b>{translator('Payment', language)}:</b> {row['Reimbursement Method']} <br>" +\
                f"<a href='https://docs.google.com/forms/d/e/1FAIpQLSfw3LFsXtCCmr-ewkUuIltKIP5PKNY8Xn8h3MjVrFrvfvktPw/viewform?embedded=true' target='_blank'>Sign Up to Help</a>  <br></body>"

        iframe = folium.IFrame(html=folium.Html(html, script=True),
                               width=260,
                               height=len(html) / 2.25)
        popup = folium.Popup(iframe)

        return popup

    def build_marker_cluster(m, df, category):

        dff = df.dropna(axis=0, how='any', subset=['Latitude',
                                                   'Longtitude']).copy()

        if category == 'Volunteers':
            dff = dff.loc[(dff.Health == 'Yes') & (dff.Availability == 'Yes')]
            marker_color = '#00d700'
        elif category == 'Requests':
            marker_color = '#d77a00'

        #add marker cluster
        mc = MarkerCluster(name=translator(category, language),
                           control=True,
                           overlay=True,
                           showCoverageOnHover=False)

        #add circle markers
        for idx, row in dff.iterrows():

            dense_cities = [
                'Montreal', 'Toronto', 'Ottawa', 'Montréal', 'Cote St Luc',
                'Gatineau'
            ]  #HACK: make people outside major clusters reflect their true radius
            if category == 'Volunteers' and row[
                    'City/Town'] not in dense_cities:
                radius = row['Radius'] * 1000
            else:
                radius = 250

            mc.add_child(
                folium.Circle(radius=radius,
                              location=[row['Latitude'], row['Longtitude']],
                              popup=get_popup_html(row, category),
                              color=marker_color,
                              fill=True,
                              fill_color=marker_color)).add_to(m)

    #build map
    m = folium.Map(
        location=[42, -97.5],  #Canada
        tiles='Stamen Terrain',
        min_zoom=3,
        zoom_start=4,
        control_scale=True)

    build_marker_cluster(m, df_vol, 'Volunteers')
    build_marker_cluster(m, df_req, 'Requests')

    #add layer control
    folium.LayerControl(collapsed=True).add_to(m)

    #add location control
    LocateControl(flyTo=True,
                  keepCurrentZoomLevel=False,
                  showPopup=True,
                  returnToPrevBounds=True,
                  locateOptions=dict(maxZoom=13)).add_to(m)

    return m._repr_html_()
Ejemplo n.º 7
0
                0, drop=True).fillna(0)
        df4['smoothedmap'] = df4.groupby(
            ['roadcode'])[map_param].rolling(smoothing).mean().reset_index(
                0, drop=True).fillna(0)

    spacing = min(int((df3.shape[0] + df4.shape[0])**(1 / 3) / 200) + 1, 1)

    df3.iloc[1::spacing].apply(lambda x: plotDot(x, 'blue'), axis=1)
    df4.iloc[1::spacing].apply(lambda x: plotDot(x, 'red'), axis=1)

#if df3.shape[0] > df4.shape[0]:
#    df3.iloc[1::10].apply(lambda x: plotChain(x), axis = 1)
#else:
#    df4.iloc[1::10].apply(lambda x: plotChain(x), axis = 1)

#gdf_gullies.apply(lambda x: plotGul(x), axis = 1)
gdf_acc.apply(lambda x: plotAcc(x), axis=1)

#mapa.add_child(feature_group2)
mapa.add_child(feature_group4)
mapa.add_child(feature_group5)
mapa.add_child(feature_group6)
mapa.add_child(feature_group7)
mapa.add_child(feature_group8)
mapa.add_child(folium.map.LayerControl())

from folium.plugins import LocateControl
LocateControl().add_to(mapa)

folium_static(mapa)
Ejemplo n.º 8
0
    custom_marker = folium.Marker(location=coordinates,
                                  icon=custom_icon,
                                  tooltip=name,
                                  popup=popup)
    # If pub is within Oxford boundary, add to Oxford cluster
    if oxford_boundary.contains(Point((coordinates[1], coordinates[0]))):
        custom_marker.add_to(oxford_cluster)
    else:
        # Else add marker to map
        custom_marker.add_to(OxfordshireMap)

# Add oxford cluster to map
oxford_cluster.add_to(OxfordshireMap)

# Add geolocation feature to map.
LocateControl(auto_start=False).add_to(OxfordshireMap)

# Define webpage title html and add to script.
tab_title = """<title>Pubs of Oxfordshire Maps</title>"""
OxfordshireMap.get_root().html.add_child(folium.Element(tab_title))

# Save map to HTML
OxfordshireMap.save('Map.html')

# Define tab icon html (using https://realfavicongenerator.net/ which generates favicons). Images must be in the ROOT folder.
# Apple iOS truncates App names with > 12 chars. So we use Figure Space char (&#x2007;) to still get a space
tab_icon = """<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<link rel="manifest" href="site.webmanifest">
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#484848">