• folium:绘制地图的模块


    楔子

    folium是一个用来绘制地图,并在地图上做标记的工具。比较简单,我们直接来看看怎么用。另外,我下面的代码都在notebook上面演示。

    创建一张地图

    先不管哪些花里胡哨的,我们先来如何创建一张地图。

    import folium
    # 调用Map方法,将纬度和精度组合成一个列表传进去即可创建出一张地图
    m = folium.Map(location=[39.9, 116.3])
    m
    

    Map方法支持的参数:

    location:存储纬度和经度的元组或列表,纬度和经度使用浮点型表示。默认为None,会创建出一张空地图

    m = folium.Map()
    m
    

    width:创建的地图的宽度,默认是100%。可以输入一个字符串,比如"50%"、"75%"等等改变宽度,或者输入一个整型,表示宽多少个像素。

    height:创建的地图的高度,默认是100%。可以输入一个字符串,比如"50%"、"75%"等等改变高度,或者输入一个整型,表示高多少个像素。

    m = folium.Map(location=[39.9, 116.3], width="75%", height="50%")
    m
    

    tiles:str型,用于控制绘图调用的地图样式,默认为'OpenStreetMap',也有一些其他的内建地图样式,如'Stamen Terrain'、'Stamen Toner'、'Mapbox Bright'、'Mapbox Control Room'等;也可以传入'None'来绘制一个没有风格的朴素地图,或传入一个URL来使用其它的自选osm

    m = folium.Map(location=[39.9, 116.3], width="75%", height="50%", tiles="Stamen Terrain")
    m
    

    m = folium.Map(location=[39.9, 116.3], width="75%", height="50%", tiles="Stamen Toner")
    m
    

    min_zoom:地图可以缩小的上限,默认为0

    max_zoom:地图可以放大的上限,默认为18

    zoom_start:地图zoom的初始级别,默认为10。假设改成11的话,那么就相当于在默认创建的地图的级别上放大一级。光说不练假把式,举个例子感受一下。

    m = folium.Map(location=[39.9, 116.3], width="75%", height="50%")
    m
    

    m = folium.Map(location=[39.9, 116.3], width="75%", height="50%", zoom_start=11)
    m
    

    可以看到,地图相当于被放大了。

    attr:字符串类型,只有当tile为URL内的osm时才会使用,用于给osm重命名。比较少用

    control_scale:是否添加比例尺,默认为False,表示不添加

    m = folium.Map(location=[39.9, 116.3], control_scale=True)
    m
    

    prefer_canvas:默认为False,如果为True,那么对于向量层将使用画布,而不是SVG。这在某些场景下能够提高性能,比如我们要做成百上千个标记的时候。

    no_touch:是否禁止接收来自于设备的触控事件、比如拖拽等等,默认是False表示不禁止。

    disable_3d:对定位不使用硬件加速的CSS 3D转换(因为在极少的情况下可能会导致小异常),即使它们支持。

    zoom_control:是否在地图上显示,zoom的控制按钮。就是生成的地图的左上角的加号和减号,对应地图的放大和缩小。默认是True,表示显示,如果觉得碍眼,我们可以传入False禁用掉。

    给地图添加一些组件

    我们还可以再生成的地图上做一些标记:

    Marker

    m = folium.Map(location=[39.9, 116.3])
    # 调用Marker可以创建标记,传入位置和信息,当鼠标放在标记上会显示出信息。
    # 而且支持html。最后不要忘记add_to(m),表示把标志添加到地图上
    folium.Marker(location=[39.9, 116.3], popup='<p style="color: green">this is beijing</p>').add_to(m)
    m
    

    Marker方法支持的参数:

    location:同Map方法的location

    popup:附加的信息,支持html。但是如果我们不希望使用html语法呢?因为< >之类的符号会被当成html解析。

    m = folium.Map(location=[39.9, 116.3])
    # 使用Popup进行渲染,加上parse_html=True便会把原始内容当成普通字符串来解析
    # 并且还可以指定max_width,表示宽度
    folium.Marker(location=[39.9, 116.3], popup=folium.Popup('<p style="color: green">this is beijing</p>', 
                                                             parse_html=True, max_width=200)).add_to(m)
    m
    

    tooltip:当把鼠标移动到标记的时候显示的信息,鼠标从标记移走的时候,信息消失。

    m = folium.Map(location=[39.9, 116.3])
    folium.Marker(location=[39.9, 116.3], popup="beijing", tooltip="click me").add_to(m)
    m
    

    icon:给标记添加提携图标,我们看到蓝色的标记里面是一个白色的小圆圈,我们可以进行修改。

    m = folium.Map(location=[39.9, 116.3])
    # 调用Icon方法指定图标,color指定为pink,icon指定为cloud
    folium.Marker(location=[39.9, 116.3], popup="beijing", icon=folium.Icon(color="pink", icon="cloud")).add_to(m)
    m
    

    Circle

    和Marker一样,都是用来添加标记的,不过Circle添加的是圆圈。

    Circle方法支持的参数:

    location:同Marker的location

    popup:同Marker的popup

    tooltip:同Marker的tooltip

    radius:Circle的半径,单位是米,显然是根据地图来的。

    color:圆圈的颜色,支持16进制。

    m = folium.Map(location=[39.9, 116.3])
    folium.Circle(location=[39.9, 116.3], radius=10000, color="green").add_to(m)
    m
    

    fill:我们看到圆圈默认是空的,如果fill为True,那么将会变成实心。

    fill_color:填充是所用的颜色,默认和color保持一致

    fill_opacity:填充之后的透明度,浮点型,0.到1.之间,默认为0.2

    m = folium.Map(location=[39.9, 116.3])
    folium.Circle(location=[39.9, 116.3], radius=10000, color="green", fill=True, fill_color="yellow").add_to(m)
    m
    

    PolyLine

    上面的Marker和Circle是默认的图形,我们可以使用PolyLine来绘制多边形,但是前提需要知道一些点的经纬度。

    m = folium.Map(location=[39.9, 116.3])
    # 传入的是多个经纬度:海淀区、石景山区、丰台区、海淀区
    folium.PolyLine(locations=[
        [39.95, 116.30], [39.90, 116.22], [39.85, 116.28], [39.95, 116.30]]
                   ).add_to(m)
    m
    

    PolyLine方法支持的参数:

    locations:传入要绘制的多边形的每一个点的坐标,所以叫locations。另外,因为要形成一个闭合图形,所以第一个坐标和最后一个坐标应该是一样的。

    popup:同Marker和Circle。

    tooltip:同Marker和Circle。

    smooth_factor:简化线段的程度,越大性能越好、线段越光滑,越小表达的越精确、多边形的每个点在放大之后越接近真实位置。这个你可以自己尝试一下,可以看到区别

    weight:线条的宽度,默认为3

    opacity:线条的透明度,默认是1.,即不透明。

    m = folium.Map(location=[39.9, 116.3])
    folium.PolyLine(locations=[
        [39.95, 116.30], [39.90, 116.22], [39.85, 116.28], [39.95, 116.30]],
                   opacity=0.5, weight=5).add_to(m)
    m
    

    add_child添加附加属性

    添加经纬度

    m = folium.Map(location=[39.9, 116.3])
    # 添加经纬度
    m.add_child(folium.LatLngPopup())
    m
    

    添加坐标点

    m = folium.Map(location=[39.9, 116.3])
    # 添加坐标点,这样一点击就会生成一个Marker
    # ClickForMarker里面还可以指定一个参数popup,含义同之前的一样
    m.add_child(folium.ClickForMarker())
    m
    

    设置json

    其实我们之前的操作,都可以通过设置json来实现。

    未完待续

  • 相关阅读:
    字符串处理类
    PageHelper
    JavaScriptPlus操作类
    Http 数据操作
    解压 压缩 C#
    验证码生成 C#
    MySecurity(安全类)
    博客搬迁至wordpress站点
    我的前端MVC之路
    三个css3趣玩小试
  • 原文地址:https://www.cnblogs.com/traditional/p/12386907.html
Copyright © 2020-2023  润新知