使用folium对地理信息可视化

    Hi,我是老鼠屎。最近在做地理信息可视化进度基本为龟速。但是探索的过程中发现了folium神器,在这里进行一些整理。

    Folium可以让你用Python强大生态系统来处理数据,然后用Leaflet地图来展示。Folium内置一些来自OpenStreetMap、MapQuest Open、MapQuest Open Aerial、Mapbox和Stamen的地图元件(tilesets),并且支持用Mapbox或者Cloudmade API keys来自定义地图元件。Folium支持GeoJSON和TopJSON叠加(overlays),绑定数据来创造一个分级统计图(Choropleth map)。

 1 安装

    关于folium的安装,直接pip install即可。然而这里需要注意的是,folium的安装依赖于branca、jinja2、requests和six等库。具体可以参考一下下图。

2 使用

2.1 关于地图的显示

    根据其官方demo,我们可以先创建一个非常基本的地图看一下效果。

import folium
m = folium.Map(location=[45.5236, -122.6750])

    location是地图中心的位置。然而当我们想在jupyter notebook里面展示地图时,却无法显示。

     这里老鼠屎的解决方案是:先把地图保存为html的格式,再通过webbrowser将其打开。

import folium
import webbrowser

m = folium.Map(location=[45.5236, -122.6750])
m.save("1.html")
webbrowser.open("1.html")

    之后就可以在网页上显示地图。

 

 2.2 地图类型的加载

    默认的地图类型是OpenStreetMap,当然,其他类型的地图(Stamen Terrain,Stamen Toner,Mapbox Bright,Mapbox Control Room等)也是可以使用的。通过tiles参数即可进行选择。

import folium
import webbrowser

m = folium.Map(location=[45.5236, -122.6750],tiles='Stamen Toner',zoom_start=13)
m.save("1.html")
webbrowser.open("1.html")

    这里加了zoom_start参数,表示地图的初始缩放级别。加载后的地图如下所示。

2.3 在地图上添加标记

    我们通过folium.Marker()方法,创建了一个简单的标记小部件,并通过add_to()将定义好的部件施加于先前创建的Map对象m之上。  

import folium
import webbrowser

m = folium.Map(location=[45.5236, -122.6750],zoom_start=13)
folium.Marker([45.488869,-122.571034], popup='<i>Mt. Hood Meadows</i>').add_to(m)
m.save("1.html")
webbrowser.open("1.html")

    这里,location:同folium.Map()中的同名参数,用于确定标记部件的经纬位置;popup:str型或folium.Popup()对象输入,用于控制标记部件的具体样式(folium内部自建了许多样式),默认为None,即不显示部件;icon:folium.Icon()对象,用于设置popup定义的部件的具体颜色、图标内容等。效果如下图所示。

2.4 在地图上画线

import folium
import webbrowser

m = folium.Map(location=[100.0, 0.0],
              zoom_start=6,
              control_scale=True)

gj = folium.GeoJson(data={ "type": "MultiLineString",
  "coordinates": [
      [ [100.0, 0.0], [101.0, 1.0] ],
      [ [102.0, 2.0], [103.0, 3.0] ]
    ]
  })


gj.add_to(m)


m.save("1.html")
webbrowser.open("1.html")

     效果如下图。

3 推荐资料

转载自:https://blog.csdn.net/LaoChengZier/article/details/83684961

You may also like...