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

Python画出好看的地图基于folium

[复制链接]
" g7 O8 ^( [. p/ `# Y" g6 o: @1 r

Choropleth 等值线图

" _* U8 Y# d5 }8 u
import pandas as pd #读取数据% r: `* `! A8 m, G9 X' r from folium import Map,Choropleth,CircleMarker #用到的包( J# N' s3 K0 A" H {6 M6 V$ ~
/ w( S4 D( j; {$ d# {3 a
#包含省的中国地图json' }" `! `* w, y+ p china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json2 f( x+ ]% w; V# H #读取用到的面积数据& C: w8 K8 e2 ]8 }6 l0 e3 { datad = pd.read_csv(Desktop/square.csv,index_col=index): W9 c/ f/ n7 r1 G
5 v1 L8 o9 k' ~2 ]
) I4 n9 b; | G+ g
m=Map(tiles=Stamen Toner) #地图风格 % |, H) k0 a' Q9 I 5 M6 L1 B/ K7 m, ?* ~9 l8 @) Z8 a Choropleth(china_geo, #选择json + p$ n4 v5 O8 R8 o9 t1 d data = datad, #数据 7 y/ q+ {& c$ n& w1 h columns = [province,square], #列,第一个为key,第二个为value r' T9 z; T2 R9 X. c$ U; s key_on = feature.properties.name,#匹配到json; E+ F% N Q. B9 S fill_color = RdPu, #颜色6 b, Q) C5 m' z0 j3 A0 N: k: } fill_opacity = 0.8, #填充透明度 , B9 D" q' e* M+ R( c3 y line_opactity = 1, #线透明度 2 @0 ]' `* q, W ^, [ line_weight = 1, #线宽 ( `. n+ M$ M, n: z' e! Q legend_name = 面积 #图例 ( q& s2 x* \# p: ^: A 7 i+ ~' J, W; K+ S ).add_to(m)1 i) ?, A' h- Y. H: k' h" u& g# k CircleMarker(location = [39.907518, 116.397514], #坐标点$ l: G0 ]- B4 [0 O) D+ e3 W radius = 10, #半径 6 E( E5 `: @! ~( s# d. [ fill = True, #填充) h( n d3 H7 }; c popup = This is beijing, #弹窗 , _9 ?- U. E! U, U. W: l weight = 1 #circlemarker线宽 * X7 f/ F0 k8 J ).add_to(m) / T* [5 X' D: o0 l) ^% b# ~9 A m.fit_bounds(m.get_bounds()) * I2 p6 L. Q, f0 R3 }1 v m& S9 f! g5 Y' W c
# N1 s# h; w% c% O+ I
; `- v2 b* S2 c0 s- S, h+ E

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

* y( Q7 r. U. x6 |6 `7 s7 S, {& z

两个重要的网站

K* r; @7 ~6 E9 K2 F6 |/ E+ V

手动绘制geojson

4 b( R# i1 `$ a% C 0 _3 V. Y x B

目前更新的geojson

2 m0 H1 a; [ ~+ v: Y + r7 V4 C, ?5 {2 r

geojson格式

7 o/ M% q1 o( V% P' `8 h
{ ) ~) S+ {! i K+ d0 G/ ` "type": "FeatureCollection", 3 U3 @! `5 o1 `" ? "features": [2 [8 A& ]6 \, _) z- M3 B+ E$ B/ P { 6 X( P5 \' K+ g* S "properties": {"name": "Alabama"}, 6 ^7 O J4 ~6 U' B "id": "AL",& K d; r/ g8 H/ c) F& X "type": "Feature",+ @" y4 ] w) @+ o "geometry": {% T: Q: F& A) ~, q "type": "Polygon", # N# v' {4 l, I. S( Q$ z "coordinates": [[[-87.359296, 35.00118], ...]] 1 w( p$ V' f3 R! \' u } . R" i Z8 o' t Y3 d }, , @$ C) W8 K! `+ { { 8 g/ w7 W0 f$ \9 m* T "properties": {"name": "Alaska"},' N: Z) h/ F# P7 X6 I, T: w* ~ "id": "AK", 1 Y4 E* @- ^$ P2 R; o "type": "Feature", 9 J) q/ I. p" y2 l& C; a9 H "geometry": {$ |- R1 ~6 Z+ z, b7 j "type": "MultiPolygon",5 p5 m i/ x1 k5 n* ?* e "coordinates": [[[[-131.602021, 55.117982], ... ]]]8 N: V+ u8 C8 i% E# z% j } / M/ B' `" m* d }, + w! }( s" J2 @- a+ ?" F; @ ... ! G, n: a9 n8 v" C) } ] ) _* h8 `; p' e9 y2 M! {5 L) w( E } 0 v8 H& V. W1 O9 p
$ U- R, ^) `; H$ }, J% C8 ^0 b

读取本地的json文件

* G6 w. d1 m# |% Z3 O3 ~
f = open(zhengzhou.json) : J0 i X6 f) R z0 t3 m8 `9 z L: K t = json.load(f) & J9 T8 f/ a5 J: s' i- s
& p- c& t, H: @8 }; L" G. p6 b9 c

读取网络json

) ]6 B3 @9 M( y3 U% P' L6 Q, j
url = ( 3 p: o' h# P6 K "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"0 |8 H1 O j7 z3 x )0 @+ c% M. z) ~3 W* f us_states = f"{url}/us-states.json" ! o/ b% @& v* y7 n. w9 C% r. A! i2 [2 R5 }8 j& p geo_json_data = json.loads(requests.get(us_states).text)- V# \3 m! z3 q
* P1 ~5 q0 J5 c: m8 v; T. x6 h5 p y6 n6 h2 b. g! D, O: e" C2 H9 t& X% G9 n, t* T4 T2 q* [ 1 r4 E& S% G1 p' p' ?( I: h, F& [( c. B$ ]2 [+ K
回复

举报 使用道具

相关帖子

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