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

Python画出好看的地图基于folium

[复制链接]
, Y f& |: L( N

Choropleth 等值线图

0 S' l/ V8 a* w
import pandas as pd #读取数据 " z/ L% @, x+ E, R from folium import Map,Choropleth,CircleMarker #用到的包7 `- D" {. s+ @3 x ]+ x
9 U6 `# l9 K7 X3 C9 J
#包含省的中国地图json / W, |/ k0 p3 ?3 _- Z2 }( k9 e' l) U china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json, M; n7 N& o- ], ^ #读取用到的面积数据( E5 G! T# ]1 N: Q datad = pd.read_csv(Desktop/square.csv,index_col=index)9 ?* h; b3 b; h9 s5 i1 t
+ _1 f3 w: J' N0 G0 H$ l
4 p# Z0 Z- h7 Q; E8 j3 c
m=Map(tiles=Stamen Toner) #地图风格 - m, f8 h2 ~3 H8 e: H7 a( c/ B' }3 Y H- s: Y! \* z5 y! j# s Choropleth(china_geo, #选择json3 j* ]/ H6 _" D* T6 ?4 o data = datad, #数据8 I# B2 T) Y y3 z w columns = [province,square], #列,第一个为key,第二个为value$ D9 g" v* ~6 E% [1 l3 n( ] key_on = feature.properties.name,#匹配到json . l+ y9 W/ Q) O& Z0 K0 a7 s+ i8 q fill_color = RdPu, #颜色- D1 X, H0 y. C5 E; \5 h# q fill_opacity = 0.8, #填充透明度 # _8 a, R- i# r) A: O. W+ s: m% l* b- ] line_opactity = 1, #线透明度/ x+ w0 A- ?! F line_weight = 1, #线宽. Q( q4 h( _: |% t8 w4 ]/ } legend_name = 面积 #图例: m. u. V3 v' c* {. X1 R ' V# o, u% l- P: ?" w0 _ ).add_to(m) & ]% ?3 ^2 W0 |& ` CircleMarker(location = [39.907518, 116.397514], #坐标点% |7 ~) w% R- w" ?: f1 o# s radius = 10, #半径" s4 Q, U& p8 j, l' P8 j7 n fill = True, #填充 ! L8 A+ Q- G7 e3 \ popup = This is beijing, #弹窗# x6 l6 v ]3 a: F# j {) j weight = 1 #circlemarker线宽 2 l K& z* m7 H+ E ).add_to(m), L' }4 K8 J8 E4 n. L7 N m.fit_bounds(m.get_bounds()) ' q; a/ p! T! ^6 B3 y( m' b m( M. T1 j) y, P8 e! U
0 p$ B% Q( w7 J2 O
- w' @6 Z) q' X

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

/ F# M3 u3 A: _; @/ i6 A, u" g

两个重要的网站

3 X5 X; i' U& H, w+ l

手动绘制geojson

8 H. K7 D% J K- t" i& j! L 4 d7 I$ D5 H* c# C/ L7 o

目前更新的geojson

! Q6 d/ ?1 h' g8 T0 n- m" H [) Z, K& p& r# `! ?, R& x

geojson格式

3 ?4 u+ x( R5 w% Z6 u/ N
{; Y7 ]8 Q4 Q% l3 p$ R) g2 M "type": "FeatureCollection",1 n* R! L' x& r: G& b2 o. R "features": [8 P* P3 \- M; Y, L- w" W { ' E& W& ]5 o7 G x2 i "properties": {"name": "Alabama"},$ }) O8 z8 b+ G# `! m3 A "id": "AL",# s6 Q. v, n4 n0 V "type": "Feature",% ]# f. A1 o0 Z* ]6 x "geometry": {5 v4 a9 R2 r4 d2 P5 j$ t "type": "Polygon",, k9 X2 X: ]1 o, ? { "coordinates": [[[-87.359296, 35.00118], ...]]# S8 h' e% U( M }) z; ~! R! H! Q% ? }, 6 h6 S; C8 ]' S( P0 f { 3 l- ~3 r7 B3 \ ^ h Q "properties": {"name": "Alaska"},' H* n# j R4 S1 R1 M. p1 s "id": "AK", - S: D4 L7 L' a; `( D) A( W7 d& W "type": "Feature",6 b" u! V% e; t- u( ~; [8 Z "geometry": { $ z7 ~4 Q$ [& B% n4 } "type": "MultiPolygon",. e& C& i1 N% ~8 B9 K# y "coordinates": [[[[-131.602021, 55.117982], ... ]]] , F' l$ x, k' p6 q; I } 2 g) G, y- h, |5 W4 Q* U' Y8 F1 T }, 4 a9 B4 P2 F4 e* }; f ...- ~9 o, j8 ~! y, c ]0 v1 K4 R0 F( I8 l3 m } 3 W) s" U5 O( F
4 I3 Q6 B; o$ j, S* l

读取本地的json文件

7 r. X0 ^# @' w; @
f = open(zhengzhou.json)" U5 ?: V: v& C- } t = json.load(f)% r' a, c1 j+ E* o
, w: E; a H& H1 Z

读取网络json

6 _* T h/ g9 e4 ^ \' |
url = ( 4 M2 [' i, \0 j/ J0 }' q" }% |" Q "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"$ g0 D O$ @3 E0 @+ [6 G9 f* \6 G )" X. }# i' |: V! q+ W0 |7 P! U us_states = f"{url}/us-states.json" ; P2 A: I! D. s # \# W/ a+ x n2 _7 z" j- J, e5 Q geo_json_data = json.loads(requests.get(us_states).text)6 V& d. ]. J: v7 S
0 L. ?- @9 F2 b! ^6 j8 e9 X% h2 [ 1 b _ I2 D) D* }/ M1 i9 y& n8 b / a; b+ u* j) S0 g# {6 A$ ~9 [; r$ ?2 J 1 g, k5 }: b; A9 Z# Y6 f$ ^. j
回复

举报 使用道具

相关帖子

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