def index(): response = requests.get( r"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data/us-states.json" ) data = response.json() states = gpd.GeoDataFrame.from_features(data, crs='EPSG:4326') print("states:") print(states.head()) start_coords = (33.8713557, -98.5215656) folium_map = folium.Map(location=start_coords, zoom_start=14) formatter = "function(num) {return L.Util.formatNum(num, 3);};" MousePosition( position='topright', separator=' | ', empty_string='NaN', lng_first=True, num_digits=20, prefix='Coordinates:', lat_formatter=formatter, lng_formatter=formatter, ).add_to(folium_map) return folium_map._repr_html_()
def render_mapa(self): MousePosition().add_to(self.my_map) folium.PolyLine(self.points).add_to(self.my_map) minimap = MiniMap() self.my_map.add_child(minimap) self.guardar_mapa() display(self.my_map) return self.my_map
def draw_mult_map(df_a, df_b): m = folium.Map(location=[df_a['lat'].mean(), df_b['long'].mean()], zoom_start=15, control_scale=True) feature_group_estaciones = folium.FeatureGroup( name='Estaciones de Bicicletas') feature_group_tiendas = folium.FeatureGroup(name='bicicleterias') marker_cluster_estaciones = MarkerCluster() marker_cluster_tiendas = MarkerCluster() for row in df_a.iterrows(): marker_estaciones = folium.Marker( location=[row[1]['lat'], row[1]['long']], popup=str(row[1]['nro_est']) + '. ' + str(row[1]['nombre']), icon=folium.Icon(color='green')) marker_cluster_estaciones.add_child(marker_estaciones) for row in df_b.iterrows(): marker_tiendas = folium.Marker( location=[row[1]['lat'], row[1]['long']], popup=row[1]['nombre'], icon=folium.Icon(color='red')) marker_cluster_tiendas.add_child(marker_tiendas) feature_group_estaciones.add_child(marker_cluster_estaciones) feature_group_tiendas.add_child(marker_cluster_tiendas) m.add_child(feature_group_estaciones) m.add_child(feature_group_tiendas) m.add_child(folium.LayerControl()) #OPTIONAL PLUGGINS #minimaps minimap = MiniMap(toggle_display=True) m.add_child(minimap) #measure tool m.add_child(MeasureControl()) #show de coordinates from cursor position MousePosition().add_to(m) #draw tools draw = Draw(export=True) draw.add_to(m) #full screen Fullscreen(position='topright', title='Expand me', title_cancel='Exit me', force_separate_button=True).add_to(m) return m
def addMousePosition(m): formatter = "function(num) {return L.Util.formatNum(num, 3) + ' º ';};" MousePosition(position='bottomright', separator=' | ', empty_string='NaN', lng_first=True, num_digits=20, prefix='Coordinates:', lat_formatter=formatter, lng_formatter=formatter).add_to(m) return m
def well_map(self,zoom=10, map_style = 'OpenStreetMap',z_unit='ft', to_crs='EPSG:4326', tooltip=False,popup=True, ax=None): """ Make a Foluim map with the selected well Input: zoom -> (int, float) Initial zoom for folium map map_stule -> (str) Type of map folium Return: w_map -> (folium.Map) Folium map object """ _coord = gpd.GeoDataFrame() z_coef = 0.3048 if z_unit=='ft' else 1 x_coord = self.surf_coord.x y_coord = self.surf_coord.y z_coord = self.surf_coord.z*z_coef if self.surf_coord.has_z==True else self.rte*z_coef shape = self.surf_coord crs = self.crs _w = gpd.GeoDataFrame({'x':[x_coord],'y':[y_coord],'z':[z_coord],'geometry':[shape]}, index=[self.name]) _w.crs = crs _w = _w.to_crs(to_crs) _w['lon'] = _w['geometry'].x _w['lat'] = _w['geometry'].y _coord = _coord.append(_w) center = _coord[['lat','lon']].mean(axis=0) #make the map if ax is None: map_folium = folium.Map( location=(center['lat'],center['lon']), zoom_start=zoom, tiles = map_style) else: assert isinstance(ax,folium.folium.Map) map_folium = ax for i, r in _coord.iterrows(): folium.Marker( [r['lat'],r['lon']], tooltip=f"{i}" if tooltip else None, popup = folium.Popup(html=f"{i}",show=True) if popup else None, icon=folium.Icon(icon='tint', color='green') ).add_to(map_folium) folium.LayerControl().add_to(map_folium) #LocateControl().add_to(map_folium) MeasureControl().add_to(map_folium) MousePosition().add_to(map_folium) return map_folium
def wells_surveys_map(self, wells:list=None,zoom:int=10, map_style:str = 'OpenStreetMap',tooltip:bool=True,popup:bool=False,ax=None,radius=10): """ Make a Foluim map with the selected wells Input: wells -> (list, None) List of wells in the Group to show the matrix. If None, all wells in the group will be selected zoom -> (int, float) Initial zoom for folium map Return: w_map -> (folium.Map) Folium map object """ assert isinstance(wells,(list,type(None))) _coord = self.wells_surveys(wells=wells) _coord = _coord.to_crs('EPSG:4326') _coord['lon'] = _coord['geometry'].x _coord['lat'] = _coord['geometry'].y center = _coord[['lat','lon']].mean(axis=0) #make the map if ax is None: map_folium = folium.Map( location=(center['lat'],center['lon']), zoom_start=zoom, tiles = map_style) else: assert isinstance(ax,folium.folium.Map) map_folium = ax for i, r in _coord.iterrows(): folium.Circle( [r['lat'],r['lon']], tooltip=f"{r['well']} <br>md:{r['md']} <br>tvd:{r['tvd']} <br>tvdss:{r['tvdss']} <br>inc:{r['inc']} " if tooltip else None, popup = folium.Popup(html=f"{r['well']} <br>md:{r['md']} <br>tvd:{r['tvd']} <br>tvdss:{r['tvdss']} <br>inc:{r['inc']} ",show=True,max_width='50%') if popup else None, #icon=folium.Icon(icon='circle',prefix='fa', color='green'), radius=radius ).add_to(map_folium) folium.LayerControl().add_to(map_folium) #LocateControl().add_to(map_folium) MeasureControl().add_to(map_folium) MousePosition().add_to(map_folium) return map_folium
def draw_map(df, cluster_marks=True): m = folium.Map(location=[df['lat'].mean(), df['long'].mean()], zoom_start=15, control_scale=True) if cluster_marks == True: mc = MarkerCluster() for row in df.iterrows(): mc.add_child( folium.Marker(location=[row[1]['lat'], row[1]['long']], popup=row[1]['nombre'])) m.add_child(mc) else: for row in df.iterrows(): folium.Marker(location=[row[1]['lat'], row[1]['long']], popup=row[1]['nombre']).add_to(m) #OPTIONAL PLUGGINS #minimaps minimap = MiniMap(toggle_display=True) m.add_child(minimap) #measure tool m.add_child(MeasureControl()) #show de coordinates from cursor position MousePosition().add_to(m) #draw tools draw = Draw(export=True) draw.add_to(m) #full screen Fullscreen(position='topright', title='Expand me', title_cancel='Exit me', force_separate_button=True).add_to(m) return m
def wells_map(self, wells:list=None,zoom=10, map_style = 'OpenStreetMap',tooltip=True,popup=False,ax=None): """ Make a Foluim map with the selected wells Input: wells -> (list, None) List of wells in the Group to show the matrix. If None, all wells in the group will be selected zoom -> (int, float) Initial zoom for folium map Return: w_map -> (folium.Map) Folium map object """ assert isinstance(wells,(list,type(None))) _coord = self.wells_coordinates(wells=wells) center = _coord[['lat','lon']].mean(axis=0) #make the map if ax is None: map_folium = folium.Map( location=(center['lat'],center['lon']), zoom_start=zoom, tiles = map_style) else: assert isinstance(ax,folium.folium.Map) map_folium = ax for i, r in _coord.iterrows(): folium.Marker( [r['lat'],r['lon']], tooltip=f"{i}" if tooltip else None, popup = folium.Popup(html=f"{i}",show=True,max_width='50%') if popup else None, icon=folium.Icon(icon='tint', color='green') ).add_to(map_folium) folium.LayerControl().add_to(map_folium) #LocateControl().add_to(map_folium) MeasureControl().add_to(map_folium) MousePosition().add_to(map_folium) return map_folium
def plot_map(holes, render_holes=True, popup_size=(3, 3)): """Plot a leaflet map from holes with popup hole plots. Parameters ---------- holes : holes object render_holes : bool Render popup diagrams for holes popup_size : tuple size in inches of popup figure Returns ------- map_fig : folium map object """ holes_filtered = [] first_system = False if len(holes) == 0: raise ValueError("Can't plot empty holes -object.") for hole in holes: if hasattr(hole, "header") and hasattr(hole.header, "XY"): if "X" in hole.header.XY and "Y" in hole.header.XY: holes_filtered.append(hole) coord_system = hole.fileheader.KJ["Coordinate system"] coord_system = coord_string_fix(coord_system) if re.search(r"^EPSG:\d+$", coord_system, re.IGNORECASE): input_epsg = coord_system elif coord_system in EPSG_SYSTEMS: input_epsg = EPSG_SYSTEMS[coord_system] else: msg = "Coordinate system {} is not implemented" msg = msg.format(coord_system) raise NotImplementedError(msg) if not first_system: first_system = coord_system else: if not first_system == coord_system: raise ValueError( "Coordinate system is not uniform in holes -object" ) holes_filtered = Holes(holes_filtered) x_all, y_all = [], [] for i in holes_filtered: x_all.append(i.header["XY"]["X"]) y_all.append(i.header["XY"]["Y"]) x, y = np.mean(x_all), np.mean(y_all) x, y = project_points(x, y, input_epsg) max_zoom = 22 map_fig = folium.Map( location=[x, y], zoom_start=14, max_zoom=22, prefer_canvas=True, control_scale=True, tiles=None, ) folium.TileLayer("OpenStreetMap", maxNativeZoom=19, maxZoom=max_zoom).add_to(map_fig) folium.TileLayer("Stamen Terrain", maxNativeZoom=18, maxZoom=max_zoom).add_to(map_fig) folium.TileLayer("CartoDB positron", maxNativeZoom=18, maxZoom=max_zoom).add_to(map_fig) esri_url = ("https://server.arcgisonline.com/ArcGIS/rest/services/" + "World_Imagery/MapServer/tile/{z}/{y}/{x}") folium.TileLayer( tiles=esri_url, attr="Esri", name="Esri Satellite", overlay=False, control=True, maxNativeZoom=18, maxZoom=max_zoom, ).add_to(map_fig) mml_url_perus = "http://tiles.kartat.kapsi.fi/peruskartta/{z}/{x}/{y}.jpg" mml_url_orto = "http://tiles.kartat.kapsi.fi/ortokuva/{z}/{x}/{y}.jpg" folium.TileLayer( tiles=mml_url_perus, attr="MML", name="MML peruskartta", overlay=False, control=True, maxNativeZoom=18, maxZoom=max_zoom, ).add_to(map_fig) folium.TileLayer( tiles=mml_url_orto, attr="MML", name="MML ilmakuva", overlay=False, control=True, maxNativeZoom=18, maxZoom=max_zoom, ).add_to(map_fig) gtk_url = ( "http://gtkdata.gtk.fi/arcgis/services/Rajapinnat/GTK_Maapera_WMS/MapServer/WMSServer?" ) folium.WmsTileLayer( name="GTK Maaperäkartta", url=gtk_url, fmt="image/png", layers=["maapera_100k_kerrostumat_ja_muodostumat" ], # "maapera_200k_maalajit" show=False, transparent=True, opacity=0.5, ).add_to(map_fig) folium.WmsTileLayer( name="GTK Sulfaattimaat", url=gtk_url, fmt="image/png", layers=["happamat_sulfaattimaat_250k_alueet"], show=False, transparent=True, opacity=0.5, ).add_to(map_fig) sw_bounds = project_points(min(x_all), min(y_all), input_epsg) ne_bounds = project_points(max(x_all), max(y_all), input_epsg) map_fig.fit_bounds([sw_bounds, ne_bounds]) cluster = MarkerCluster( control=False, options=dict(animate=True, maxClusterRadius=15, showCoverageOnHover=False, disableClusteringAtZoom=20), ).add_to(map_fig) map_fig.add_child(cluster) hole_clusters = {} colors = [ "red", "blue", "green", "purple", "orange", "darkred", "lightred", "darkblue", "darkgreen", "cadetblue", "darkpurple", "pink", "lightblue", "lightgreen", ] colors = cycle(colors) clust_icon_kwargs = {} for color, key in zip(colors, holes_filtered.value_counts().keys()): hole_clusters[key] = folium.plugins.FeatureGroupSubGroup( cluster, name=ABBREVIATIONS[key], show=True) clust_icon_kwargs[key] = dict(color=color, icon="") map_fig.add_child(hole_clusters[key]) for i, hole in enumerate(holes_filtered): x, y = [hole.header.XY["X"], hole.header.XY["Y"]] x, y = project_points(x, y, input_epsg) if hasattr(hole.header, "TT") and "Survey abbreviation" in hole.header["TT"]: key = hole.header["TT"]["Survey abbreviation"] else: key = "Missing survey abbreviation" if render_holes and key != "Missing survey abbreviation": try: hole_svg = plot_hole(hole, output="svg", figsize=popup_size) popup = folium.Popup(hole_svg) icon = get_icon(key, clust_icon_kwargs) folium.Marker(location=[x, y], popup=popup, icon=icon).add_to(hole_clusters[key]) except (NotImplementedError, KeyError, TypeError): icon = get_icon(key, clust_icon_kwargs) folium.Marker( location=[x, y], popup=ABBREVIATIONS[key] + " " + str(i), icon=icon, ).add_to(hole_clusters[key]) else: icon = get_icon(key, clust_icon_kwargs) folium.Marker( location=[x, y], popup=ABBREVIATIONS[key] + " " + str(i), icon=icon, ).add_to(hole_clusters[key]) folium.LayerControl().add_to(map_fig) MeasureControl( secondary_length_unit="", secondary_area_unit="", activeColor="#aecfeb", completedColor="#73b9f5", ).add_to(map_fig) fmtr = "function(num) {return L.Util.formatNum(num, 7) + ' º ';};" MousePosition( position="topright", separator=" | ", prefix="WGS84 ", lat_formatter=fmtr, lng_formatter=fmtr, ).add_to(map_fig) return map_fig
features = [ { 'type': 'Feature', 'geometry': { 'type': 'LineString', 'coordinates': [each[1]['longitude'], each[1]['latitude']], }, 'properties': { 'times': each[1]['acq_time'], 'style': { # 'color': line['color'], # 'weight': line['weight'] if 'weight' in line else 5 } } } for each in wildfireFile[0:searchLimit].iterrows() ] TimestampedGeoJson({ 'type': 'FeatureCollection', 'features': features, }, period='PT1M', add_last_point=True).add_to(m) # WEB BROWSER PART ------ # m.add_child(markerCluster) MousePosition().add_to(m) m.save('index.html') url = 'index.html' webbrowser.open(url, new=1) # open in new tab
import os import pandas as pd import folium from folium import plugins import json os.chdir("C:/Users/rbehd/PycharmProjects/Mobility/data") # csv 있는 파일로 map_test = folium.Map(location=[35.22323, 128.60946], zoom_start=11, tiles=None) rfile = open("sanggwon_all.geojson", 'r', encoding='utf-8').read() jsonData = json.loads(rfile) folium.GeoJson(jsonData, name='상권', style_function=lambda feature: { 'fillColor': '#376091', 'fillOpacity': 0.7, 'color': 'black', 'weight': 0.5 }).add_to(map_test) # 4-3-5. 마우스 포지션(위도, 경도) 찾기 기능 from folium.plugins import MousePosition MousePosition().add_to(map_test) map_test.save("map_test.html")
def folium_view(request, *args, **kwargs): #================================================== Model data================================================ data = Webmap.object.all()[:50] m = folium.Map([29, -8.86], tiles='OpenStreetMap', zoom_start=5) html_string = m.get_root().render() test = folium.Html('<b>Hello world</b>', script=True) media_url = settings.MEDIA_ROOT #================================================External data json,gejson ...======================================= #jsondata= './webmap/static/communes.geojson' #commun=geopandas.read_file(jsondata) # ====================================================================Plugins=============================================== #More Tiles folium.TileLayer('Stamen Watercolor').add_to(m) plugins.Fullscreen(position='bottomright', title='Expand me', title_cancel='Exit me', force_separate_button=True).add_to(m) #plugins.Geocoder().add_to(m) plugins.LocateControl(auto_start=False, initial_zoom_level=10).add_to(m) #Measure control m.add_child(MeasureControl(position='topleft')) # Showing coordinates formatter = "function(num) {return L.Util.formatNum(num, 3) + ' º ';};" MousePosition( position='topright', separator=' | ', empty_string='NaN', lng_first=True, num_digits=20, prefix='Coordinates:', lat_formatter=formatter, lng_formatter=formatter, ).add_to(m) ################################################################################################################################################################################################### ############################################################################################################################################################################################# #============================================================LayerGroups names fg = folium.FeatureGroup(name='All groups') m.add_child(fg) g1 = plugins.FeatureGroupSubGroup(fg, 'Group1') m.add_child(g1) g2 = plugins.FeatureGroupSubGroup(fg, 'Group2') m.add_child(g2) #------------ external data group json, geojson ... #extdata = plugins.FeatureGroupSubGroup(fg, 'communes',show=False) #m.add_child(extdata) # ===========================================================filtering using data =========================================================================================================== for y in data: grpopup = "<div class = popupdiv><img class='popupimg' src =" + y.link + '>' + "<br><p class='strong'>" + y.Nom + "</p>" + "<p class='desc'>" + y.Services + "</p></div>" + "<div class= ''>" + y.Description_si_disop + '</div> <br>' + "<span class='fas fa-map-pin'></span> " + y.Adress + '<br>' + "<div class= 'telpop'>" + y.Tel + '</div><br>' grimgurl = media_url + '/' + y.img.name grcustomIcon = folium.features.CustomIcon(grimgurl, icon_size=(30, 30)) #-----------------------------------------Criterea 1 --------------------------------------------------------- if y.Nom == 'jarouub': folium.Marker(location=[y.geom.y, y.geom.x], popup=grpopup, radius=40, icon=grcustomIcon).add_to(g1) #-----------------------------------------Criterea 2 ------------------------------------------------------------- elif y.Nom == 'lol': folium.Marker(location=[y.geom.y, y.geom.x], popup=grpopup, radius=40, icon=grcustomIcon).add_to(g2) #-------------------------For object that meet none of the Criterea ---------------------------------------------- else: folium.Marker(location=[y.geom.y, y.geom.x], popup=grpopup, radius=40, icon=grcustomIcon).add_to(fg) #--------------------------External data group ----------------------------------------------------------------- #folium.GeoJson(commun,name='communes',overlay=False).add_to(extdata) folium.LayerControl(collapsed=True).add_to(m) #==============================================================This to add element inside the template generated by Folium ==================================================================== style_statement = '''<style> .leaflet-control{color:#f9f9f9; background-color:#000c } .leaflet-popup-content {margin: auto auto 10% auto;line-height: 1.4;text-align: center;} .popupimg{width:100%;margin-left:0px} .leaflet-popup-content-wrapper {width: 200px;text-align: center;}.leaflet-container { /* all maps */height: 600px;width: 90%;margin: auto;z-index: 0;}@media(max-width:750px){.leaflet-container{height:500px;width:94%;}}#specialbigmap{height:800px;}/*Resizethe'display_raw'textbox*/.django-leaflet-raw-textarea{width:100%;}.bd-placeholder-img{font-size:1.125rem;text-anchor:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}@media(min-width:768px){.bd-placeholder-img-lg{font-size:3.5rem;}}.leaflet-container .leaflet-marker-pane img{max-width:none!important;max-height:none!important;border-radius:100%;border-style:double;border-width:0.4rem; border-color:#000}.leaflet-touch .leaflet-control-layers, .leaflet-touch .leaflet-bar{border:1pxsolidrgb(128,128,128);background-clip:padding-box;}.leaflet-popup-content-wrapper, .leaflet-popup-tip{background:#000000e8;color:#9aa3a6;box-shadow:03px14pxrgba(0,0,0,0.9);border-radius:1%;}.leaflet-popup-content{margin:5px19px1px19px;line-height:1.2;} .telpop{font-weight:bold}.servicespop{font-size:1.15rem;font-weight:bold;}.fas{margin-right:3%;color:#096cb1;font-size:medium;}.nompop{font-size:18px;position:relative;}.description{text-align:center;position:static;text-transform:uppercase;}.label{color:#096cb1;font-size:14px;font-family:'Roboto';}.leaflet-container{/*allmaps*/height:600px;width:90%;margin:auto;z-index:0;}@media(max-width:750px){.leaflet-container{height:500px;width:94%;}}#specialbigmap{height:800px;}/*Resizethe'display_raw'textbox*/.django-leaflet-raw-textarea{width:100%;}.bd-placeholder-img{font-size:1.125rem;text-anchor:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;} .leaflet-control-layers-toggle {background-image: url("/static/app/img/layers.png"); background-size: 60%;} .leaflet-touch .leaflet-bar {border: 1px solid rgba(0,0,0,0.1);background-color: #000000b8;} .strong {font-weight: 700;line-height: 1.6;font-size: 1.4rem;text-transform: uppercase;} .leaflet-touch .leaflet-control-layers-toggle {width: 44px;height: 44px;background-color: #000000b8;} .leaflet-touch .leaflet-bar a {border-bottom-left-radius: 2px;border-bottom-right-radius: 2px;border: 1px solid #000;} .strong{} .leaflet-popup-content-wrapper {width: 180px;text-align: center;height: auto;} .desc{} .leaflet-popup-content p {margin: 10px 0;} .popupdiv{} .js-measuringprompt{color: #000 } .leaflet-touch .leaflet-control-measure .leaflet-control-measure-toggle{width: 30px;height: 30px;border-radius: 1px;border: solid 1px #000;} </style>''' #Adding the elements t m.get_root().header.add_child(folium.Element(style_statement)) m m.save('Map/templates/Folium.html') context = {'my_map': m} #=========================================================== Adding Django template tag in the beginning of Webmap template======================================================================== filename = 'Map/templates/webmap.html' line = "{% load staticfiles %} {%load leaflet_tags%} {% leaflet_js%}{% leaflet_css%} <script src='{% static 'leaflet/leaflet/leaflet.js' %}'></script> <link rel='stylesheet' href='{% static 'leaflet/leaflet/leaflet.css' %}'>" with open(filename, 'r+') as f: content = f.read() f.seek(0, 0) f.write(line.rstrip('\r\n') + '\n' + content) return render(request, 'Folium.html', context)
# 4-3-1. 마커 클러스터 만들기 data = data_pplace[["위도","경도"]].values # 위도, 경도를 array로 만들기 plugins.MarkerCluster(data).ag dd_to(map_pplace) # 마커 클러스터 삽입 # 4-3-2. 미니맵 만들기 minimap = plugins.MiniMap() map_cctv.add_child(minimap) # 4-3-4. 히트맵 만들기 from folium.plugins import HeatMap HeatMap(data.tolist()).add_to(map_pplace) # 4-3-5. 마우스 포지션(위도, 경도) 찾기 기능 from folium.plugins import MousePosition MousePosition().add_to(map_pplace) # 4-3-6. 측정도구 기능 from folium.plugins import MeasureControl map_pplace.add_child(MeasureControl()) # 4-3-7. 그림 그리기 기능 (이거 되게 자주 쓰일듯!!!!!!) # export=True 옵션 : 내가 그린 영역을 JSON 파일로 뽑아내줌 # 주의점 : 서브그룹이 많으면 4-3-7에서의 export 기능이 안됨. 직접 돌려보면 알거임. fg = folium.FeatureGroup(name="전체") # 전체그룹 설정 g2 = plugins.FeatureGroupSubGroup(fg, '교통정보수집') g1 = plugins.FeatureGroupSubGroup(fg, '교통단속') # 서브그룹 틀 만들기 from folium.plugins import Draw Draw(export=True).add_to(map_pplace) # 4-3-8. 그룹 만들기
def map( self, width='100%', height='100%', tiles='Cartodb Positron', ignore=[], **kwargs, ): ''' Plot overview map with folium Parameters: ---------- tiles: str tiles used, see `folium.Map?`` - "OpenStreetMap" - "Mapbox Bright" (Limited levels of zoom for free tiles) - "Mapbox Control Room" (Limited levels of zoom for free tiles) - "Stamen" (Terrain, Toner, and Watercolor) - "Cloudmade" (Must pass API key) - "Mapbox" (Must pass API key) - "CartoDB" (positron and dark_matter) ''' if ignore == 'all': ignore = self._units m = folium.Map( location=[self.lat_mid, self.lon_mid], width=width, height=height, zoom_start=11, tiles=tiles, ) # bathymetric contours contours_geojson = load_bathy_contours() tooltip = folium.GeoJsonTooltip( fields=['title'], aliases=['depth'], ) popup = folium.GeoJsonPopup( fields=['title'], aliases=['depth'], ) #colorscale = branca.colormap.linear.Greys_03.scale(levels[-1],levels[0]) def style_func(feature): return { 'color': feature['properties'] ['stroke'], #colorscale(feature['properties']['level-value']), 'weight': 3, #x['properties']['stroke-width'], #'fillColor': x['properties']['fill'], 'opacity': 1., #'popup': feature['properties']['title'], } folium.GeoJson( contours_geojson, name='geojson', style_function=style_func, tooltip=tooltip, popup=popup, ).add_to(m) # campaign details for uname, u in self.items(): if uname not in ignore: for d in u: folium.Polygon([(d.start.lat, d.start.lon), (d.end.lat, d.end.lon)], tooltip=uname + ' ' + d.label + '<br>' + str(d.start.time) + '<br>' + str(d.end.time), color=cnames[u['color']], dash_array='10 20', opacity=.5).add_to(m) folium.Circle( (d.start.lat, d.start.lon), tooltip=uname + ' ' + d.label + '<br>' + str(d.start.time), radius=2 * 1e2, color=cnames[u['color']], ).add_to(m) folium.Circle( (d.end.lat, d.end.lon), tooltip=uname + ' ' + d.label + '<br>' + str(d.end.time), radius=1e2, color=cnames[u['color']], ).add_to(m) # useful plugins MeasureControl().add_to(m) fmtr_lon = "function(dec) {var min= (dec-Math.round(dec))*60; " \ +"direction = (dec < 0) ? 'W' : 'E'; " \ +"return L.Util.formatNum(dec, 0) + direction + L.Util.formatNum(min, 2);};" fmtr_lat = "function(dec) {var min= (dec-Math.round(dec))*60; " \ +"direction = (dec < 0) ? 'S' : 'N'; " \ +"return L.Util.formatNum(dec, 0) + direction + L.Util.formatNum(min, 2);};" MousePosition(lat_formatter=fmtr_lon, lng_formatter=fmtr_lat).add_to(m) return m
for i in range(0, len(cctv_data)): cctv_radius.append(int(cctv_data['대수'][i] * cctv_data['범위'][i])) cctv_map = folium.Map(location=[35.276001, 128.500001], zoom_start=12, tiles='cartodbpositron') for i in range(0, len(cctv_data)): folium.Circle([cctv_data['위도'][i], cctv_data['경도'][i]], radius=cctv_radius[i], color="green", fill_color="green", weight=1).add_to(cctv_map) from folium.plugins import MousePosition MousePosition().add_to(cctv_map) import json rfile = open("changwon.json", 'r', encoding='utf-8').read() jsonData = json.loads(rfile) folium.GeoJson(jsonData, style_function=lambda feature: { 'fillColor': 'gray', 'fillOpacity': 0.3, 'color': 'black', 'weight': 1, 'opacity': 0.1 }, name='창원시').add_to(cctv_map)
def index(): start_coords = (-15.79340,-47.88232) folium_map = folium.Map(location=start_coords, zoom_start=16) draw = Draw() draw.add_to(folium_map) folium_map.add_child(MeasureControl()) tooltip = 'Click me!' folium.Marker( [-15.796218,-47.872002 ], popup='<i>Estrada Parque Ceilândia, SIA</i>', icon=folium.Icon(color='black',icon='car', prefix='fa'), tooltip=tooltip).add_to(folium_map) folium.Marker( [-15.791077,-47.875543], popup='<b>QSB 12, Taguatinga, Região</b>', icon=folium.Icon(color='black',icon='car', prefix='fa'), tooltip=tooltip).add_to(folium_map) folium.Marker( [-15.787711,-47.878397], popup='<b>Bloco A / B, W1 Sul, SQS 104, Asa Sul</b>', icon=folium.Icon(color='black',icon='car', prefix='fa'), tooltip=tooltip).add_to(folium_map) folium.Marker( [-15.790932,-47.879212], popup='<b>Recanto das Emas, Região Integrada de Desenvol...</b>', icon=folium.Icon(color='black',icon='car', prefix='fa'), tooltip=tooltip).add_to(folium_map) folium.Marker( [-15.793678,-47.880199], popup='<b>Recanto das Emas, Região Integrada de Desenvol...</b>', icon=folium.Icon(color='black',icon='car', prefix='fa'), tooltip=tooltip).add_to(folium_map) folium.Marker( [-15.79628,-47.885885], popup='<b>Recanto das Emas, Região Integrada de Desenvol...</b>', icon=folium.Icon(color='black',icon='car', prefix='fa'), tooltip=tooltip).add_to(folium_map) folium.Marker( [-15.789507,-47.883203], popup='<b>Recanto das Emas, Região Integrada de Desenvol...</b>', icon=folium.Icon(color='black',icon='car', prefix='fa'), tooltip=tooltip).add_to(folium_map) folium.Marker( [-47.887988,-47.887988], popup='<b>Recanto das Emas, Região Integrada de Desenvol...</b>', icon=folium.Icon(color='black',icon='car', prefix='fa'), tooltip=tooltip).add_to(folium_map) folium.Marker( [-15.79436,-47.887602], popup='<b>Recanto das Emas, Região Integrada de Desenvol...</b>', icon=folium.Icon(color='black',icon='car', prefix='fa'), tooltip=tooltip).add_to(folium_map) folium.Marker( [-15.788743,-47.889705], popup='<b>Recanto das Emas, Região Integrada de Desenvol...</b>', icon=folium.Icon(color='black',icon='car', prefix='fa'), tooltip=tooltip).add_to(folium_map) folium.Marker( [-15.788826,-47.89346], popup='<b>Recanto das Emas, Região Integrada de Desenvol...</b>', icon=folium.Icon(color='black',icon='car', prefix='fa'), tooltip=tooltip).add_to(folium_map) formatter = "function(num) {return L.Util.formatNum(num, 3) + ' º ';};" MousePosition( position='topright', separator=' | ', empty_string='NaN', lng_first=True, num_digits=20, prefix='Coordinates:', lat_formatter=formatter, lng_formatter=formatter, ).add_to(folium_map) return folium_map._repr_html_()
max_lat = 190, min_lon = -50, max_lon = 75) nam_group = FeatureGroup(name='NAM') emea_group = FeatureGroup(name='EMEA') asia_group = FeatureGroup(name='APA') formatter = "function(num) {return L.Util.formatNum(num, 3) + ' º ';};" MousePosition( position='topright', separator=' | ', empty_string='', lng_first=True, num_digits=20, prefix='Coordinates:', lat_formatter=formatter, lng_formatter=formatter, ).add_to(m) def get_date(timezone): date = datetime.now(timezone) return date.strftime("%A, %D") def get_time(timezone): time = datetime.now(timezone) return time.strftime("%H:%M")
def indeks(): basemaps = { 'Google Maps': folium.TileLayer( tiles= 'https://mt1.google.com/vt/lyrs=m&x={x}&y={y}&z={z}', attr= 'Google', name ='Google Maps', overlay = True, control = True ), 'Google Satellite': folium.TileLayer( tiles= 'https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', attr= 'Google', name ='Google Satellite', overlay = True, control = True ), 'Google Terrain': folium.TileLayer( tiles= 'https://mt1.google.com/vt/lyrs=p&x={x}&y={y}&z={z}', attr= 'Google', name ='Google Terrain', overlay = True, control = True ), 'Google Satellite Hybrid': folium.TileLayer( tiles= 'https://mt1.google.com/vt/lyrs=y&x={x}&y={y}&z={z}', attr= 'Google', name ='Google Satellite Hybrid', overlay = True, control = True ), 'Esri Satellite': folium.TileLayer( tiles= 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', attr= 'Esri', name ='Esri Satellite', overlay = True, control = True ), 'Stamen Terrain' : folium.TileLayer( tiles= 'Stamen Terrain', attr= 'Stamen Terrain', name ='Stamen Terrain', overlay = True, control = True ), 'Stamen Toner' : folium.TileLayer( tiles= 'Stamen Toner', attr= 'Stamen Toner', name ='Stamen Toner', overlay = True, control = True ), 'CartoDB Positron' : folium.TileLayer( tiles= 'CartoDB Positron', attr= 'CartoDB Positron', name ='CartoDB Positron', overlay = True, control = True ), 'OpenStreetMap' : folium.TileLayer( tiles= 'OpenStreetMap', attr= 'OpenStreetMap', name ='OpenStreetMap', overlay = True, control = True ) } # Directory Path r = os.path.dirname(os.path.abspath(__file__)) # Baca Data Konversi shapefile ke json batas_desa = gpd.read_file(r+'/assets/Desa.shp') batas_desa.to_file(r+'/assets/Desa.json', driver='GeoJSON') batas_kecamatan = gpd.read_file(r+'/assets/Kecamatan.shp') batas_kecamatan.to_file(r+'/assets/Kecamatan.json', driver='GeoJSON') toko_modern_point = gpd.read_file(r+'/assets/Toko_Modern_Centroids.shp') toko_modern_point.to_file(r+'/assets/Toko_Modern_Centroids.json', driver='GeoJSON') # Membaca data DBF valuesdesa = gpd.read_file(r+'/assets/Desa.dbf') start_coord = [-6.1950, 106.5528] map = folium.Map(location=start_coord, zoom_start=11, control_scale=True, height=650, width="100%") # Chloroplet # batas_kecamatan = folium.Choropleth( # geo_data = batas_kecamatan, #data geojson # name = 'Kepadatan Penduduk Kecamatan', #nama # data = valueskecamatan, #data tabel # columns =['KECAMATAN', 'KEP_PEND'], #colom dari tabel # key_on ="properties.KECAMATAN", #kunci # fill_color = 'Spectral_r', #pallete # fill_opacity = 0.75, #transparansi fill # line_opacity = 0.3, #transparansi outline # legend_name = f"Kepadatan Penduduk per kecamatan Kabupaten Tangerang Tahun 2015", #legenda # smooth_factor= 0.05, # ).add_to(map) batas_desa = folium.Choropleth( geo_data = batas_desa, #data geojson name = 'Kepadatan Penduduk Desa & Kelurahan', #nama data = valuesdesa, #data tabel columns =['DESA_KEL', 'KEP_PEND'], #colom dari tabel key_on ="properties.DESA_KEL", #kunci fill_color = 'Spectral_r', #pallete fill_opacity = 0.75, #transparansi fill line_opacity = 0.3, #transparansi outline legend_name = f"Kepadatan Penduduk per desa/kel Kabupaten Tangerang Tahun 2015", #legenda smooth_factor= 0.05 ).add_to(map) # Toolkit and Pop Up style_function = "font-size: 10px; font-weight: bold" # batas_kecamatan.geojson.add_child(folium.features.GeoJsonTooltip(['KECAMATAN','KEP_PEND'], style=style_function, labels=True)) batas_desa.geojson.add_child(folium.features.GeoJsonTooltip(['DESA_KEL','KECAMATAN','KEP_PEND'], style=style_function, labels=True)) # Cluster Marker toko_modern_point["x"] = toko_modern_point["geometry"].x toko_modern_point["y"] = toko_modern_point["geometry"].y locations = list(zip(toko_modern_point["y"], toko_modern_point["x"], toko_modern_point['N_Alfamart'])) marker_cluster = MarkerCluster().add_to(map) for POINT_Y, POINT_X, NAMAOBJ in locations : folium.Marker(location=[POINT_Y, POINT_X],popup= NAMAOBJ, icons="darkblue", clustered_Marker= True, style=style_function, name = "Toko Modern").add_to(marker_cluster) # Basemap for basemap, TileLayer in basemaps.items(): basemaps[basemap].add_to(map) folium.LayerControl().add_to(map) #mouse position fmtr = "function(num) {return L.Util.formatNum(num,3) + ' degres';};" # Plugins Draw ( export=False, filename='/assets/test.geojson', position="topleft", draw_options = None, edit_options = None ).add_to(map) MousePosition ( position='bottomright', Separator = "|", prefix="Mouse:", lat_formatter=fmtr, lng_formatter=fmtr ).add_to(map) MeasureControl ( position='topright', primary_length_unit='meters', secondary_length_unit='kilometers', primary_area_unit='sqmeters', secondary_area_unit='acres' ).add_to(map) minimap = MiniMap() map.add_child(minimap) map.save(r+'/templates/map.php') return render_template('index.php',)
center_pos = [35.709635, 139.810851] fmap.add_child(folium.Circle(location=center_pos, color='red', # Circle 顏色 radius=500, # Circle 寬度 fill=True, # 填滿中間區域 fill_opacity=0.2# 設定透明度:1是完全不透 )) points = [[35.709635, 139.810851], [35.707595, 139.795530], [35.715092, 139.796666]] fmap.add_child(folium.PolyLine(locations=points, # 座標List weight=8,color = '#9999FF')) # 線條寬度 fmap.add_child(MeasureControl())#量測地圖功能加入 fmap.add_child(MousePosition()) # 將各Marker加入地圖。 fmap.add_child(child=m1) fmap.add_child(child=m2) fmap.add_child(child=m3) fmap.save('map.html') fmap # 在notebook中顯示地圖 # In[53]: ''' 我好帥 '''