コード例 #1
0
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_()
コード例 #2
0
ファイル: Mapa.py プロジェクト: pache0015/Bioinformatica-UNQ
 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
コード例 #3
0
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
コード例 #4
0
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
コード例 #5
0
    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
コード例 #6
0
    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
コード例 #7
0
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
コード例 #8
0
    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
コード例 #9
0
ファイル: maps.py プロジェクト: ahartikainen/pyinfraformat
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
コード例 #11
0
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")
コード例 #12
0
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)
コード例 #13
0
# 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. 그룹 만들기
コード例 #14
0
    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
コード例 #15
0
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)
コード例 #16
0
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_()
コード例 #17
0
ファイル: map.py プロジェクト: coreystone/CorpMap
    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")
コード例 #18
0
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',)
コード例 #19
0
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]:


'''
我好帥
'''