def add_accident(self, data, **kwargs): if not (re.search(r'NUM', data.lugar)): try: folium.Marker( location=(data.lat, data.lon), tooltip=folium.Tooltip( f'Tipo de colisión: {data.tipo_accidente}<br>' f'Número de parte: {data.numero_parte}<br>' f'Fecha: {data.fecha}<br>' f'Hora: {data.hora}<br>' f'Lugar: {data.lugar}<br>' f'Distrito: {data.distrito}<br>' f'Latitud: {round(data.lat, 5)}<br>' f'Longitud: {round(data.lon, 5)}<br><br>' f'Conductor 1 ---<br>' f'Tipo vehiculo: {data.conductor_1_tipo_vehiculo}<br>' f'Sexo: {data.conductor_1_sexo}<br>' f'Edad: {data.conductor_1_edad}<br><br>' f'Conductor 2 ---<br>' f'Tipo vehiculo: {data.conductor_2_tipo_vehiculo}<br>' f'Sexo: {data.conductor_2_sexo}<br>' f'Edad: {data.conductor_2_edad}<br>'), icon=folium.CustomIcon( icon_image= './mc_map_generator/resources/images/icons/peligro.png', icon_size=(12, 12))).add_to(self._map) except Exception as e: print(e)
def CreateMarker(png_file_name, size): custom_icon = folium.CustomIcon(png_file_name, icon_size=(size, size)) corrected_popup = folium.Popup( nam + ": " + str(mun) + ", " + str(cod), parse_html=True ) #required to have folium read strings that have special characters like , and space by parsing html return folium.Marker(location=[lat, lon], popup=corrected_popup, icon=custom_icon)
def add_icon(my_map, file_path, location_on_map, size=(20, 30), location_padding=(0, 0)): folium.map.Marker([location_on_map[0], location_on_map[1]], icon=folium.CustomIcon( icon_image=file_path, icon_size=size, icon_anchor=location_padding)).add_to(my_map)
def add_air_station_marker_with_graph(self, data, *args, **kwargs): """Esta función se encarga de agregar graficos al los marcadores existentes""" locations = data.iloc[:, [1, 2]] station_names = data.iloc[:, [3]] station_ids = list(pd.unique(data.id)) station_groups = data.groupby('id') for station_id in station_ids: filtered_data = station_groups.get_group(station_id) print('***** data get group') print(type(filtered_data)) print(filtered_data.head()) plot_data = filtered_data.groupby( ['magnitude', 'year', 'month', 'day']).agg({ 'value': 'mean' }).reset_index() print('***** data plot data') print(type(plot_data)) print(plot_data.head()) x = [int(hour) for hour in list(plot_data['day'])] y = [int(value) for value in list(plot_data['value'])] print(x) print(y) xy_values = { 'x': x, 'y': y, } scatter_chart = vincent.Scatter(xy_values, iter_idx='x', width=600, height=300) scatter_chart.axis_titles(x='Día', y='Promedio Dióxido de Nitrogeno día') popup_scatter_plot = folium.Popup(max_width=900).add_child( folium.Vega(scatter_chart, height=350, width=700)) air_quality_station = [ filtered_data.iloc[0, 1], filtered_data.iloc[0, 2] ] print(air_quality_station) station_name = [filtered_data.iloc[0, 3]] print(station_name) folium.Marker( location=air_quality_station, tooltip=folium.Tooltip( f'Estación: {station_name[0]}<br>Latitud: {round(air_quality_station[0], 4)}<br>Longitud: {round(air_quality_station[1], 4)}' ), popup=popup_scatter_plot, icon=folium.CustomIcon(icon_image='icons/forecast.png', icon_size=(40, 40))).add_to(self._map)
def add_station_marker(self, locations, station_names=None, legend=None, **kwargs): """Add air stations to the map. Add as many as the the lenght of the locatios parameter""" if station_names is None: station_names = [[i] for i in range(len(locations))] for location, stat_name in zip(locations, station_names): try: folium.Marker( location=location, tooltip=folium.Tooltip( f'Estación: {stat_name[0]}<br>Latitud: {round(location[0], 4)}<br>Longitud: {round(location[1], 4)}' ), popup=legend, icon=folium.CustomIcon( icon_image= './mc_map_generator/resources/images/icons/forecast.png', icon_size=(40, 40))).add_to(self._map) except TypeError as e: print( "El parametro location debe ser un de la forma [lat, lon] ó (lat,lon)" ) print('Probando con la siguiente estación...') continue except FileNotFoundError as e: print( 'El archivo para representar las estaciones no se encuentra en la carpeta "icons"' ) break except Exception as e: print(e)
'https://www.cwb.gov.tw/V7/images/wind_icon/S.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/SSW.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/SW.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/WSW.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/W.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/WNW.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/NW.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/NNW.gif'] station1=folium.FeatureGroup(name="環保署",show = False) for i in(range(16)): station1.add_child( folium.Marker( location=[final_df['Latitude'][i],final_df['Longitude'][i]], popup=("<b>NAME:</b> {NAME}<br>""<b>PM2.5:</b> {PM25}<br>""<b>TIME:</b> {TIME}<br>") .format(NAME=str(final_df['SiteName'][i]),PM25=str(final_df['PM2.5'][i]),TIME=str(times[21:36])), icon=folium.CustomIcon(epa_icon_url,icon_size=(23,23)) ) ) station2=folium.FeatureGroup(name="空氣盒子",show = False) for j in range(16,70): station2.add_child( folium.Marker( location=[final_df['Latitude'][j],final_df['Longitude'][j]], popup=("<b>NAME:</b> {NAME}<br>""<b>PM2.5:</b> {PM25}<br>""<b>TIME:</b> {TIME}<br>") .format(NAME=str(final_df['SiteName'][j]),PM25=str(final_df['PM2.5'][j]),TIME=str(times[21:36])), icon=folium.CustomIcon(airbox_icon_url,icon_size=(23,23)) ) ) station3=folium.FeatureGroup(name="風力",show = False)
def make_avalanche_map(gdf, out='ava_map.html'): """ https://stackoverflow.com/questions/52428916/python-folium-markercluster-color-customization https://github.com/python-visualization/folium/blob/master/examples/MarkerCluster.ipynb https://www.kaggle.com/rachan/how-to-folium-for-maps-heatmaps-time-analysis :param gdf: :param out: :return: """ _fr_style_1 = { 'fillColor': '#9BB9C2', 'color': '#033648', 'weight': 1, 'fillOpacity': 0.2 } _fr_style_2 = { 'fillColor': '#9BB9C2', 'color': '#033648', 'weight': 1, 'fillOpacity': 0.0 } # url = 'http://leafletjs.com/examples/custom-icons/{}'.format icon_image = 'avalanche.png' # shadow_image = url('leaf-shadow.png') ava_icon = folium.CustomIcon(icon_image=icon_image, icon_size=(64, 64), icon_anchor=(22, 94), popup_anchor=(-3, -76)) # gdf.to_crs({'init': 'EPSG:3857'}, inplace=True) gdf.to_crs({'init': 'EPSG:4326'}, inplace=True) # b = gdf.bounds # mx = min(b['minx']) + (max(b['maxx']) - min(b['minx'])) / 2 # my = min(b['miny']) + (max(b['maxy']) - min(b['miny'])) / 2 ava_map = folium.Map( prefer_canvas=True, # tiles='Stamen Terrain', location=[65, 16], zoom_start=5, control_scale=True) forecast_reg = folium.GeoJson( r'C:\Users\kmu\PycharmProjects\APS\aps\data\forecasting_regions\Skred_Varsling.geojson', name='Forecasting regions', style_function=lambda feature: _fr_style_1 if feature['properties']['regionType'] == 'A' else _fr_style_2).add_to( ava_map) _fields = { 'skredTidspunkt': 'Tidspunkt (utløsning)', 'noySkredTidspunkt': 'Nøyaktighet (Tid)', 'registrertAv': 'Registrert av', 'registrertDato': 'Dato (registrert)', 'regStatus': 'Status', 'skredAreal_m2': 'Areal (m2)', 'eksposisjonUtlopsomr': 'Eksposisjon', 'snittHelningUtlopssomr_gr': 'Helning (snitt)', 'maksHelningUtlopsomr_gr': 'Helning (maks)', 'minHelningUtlopsomr_gr': 'Helning (min)', 'hoydeStoppSkred_moh': 'Høyde (stopp)', 'skredID': 'ID' } _t = _fields.keys() # TODO: set min zoom level a = folium.GeoJson( gdf, name='Detected avalanches (polygon)', style_function=lambda feature: { 'weight': 1, 'color': feature['properties']['preci_color'], 'fillcolor': feature['properties']['preci_color'], 'fillOpacity': 0.2 }, tooltip=folium.features.GeoJsonTooltip(fields=list(_fields.keys()), aliases=list(_fields.values()), labels=True, sticky=False) # popup=folium.features.GeoJsonPopup(fields=list(_fields.keys()), # aliases=list(_fields.values()), # labels=True, # sticky=False # ) ) a.add_to(ava_map) # Create a folium marker cluster marker_cluster = folium.plugins.MarkerCluster( name='Detected avalanches (point)') # # Get x and y coordinates for each point m = np.vstack([gdf.centroid.y, gdf.centroid.x]).T # Create icons for the marker cluster # i = [folium.Icon(color='lightgray', icon='mountain', prefix='fa')] * m.shape[0] # TODO: loop once over GDF and create markers, polygons, popups and tooltips for row_label, row in gdf.iterrows(): a = 1 _m = [row.geometry.centroid.y, row.geometry.centroid.x] folium.Marker( _m, icon=folium.Icon(color=get_aval_color(row))).add_to(marker_cluster) # Add marker cluster to map marker_cluster.add_to(ava_map) folium.LayerControl().add_to(ava_map) ava_map.save(out) print('Open map: {0}'.format(out))
def plot_map(datos): """[summary] Parameters ---------- datos : [type] [description] """ with open('Andalucia_GeoJSON.geojson',encoding="utf-8") as f: geo = json.load(f, encoding="utf-8") ## Se corrige un pequeño fallo con la tilde de Almería geo['features'][0]['properties']['texto']='Almería' m = folium.Map(location=[37, -4.8], zoom_start=6.5) folium.Choropleth( geo_data=geo, name='choropleth', data=datos, columns=['Territorio','Nuevos casos'], key_on='feature.properties.texto', fill_color='YlOrRd', fill_opacity=0.7, line_opacity=0.2, ## Nota: Fernando sabe de sobra que Hernández lleva tilde, pero el decode de Folium da problemas legend_name ='Created by: Francisco Alonso').add_to(m) folium.LayerControl().add_to(m) ## Cádiz icon_image = "https://www.flaticon.es/premium-icon/icons/svg/3334/3334018.svg" icon = folium.CustomIcon( icon_image, icon_size=(30, 30), icon_anchor=(15, 15), popup_anchor=(0.1, -0.1)) folium.Marker([36.5, -6.1], popup='<h3> Cádiz: </h3>'+'<p>'+str(datos[datos.Territorio == 'Cádiz']['Fecha'].tolist()[0])[:-9]+'</p>'\ +'<p> Nuevos casos: '+str(datos[datos.Territorio == 'Cádiz']['Nuevos casos'].tolist()[0])+'</p>'\ +'<p> Hospitalizados: '+str(datos[datos.Territorio == 'Cádiz']['Hospitalizados'].tolist()[0])+'</p>'\ +'<p> UCI: '+str(datos[datos.Territorio == 'Cádiz']['UCI'].tolist()[0])+'</p>'\ +'<p> Fallecidos: '+str(datos[datos.Territorio == 'Cádiz']['Fallecidos'].tolist()[0])+'</p>', icon=icon).add_to(m) ## Sevilla icon_image = "https://www.flaticon.es/premium-icon/icons/svg/3334/3334018.svg" icon = folium.CustomIcon( icon_image, icon_size=(30, 30), icon_anchor=(15, 15), popup_anchor=(0.1, -0.1)) folium.Marker([37.3, -5.9], popup='<h3> Sevilla: </h3>'+'<p>'+str(datos[datos.Territorio == 'Sevilla']['Fecha'].tolist()[0])[:-9]+'</p>'\ +'<p> Nuevos casos: '+str(datos[datos.Territorio == 'Sevilla']['Nuevos casos'].tolist()[0])+'</p>'\ +'<p> Hospitalizados: '+str(datos[datos.Territorio == 'Sevilla']['Hospitalizados'].tolist()[0])+'</p>'\ +'<p> UCI: '+str(datos[datos.Territorio == 'Sevilla']['UCI'].tolist()[0])+'</p>'\ +'<p> Fallecidos: '+str(datos[datos.Territorio == 'Sevilla']['Fallecidos'].tolist()[0])+'</p>', icon=icon).add_to(m) ## Huelva icon_image = "https://www.flaticon.es/premium-icon/icons/svg/3334/3334018.svg" icon = folium.CustomIcon( icon_image, icon_size=(30, 30), icon_anchor=(15, 15), popup_anchor=(0.1, -0.1)) folium.Marker([37.6, -6.8], popup='<h3> Huelva: </h3>'+'<p>'+str(datos[datos.Territorio == 'Huelva']['Fecha'].tolist()[0])[:-9]+'</p>'\ +'<p> Nuevos casos: '+str(datos[datos.Territorio == 'Huelva']['Nuevos casos'].tolist()[0])+'</p>'\ +'<p> Hospitalizados: '+str(datos[datos.Territorio == 'Huelva']['Hospitalizados'].tolist()[0])+'</p>'\ +'<p> UCI: '+str(datos[datos.Territorio == 'Huelva']['UCI'].tolist()[0])+'</p>'\ +'<p> Fallecidos: '+str(datos[datos.Territorio == 'Huelva']['Fallecidos'].tolist()[0])+'</p>', icon=icon).add_to(m) ## Córdoba icon_image = "https://www.flaticon.es/premium-icon/icons/svg/3334/3334018.svg" icon = folium.CustomIcon( icon_image, icon_size=(30, 30), icon_anchor=(15, 15), popup_anchor=(0.1, -0.1)) folium.Marker([37.8, -4.7], popup='<h3> Córdoba: </h3>'+'<p>'+str(datos[datos.Territorio == 'Córdoba']['Fecha'].tolist()[0])[:-9]+'</p>'\ +'<p> Nuevos casos: '+str(datos[datos.Territorio == 'Córdoba']['Nuevos casos'].tolist()[0])+'</p>'\ +'<p> Hospitalizados: '+str(datos[datos.Territorio == 'Córdoba']['Hospitalizados'].tolist()[0])+'</p>'\ +'<p> UCI: '+str(datos[datos.Territorio == 'Córdoba']['UCI'].tolist()[0])+'</p>'\ +'<p> Fallecidos: '+str(datos[datos.Territorio == 'Córdoba']['Fallecidos'].tolist()[0])+'</p>', icon=icon).add_to(m) ## Jaén icon_image = "https://www.flaticon.es/premium-icon/icons/svg/3334/3334018.svg" icon = folium.CustomIcon( icon_image, icon_size=(30, 30), icon_anchor=(15, 15), popup_anchor=(0.1, -0.1)) folium.Marker([37.7, -3.7], popup='<h3> Jaén: </h3>'+'<p>'+str(datos[datos.Territorio == 'Jaén']['Fecha'].tolist()[0])[:-9]+'</p>'\ +'<p> Nuevos casos: '+str(datos[datos.Territorio == 'Jaén']['Nuevos casos'].tolist()[0])+'</p>'\ +'<p> Hospitalizados: '+str(datos[datos.Territorio == 'Jaén']['Hospitalizados'].tolist()[0])+'</p>'\ +'<p> UCI: '+str(datos[datos.Territorio == 'Jaén']['UCI'].tolist()[0])+'</p>'\ +'<p> Fallecidos: '+str(datos[datos.Territorio == 'Jaén']['Fallecidos'].tolist()[0])+'</p>', icon=icon).add_to(m) ## Málaga icon_image = "https://www.flaticon.es/premium-icon/icons/svg/3334/3334018.svg" icon = folium.CustomIcon( icon_image, icon_size=(30, 30), icon_anchor=(15, 15), popup_anchor=(0.1, -0.1)) folium.Marker([36.8, -4.5], popup='<h3> Málaga: </h3>'+'<p>'+str(datos[datos.Territorio == 'Málaga']['Fecha'].tolist()[0])[:-9]+'</p>'\ +'<p> Nuevos casos: '+str(datos[datos.Territorio == 'Málaga']['Nuevos casos'].tolist()[0])+'</p>'\ +'<p> Hospitalizados: '+str(datos[datos.Territorio == 'Málaga']['Hospitalizados'].tolist()[0])+'</p>'\ +'<p> UCI: '+str(datos[datos.Territorio == 'Málaga']['UCI'].tolist()[0])+'</p>'\ +'<p> Fallecidos: '+str(datos[datos.Territorio == 'Málaga']['Fallecidos'].tolist()[0])+'</p>', icon=icon).add_to(m) ## Granada icon_image = "https://www.flaticon.es/premium-icon/icons/svg/3334/3334018.svg" icon = folium.CustomIcon( icon_image, icon_size=(30, 30), icon_anchor=(15, 15), popup_anchor=(0.1, -0.1)) folium.Marker([37.1, -3.5], popup='<h3> Granada: </h3>'+'<p>'+str(datos[datos.Territorio == 'Granada']['Fecha'].tolist()[0])[:-9]+'</p>'\ +'<p> Nuevos casos: '+str(datos[datos.Territorio == 'Granada']['Nuevos casos'].tolist()[0])+'</p>'\ +'<p> Hospitalizados: '+str(datos[datos.Territorio == 'Granada']['Hospitalizados'].tolist()[0])+'</p>'\ +'<p> UCI: '+str(datos[datos.Territorio == 'Granada']['UCI'].tolist()[0])+'</p>'\ +'<p> Fallecidos: '+str(datos[datos.Territorio == 'Granada']['Fallecidos'].tolist()[0])+'</p>', icon=icon).add_to(m) ## Almería icon_image = "https://www.flaticon.es/premium-icon/icons/svg/3334/3334018.svg" icon = folium.CustomIcon( icon_image, icon_size=(30, 30), icon_anchor=(15, 15), popup_anchor=(0.1, -0.1)) folium.Marker([37, -2.3], popup='<h3> Almería: </h3>'+'<p>'+str(datos[datos.Territorio == 'Almería']['Fecha'].tolist()[0])[:-9]+'</p>'\ +'<p> Nuevos casos: '+str(datos[datos.Territorio == 'Almería']['Nuevos casos'].tolist()[0])+'</p>'\ +'<p> Hospitalizados: '+str(datos[datos.Territorio == 'Almería']['Hospitalizados'].tolist()[0])+'</p>'\ +'<p> UCI: '+str(datos[datos.Territorio == 'Almería']['UCI'].tolist()[0])+'</p>'\ +'<p> Fallecidos: '+str(datos[datos.Territorio == 'Almería']['Fallecidos'].tolist()[0])+'</p>', icon=icon).add_to(m) folium_static(m)
import folium from flask import render_template temp = render_template('choser.html') p = folium.Popup(html=temp, parse_html=True) a = folium.Marker(icon=folium.CustomIcon('Qww.png', ), location=[49, 24], popup=p) m = folium.Map() m.add_child(a) m.save('123.html')
'https://www.cwb.gov.tw/V7/images/wind_icon/SSW.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/SW.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/WSW.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/W.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/WNW.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/NW.gif', 'https://www.cwb.gov.tw/V7/images/wind_icon/NNW.gif'] station=folium.FeatureGroup(name="環保署",show = False) for i in(range(16)): station.add_child( folium.Marker( location=[df1['Latitude'][i],df1['Longitude'][i]], popup=("<b>NAME:</b> {NAME}<br>""<b>PM2.5:</b> {PM25}<br>""<b>TIME:</b> {TIME}<br>") .format(NAME=str(df1['SiteName'][i]),PM25=str(df1['PM2.5'][i]),TIME=str(times[21:36])), icon=folium.CustomIcon(epa_icon_url,icon_size=(23,23)) # Creating a custom Icon ) ) station2=folium.FeatureGroup(name="風力",show = False) for j in(range(30)): if wind['Wind direction'][j]=='北': x=0; elif wind['Wind direction'][j]=='北北東': x=1; elif wind['Wind direction'][j]=='東北': x=2; elif wind['Wind direction'][j]=='東北東': x=3; elif wind['Wind direction'][j]=='東': x=4;
'spiderfyOnMaxZoom': False, 'disableClusteringAtZoom': 13 }) # Create marker for each pub in pub dictionary for pub, details in pubs_visited.items(): # Define marker variables name = pub coordinates = details[0] insta_post = details[1] website = details[2] directions = details[3] # Create custom icon with beer glass custom_icon = folium.CustomIcon(beerGlass_img, icon_size=(35, 35), popup_anchor=(0, -22)) # Define html inside marker pop-up pub_html = folium.Html( f"""<p style="text-align: center;"><b><span style="font-family: Didot, serif; font-size: 18px;">{name}</b></span></p> <p style="text-align: center;"><iframe src={insta_post}embed width="220" height="270" frameborder="0" scrolling="auto" allowtransparency="true"></iframe> <p style="text-align: center;"><a href={website} target="_blank" title="{name} Website"><span style="font-family: Didot, serif; font-size: 14px;">{name} Website</span></a></p> <p style="text-align: center;"><a href={directions} target="_blank" title="Directions to {name}"><span style="font-family: Didot, serif; font-size: 14px;">Directions to {name}</span></a></p> """, script=True) # Create pop-up with html content popup = folium.Popup(pub_html, max_width=220) # Create marker using instance of custom_icon and popup. custom_marker = folium.Marker(location=coordinates, icon=custom_icon,
name='choropleth', data=Andalucia_LastDate, columns=['Territorio', 'Nuevos casos'], key_on='feature.properties.texto', fill_color='YlOrRd', fill_opacity=0.7, line_opacity=0.2, ## Nota: Fernando sabe de sobra que Hernández lleva tilde, pero el decode de Folium da problemas legend_name='Created by: Francisco Alonso y Fernando Hernandez.').add_to(m) folium.LayerControl().add_to(m) ## Cádiz icon_image = "https://www.flaticon.es/premium-icon/icons/svg/3334/3334018.svg" icon = folium.CustomIcon(icon_image, icon_size=(30, 30), icon_anchor=(15, 15), popup_anchor=(0.1, -0.1)) folium.Marker([36.5, -6.1], popup='<h3> Cádiz: </h3>' + '<p>' + str(Andalucia_LastDate[Andalucia_LastDate.Territorio == 'Cádiz'] ['Fecha'].tolist()[0])[:-9] + '</p>' + '<p> Nuevos casos: ' + str(Andalucia_LastDate[Andalucia_LastDate.Territorio == 'Cádiz'] ['Nuevos casos'].tolist()[0]) + '</p>' + '<p> Hospitalizados: ' + str(Andalucia_LastDate[Andalucia_LastDate.Territorio == 'Cádiz'] ['Hospitalizados'].tolist()[0]) + '</p>' + '<p> UCI: ' + str(Andalucia_LastDate[Andalucia_LastDate.Territorio == 'Cádiz'] ['UCI'].tolist()[0]) + '</p>' + '<p> Fallecidos: ' + str(Andalucia_LastDate[Andalucia_LastDate.Territorio == 'Cádiz'] ['Fallecidos'].tolist()[0]) + '</p>', icon=icon).add_to(m)