如何安裝Python繪制地圖神器folium

本篇內容主要講解“如何安裝Python繪制地圖神器folium”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何安裝Python繪制地圖神器folium”吧!

10余年的芙蓉網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。網絡營銷推廣的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整芙蓉建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“芙蓉網站設計”,“芙蓉網站推廣”以來,每個客戶項目都認真落實執(zhí)行。

一、folium簡介和安裝

folium 建立在 Python 生態(tài)系統(tǒng)的數(shù)據應用能力和 Leaflet.js  庫的映射能力之上,在Python中操作數(shù)據,然后通過 folium 在 Leaflet 地圖中可視化。

folium 相比較于國內百度的 pyecharts 靈活性更強,能夠自定義繪制區(qū)域,并且展現(xiàn)形式更加多樣化。[1]

如何安裝Python繪制地圖神器folium

1. folium的簡介

  • Folium是建立在 Python 生態(tài)系統(tǒng)的數(shù)據整理 Datawrangling 能力和 Leaflet.js 庫的映射能力之上的開源庫。用  Python 處理數(shù)據,然后用 Folium 將它在 Leaflet 地圖上進行可視化。Folium能夠將通過 Python 處理后的數(shù)據輕松地在交互式的  Leaflet 地圖上進行可視化展示。它不單單可以在地圖上展示數(shù)據的分布圖,還可以使用 Vincent/Vega 在地圖上加以標記。

  • 這個開源庫中有許多來自 OpenStreetMap、MapQuest Open、MapQuestOpen Aerial、Mapbox和Stamen  的內建地圖元件,而且支持使用 Mapbox 或 Cloudmade 的 API 密鑰來定制個性化的地圖元件。Folium支持 GeoJSON 和  TopoJSON 兩種文件格式的疊加,也可以將數(shù)據連接到這兩種文件格式的疊加層,最后可使用 color-brewer 配色方案創(chuàng)建分布圖。

  • Folium可以讓你用 Python 強大生態(tài)系統(tǒng)來處理數(shù)據,然后用 Leaflet 地圖來展示。Folium內置一些來自  OpenStreetMap、MapQuest Open、MapQuest Open Aerial、Mapbox和Stamen  的地圖元件(tilesets),并且支持用 Mapbox 或者 Cloudmade API keys 來自定義地圖元件。Folium支持 GeoJSON 和  TopJSON 疊加(overlays),綁定數(shù)據來創(chuàng)造一個分級統(tǒng)計圖(Choropleth  map)。但是,F(xiàn)olium庫繪制熱點圖的時候,需要聯(lián)網才可顯示。

2. 安裝folium

pip install folium -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

?這里直接使用了國內豆瓣源

如何安裝Python繪制地圖神器folium

二、基本使用

folium顯示地圖的類為 folium.Map,類的聲明如下:

class folium.Map(location=None, width='100%', height='100%', left='0%', top='0%', position='relative', tiles='OpenStreetMap', attr=None, min_zoom=0, max_zoom=18, zoom_start=10, min_lat=-90, max_lat=90, min_lon=-180, max_lon=180, max_bounds=False, crs='EPSG3857', control_scale=False, prefer_canvas=False, no_touch=False, disable_3d=False, png_enabled=False, zoom_control=True, **kwargs)

幾個重要的參數(shù):

  • location:經緯度,list 或者 tuple 格式,順序為 latitude, longitude

  • zoom_start:縮放值,默認為 10,值越大比例尺越小,地圖放大級別越大

  • control_scale:Bool型,控制是否在地圖上添加比例尺,默認為 False 即不添加

  • tiles:顯示樣式,默認 "OpenStreetMap",也就是開啟街道顯示

  • crs:地理坐標參考系統(tǒng),默認為 "EPSG3857"

1. 各級別地圖

世界地圖

import folium  print(folium.__version__)  # define the world map world_map = folium.Map() # save world map world_map.save('test_01.html')

結果如下:

當前folium版本:0.11.0

如何安裝Python繪制地圖神器folium

國家地圖

import folium # define the national map national_map = folium.Map(location=[35.3, 100.6], zoom_start=4) # save national map national_map.save('test_02.html')

結果如下:

如何安裝Python繪制地圖神器folium

市級地圖

其實改變地圖顯示也就是改變顯示的經緯度和縮放比例,省級、市級、縣級用法相似,這里舉一個市級的例子為例,如北京市:

import folium # define the national map city_map = folium.Map(location=[39.93, 116.40], zoom_start=10) # save national map city_map.save('test_03.html')

如何安裝Python繪制地圖神器folium

2. 在地圖上標記

普通標記

添加普通標記用 Marker,可以選擇標記的圖案。

import folium  bj_map = folium.Map(location=[39.93, 115.40], zoom_start=12, tiles='Stamen Terrain')  folium.Marker(     location=[39.95, 115.33],     popup='Mt. Hood Meadows',     icon=folium.Icon(icon='cloud') ).add_to(bj_map)  folium.Marker(     location=[39.96, 115.32],     popup='Timberline Lodge',     icon=folium.Icon(color='green') ).add_to(bj_map)  folium.Marker(     location=[39.93, 115.34],     popup='Some Other Location',     icon=folium.Icon(color='red', icon='info-sign')    # 標記顏色  圖標 ).add_to(bj_map)  bj_map.save('test_04.html')

結果如下:

如何安裝Python繪制地圖神器folium

圓形標記

添加圓形標記用 Circle 以及 CircleMarker

import folium  bj_map = folium.Map(location=[39.93, 116.40], zoom_start=12, tiles='Stamen Toner')  folium.Circle(     radius=200,     location=(39.92, 116.43),     popup='The Waterfront',     color='#00FFFF',   # 顏色     fill=False,        # 填充 ).add_to(bj_map)  folium.CircleMarker(     location=(39.93, 116.38),     radius=50,   # 圓的半徑     popup='Laurelhurst Park',     color='#FF1493',     fill=True,     fill_color='#FFD700' ).add_to(bj_map)  bj_map.save('test_05.html')

結果如下:

如何安裝Python繪制地圖神器folium

動態(tài)放置標記

import folium  dynamic_tagging = folium.Map(     location=[46.8527, -121.7649],     tiles='Stamen Terrain',     zoom_start=13 )  folium.Marker(     [46.8354, -121.7325],     popup='Camp Muir' ).add_to(dynamic_tagging)  dynamic_tagging.add_child(folium.ClickForMarker(popup='Waypoint')) dynamic_tagging.save('test_06.html')

結果如下:

如何安裝Python繪制地圖神器folium

更多詳細使用可以參考官方文檔:http://python-visualization.github.io/folium/quickstart.html[2]

三、實戰(zhàn)案例

以將停車場地理位置數(shù)據可視化在地圖上示例,熟悉 folium 地圖可視化的使用。

1. 獲取經緯度數(shù)據

停車場地理位置數(shù)據來源于網絡,數(shù)據真實可靠,下面先利用 Python 爬蟲獲取數(shù)據

#數(shù)據來源:http://219.136.133.163:8000/Pages/Commonpage/login.aspx  import requests import csv import json import logging  headers = {     'X-Requested-With': 'XMLHttpRequest',     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36' } logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s') url = 'http://219.136.133.163:8000/Pages/Commonpage/AsyGetData.asmx/GetParkList' s = requests.session() s.get(url, headers=headers) for i in range(1, 318):     data = {         'cp': str(i),         'ps': '10',         'kw': '',         'lon': 'undefined',         'lat': 'undefined',         'type': 'undefined'     }     url = 'http://219.136.133.163:8000/Pages/Commonpage/AsyGetData.asmx/GetParkList'     # post提交表單數(shù)據     res = s.post(url, data=data, headers=headers)     # 重新設置編碼     res.encoding = 'utf-8'     # str轉json  便于提取數(shù)據     result = json.loads(res.text)['Result']     for j in result:         park_name = j['ParkName']         Lon = j['Longitude']         Lat = j['Latitude']         with open('parkings.csv', 'a+', newline='', encoding='gb18030') as f:             f_csv = csv.writer(f)             f_csv.writerow([park_name, Lon, Lat])             logging.info([park_name, Lon, Lat])

結果如下:

如何安裝Python繪制地圖神器folium

如何安裝Python繪制地圖神器folium

共有 3170 個停車場地理位置數(shù)據

2. folium地圖可視化

import pandas as pd import folium  # 讀取csv數(shù)據 data = pd.read_csv('parkings.csv', encoding='gbk') # 傳入緯度和經度數(shù)據 park_map = folium.Map(location=[data['latitude'].mean(), data['longitude'].mean()], zoom_start=10, control_scale=True,) # 實例化 folium.map.FeatureGroup 對象 incidents = folium.map.FeatureGroup() for name,row in data.iterrows():     incidents.add_child(         folium.CircleMarker(            # CircleMarker表示花圓             (row["latitude"], row["longitude"]),   # 每個停車場的經緯度坐標             radius=7,                   # 圓圈半徑             color='#FF1493',            # 標志的外圈顏色             fill=True,                  # 是否填充             fill_color='#00FF00',       # 填充顏色             fill_opacity=0.4            # 填充透明度         )     )  park_map.add_child(incidents) park_map.save('park_map1.html')

效果如下:

如何安裝Python繪制地圖神器folium

這樣看起來有點亂,下面我們來統(tǒng)計一下各個局域的停車場數(shù)量

import pandas as pd import folium from folium import plugins  data = pd.read_csv('parkings.csv', encoding='gbk') park_map = folium.Map(location=[data['latitude'].mean(), data['longitude'].mean()], zoom_start=10, control_scale=True,) marker_cluster = plugins.MarkerCluster().add_to(park_map)  for name,row in data.iterrows():     folium.Marker(location=[row["latitude"], row["longitude"]]).add_to(marker_cluster) park_map.save('park_map2.html')

效果如下:

如何安裝Python繪制地圖神器folium

這樣能對各個局域停車場的數(shù)量在地圖上進行統(tǒng)計,將圖不斷放大以后,還可以顯示每個停車場的具體位置,非常方便。

到此,相信大家對“如何安裝Python繪制地圖神器folium”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

新聞名稱:如何安裝Python繪制地圖神器folium
本文鏈接:http://bm7419.com/article28/jceicp.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序、域名注冊、網站導航、全網營銷推廣移動網站建設、網站收錄

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網站制作