收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

Python画出好看的地图基于folium

[复制链接]
?; b; p P3 y' x

Choropleth 等值线图

, U8 K) X* P: J w0 U/ K o
import pandas as pd #读取数据" @6 T0 N( x$ q2 C from folium import Map,Choropleth,CircleMarker #用到的包 0 D' D! r, p8 q% }; F0 |* Q
0 O- \! H0 {/ W* z
#包含省的中国地图json # [% t, P8 N6 {8 A, M china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json5 e6 d7 y" d f' a5 D% l3 H* K r #读取用到的面积数据 . L0 Q3 M: ~1 l+ k* Q* @ datad = pd.read_csv(Desktop/square.csv,index_col=index) " O' W) B4 ?1 F9 ^* F# [; [
' x. ^1 |/ N0 [+ p# Y
: A, Y7 L9 n) ~( E! Q
m=Map(tiles=Stamen Toner) #地图风格, C- n8 u0 M& G4 _0 L0 j! Z j# h. Z& N2 `; N: _4 i Choropleth(china_geo, #选择json 0 }' R' G. h: t9 @5 b data = datad, #数据" v7 M6 y& M& i1 R% O7 X columns = [province,square], #列,第一个为key,第二个为value % M+ f6 X5 e) ? key_on = feature.properties.name,#匹配到json ; e% v+ Y) A+ x' Y fill_color = RdPu, #颜色 ! R+ `- v) g5 P$ U# e9 M2 x+ d fill_opacity = 0.8, #填充透明度 1 j& K6 ?9 l1 f2 v line_opactity = 1, #线透明度! G G* v$ O- O" k& @: p0 u line_weight = 1, #线宽 5 A& X$ Q! ^3 Q5 U k$ } legend_name = 面积 #图例 ( x. V$ A3 U* g4 t0 _( U' g f6 [) f; v6 U) K0 | ).add_to(m) & i% v( k% n9 V- }7 J CircleMarker(location = [39.907518, 116.397514], #坐标点 * S. i- s5 h- i$ V1 O, |( U) c8 Q4 Q radius = 10, #半径 0 X, C2 f1 V! O0 u# ^5 t% n: [. q fill = True, #填充- |( U7 D4 t0 K) Z6 O popup = This is beijing, #弹窗; e2 [) h ^8 Q weight = 1 #circlemarker线宽 ) r o5 q1 V8 w/ T, Y ).add_to(m) 6 E" d% S0 x& T$ _1 v8 j m.fit_bounds(m.get_bounds())1 Z# f% ~4 [$ D# h. {: l m ! H4 d9 r% A- m: ^- E: A; L9 |$ K/ f; g
( n& \( A1 X, i2 { R
- V4 J! s: F2 @

数据地址: square.rar - 蓝奏云

6 {# N7 Z' F; D1 Q* o

两个重要的网站

) K! ^1 t0 y+ U/ f( S

手动绘制geojson

1 D; Q& d, y7 V b7 X9 z ( K2 K5 \. o4 Y( I5 H2 f1 r

目前更新的geojson

: n" e4 a1 G; s : i# Z/ n3 _+ q' X8 h" d' f+ m4 v

geojson格式

' k( O/ ^8 q8 K
{- {' p7 D5 M# M "type": "FeatureCollection", # s( A6 y7 G6 r; A6 Q8 y, j "features": [ 0 A9 ]1 n' ]& H" U& H; k { ) G: u/ P: I8 H" A "properties": {"name": "Alabama"}, 3 g) d# Z6 C$ C2 l' c' [# j3 h "id": "AL", * \2 k& q; | g3 `8 P, n2 ~5 b: i* v8 X "type": "Feature",* e9 S1 e V( P a0 `7 Q, O+ o; l "geometry": { " W6 ]7 [# I, D1 N& Z m& o. ] "type": "Polygon",4 e$ S: P/ [$ [0 g8 Y "coordinates": [[[-87.359296, 35.00118], ...]]7 T# I! u' F( d/ S7 ^- f' B4 | }* e* d( f) c1 M; t3 ^- b0 j },- Z/ U3 h. y1 _" J" S( A7 @% i { / _& P& o$ S9 z( B6 R% r" { "properties": {"name": "Alaska"}, . E: D9 ]6 X6 [4 I* H "id": "AK",' E5 J. ]& i& N "type": "Feature"," X6 K6 D) T1 a: J4 F "geometry": {1 v2 y2 v/ O2 I; \; M* h J# Y "type": "MultiPolygon", + h; @, ^, R8 z% K# F9 N "coordinates": [[[[-131.602021, 55.117982], ... ]]]4 h3 \( W; m+ t& L: ] } 5 N8 Y( _8 i: D! T },! s6 N; X, z; s1 I/ K ...5 Q+ M5 y4 x" e7 X! _6 ` ] G+ k, A$ ] R/ p1 M6 V } 7 N* l u* c3 p8 ^1 W, i7 |! @+ @
. X1 z% e% r* x2 q' @1 B

读取本地的json文件

; ^' W0 c/ W5 M& c, ]' l3 A
f = open(zhengzhou.json): u/ B+ R( y# y, `* G2 P' A% l t = json.load(f)4 F# s C6 j& H
. j+ w' A3 e7 m

读取网络json

5 b+ x& ?; x& j) o; I
url = ( ! R% O K9 M4 L) O8 B6 ^- g4 f "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data" { W5 @2 I+ g0 n" T1 ?6 ?. o/ L )5 M5 Y& a/ G8 U! i us_states = f"{url}/us-states.json"' M: p* X, f# z+ |" I1 i 0 F* G" W6 K" E! ?+ N geo_json_data = json.loads(requests.get(us_states).text) ( ?, S2 j6 l% f
0 d+ O: g) J: e( S4 L' @/ a8 B x- R7 {2 P( s4 r0 d$ N. a( E, |- G2 }0 n : h1 W+ r* [# m* |7 S6 F ! G0 u1 t m0 t6 h5 Z/ k
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
华德地毯
活跃在前天 10:14
快速回复 返回顶部 返回列表