如何利用Python快速繪制海報級別地圖詳解_第1頁
如何利用Python快速繪制海報級別地圖詳解_第2頁
如何利用Python快速繪制海報級別地圖詳解_第3頁
如何利用Python快速繪制海報級別地圖詳解_第4頁
如何利用Python快速繪制海報級別地圖詳解_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第如何利用Python快速繪制海報級別地圖詳解基于Python中諸如matplotlib等功能豐富、自由度極高的繪圖庫,我們可以完成各種極富藝術感的可視化作品,關于這一點我在系列文章在模仿中精進數(shù)據(jù)可視化中已經(jīng)帶大家學習過很多案例了。

而今天我要給大家介紹的這個Python庫prettymaps非常的有趣,基于它,我們只需要簡單的代碼就可以對地球上給定坐標和范圍的任意地區(qū)進行地圖可視化。

2利用prettymaps快速制作海報級地圖

遺憾的是,prettymaps暫時還不能通過pip或conda直接進行安裝,但可以利用pip配合git從源碼倉庫進行安裝,對于國內(nèi)的用戶來說,可以使用下面的語句從github的鏡像地址快速安裝:

pipinstallgit+/marceloprates/prettymaps.git

安裝完成后,如果下面的語句執(zhí)行無誤,那么恭喜你已經(jīng)安裝完成:

fromprettymapsimport*

2.1prettymaps的幾種使用方式

prettymaps無需用戶自行準備數(shù)據(jù),會根據(jù)用戶設定的坐標和范圍大小來自動從OpenStreetMap上獲取相應范圍內(nèi)的矢量數(shù)據(jù)作為繪圖素材,主要有以下幾種使用方式:

2.1.1圓形模式

prettymaps中最簡單的繪圖模式為圓形模式,我們只需要傳入中心點經(jīng)緯度坐標,以及半徑范圍(單位:米)即可,下面的例子來自官方示例程序,我將其地點換成以上海外灘為中心向外2500米范圍:

fromprettymapsimport*

frommatplotlibimportpyplotasplt

#創(chuàng)建圖床

fig,ax=plt.subplots(figsize=(12,12),constrained_layout=True)

layers=plot(

(31.23346,121.492154),#圓心坐標,格式:(緯度,經(jīng)度)

radius=2500,#半徑

ax=ax,#綁定圖床

layers={

'perimeter':{},#控制繪圖模式,{}即相當于圓形繪圖模式

#下面的參數(shù)用于定義從OsmStreetMap選擇獲取的矢量圖層要素,不了解的無需改動照搬即可

'streets':{

'custom_filter':'["highway"~"motorway|trunk|primary|secondary|tertiary|residential|service|unclassified|pedestrian|footway"]',

'width':{

'motorway':5,

'trunk':5,

'primary':4.5,

'secondary':4,

'tertiary':3.5,

'residential':3,

'service':2,

'unclassified':2,

'pedestrian':2,

'footway':1,

'building':{'tags':{'building':True,'landuse':'construction'},'union':False},

'water':{'tags':{'natural':['water','bay']}},

'green':{'tags':{'landuse':'grass','natural':['island','wood'],'leisure':'park'}},

'forest':{'tags':{'landuse':'forest'}},

'parking':{'tags':{'amenity':'parking','highway':'pedestrian','man_made':'pier'}}

#下面的參數(shù)用于定義OpenStreetMap中不同矢量圖層的樣式,嫌麻煩的直接照抄下面的官方示例即可

drawing_kwargs={

'background':{'fc':'#F2F4CB','ec':'#dadbc1','hatch':'ooo...','zorder':-1},

'perimeter':{'fc':'#F2F4CB','ec':'#dadbc1','lw':0,'hatch':'ooo...','zorder':0},

'green':{'fc':'#D0F1BF','ec':'#2F3737','lw':1,'zorder':1},

'forest':{'fc':'#64B96A','ec':'#2F3737','lw':1,'zorder':1},

'water':{'fc':'#a1e3ff','ec':'#2F3737','hatch':'ooo...','hatch_c':'#85c9e6','lw':1,'zorder':2},

'parking':{'fc':'#F2F4CB','ec':'#2F3737','lw':1,'zorder':3},

'streets':{'fc':'#2F3737','ec':'#475657','alpha':1,'lw':0,'zorder':3},

'building':{'palette':['#FFC857','#E9724C','#C5283D'],'ec':'#2F3737','lw':.5,'zorder':4},

osm_credit={'color':'#2F3737'}

#導出圖片文件

plt.savefig('上海外灘-圓形模式.png',dpi=500)

2.1.2圓角矩形模式

除了上述的圓形模式之外,prettymaps中還可以使用圓角矩形模式,同樣需要定義中心點坐標和半徑,接著為參數(shù)layers下的每個鍵值對添加鍵值對{'circle':False,'dilate':圓角半徑}即可,其中圓角半徑為數(shù)值型,這次我們換一個地方,以故宮為例,半徑選擇600米:

#創(chuàng)建圖床

fig,ax=plt.subplots(figsize=(12,12),constrained_layout=True)

dilate=100

layers=plot(

(39.91645697864148,116.39077532493388),#圓心坐標,格式:(緯度,經(jīng)度)

radius=600,#半徑

ax=ax,#綁定圖床

layers={

'perimeter':{'circle':False,'dilate':dilate},#控制繪圖模式,{}即相當于圓形繪圖模式

#下面的參數(shù)用于定義從OsmStreetMap選擇獲取的矢量圖層要素,不了解的無需改動照搬即可

'streets':{

'custom_filter':'["highway"~"motorway|trunk|primary|secondary|tertiary|residential|service|unclassified|pedestrian|footway"]',

'width':{

'motorway':5,

'trunk':5,

'primary':4.5,

'secondary':4,

'tertiary':3.5,

'residential':3,

'service':2,

'unclassified':2,

'pedestrian':2,

'footway':1,

'circle':False,'dilate':dilate

'building':{'tags':{'building':True,'landuse':'construction'},'union':False,'circle':False,'dilate':dilate},

'water':{'tags':{'natural':['water','bay']},'circle':False,'dilate':dilate},

'green':{'tags':{'landuse':'grass','natural':['island','wood'],'leisure':'park'},'circle':False,'dilate':dilate},

'forest':{'tags':{'landuse':'forest'},'circle':False,'dilate':dilate},

'parking':{'tags':{'amenity':'parking','highway':'pedestrian','man_made':'pier'},'circle':False,'dilate':dilate}

#下面的參數(shù)用于定義OpenStreetMap中不同矢量圖層的樣式,嫌麻煩的直接照抄下面的官方示例即可

drawing_kwargs={

'background':{'fc':'#F2F4CB','ec':'#dadbc1','hatch':'ooo...','zorder':-1},

'perimeter':{'fc':'#F2F4CB','ec':'#dadbc1','lw':0,'hatch':'ooo...','zorder':0},

'green':{'fc':'#D0F1BF','ec':'#2F3737','lw':1,'zorder':1},

'forest':{'fc':'#64B96A','ec':'#2F3737','lw':1,'zorder':1},

'water':{'fc':'#a1e3ff','ec':'#2F3737','hatch':'ooo...','hatch_c':'#85c9e6','lw':1,'zorder':2},

'parking':{'fc':'#F2F4CB','ec':'#2F3737','lw':1,'zorder':3},

'streets':{'fc':'#2F3737','ec':'#475657','alpha':1,'lw':0,'zorder':3},

'building':{'palette':['#FFC857','#E9724C','#C5283D'],'ec':'#2F3737','lw':.5,'zorder':4},

osm_credit={'color':'#2F3737'}

#導出圖片文件

plt.savefig('北京故宮-圓角矩形模式.png',dpi=500)

2.1.3添加文字內(nèi)容

有了這樣美觀大方的藝術地圖,我們還可以基于matplotlib中自定義字體的方法,在地圖上添加標注信息,仍然以上海外灘為例,我們利用外部的書法字體,在正中心繪制文字標注信息:

importmatplotlib.font_managerasfm

#創(chuàng)建圖床

fig,ax=plt.subplots(figsize=(12,12),constrained_layout=True)

layers=plot(

(31.23346,121.492154),#圓心坐標,格式:(緯度,經(jīng)度)

radius=2500,#半徑

ax=ax,#綁定圖床

layers={

'perimeter':{},#控制繪圖模式,{}即相當于圓形繪圖模式

#下面的參數(shù)用于定義從OsmStreetMap選擇獲取的矢量圖層要素,不了解的無需改動照搬即可

'streets':{

'custom_filter':'["highway"~"motorway|trunk|primary|secondary|tertiary|residential|service|unclassified|pedestrian|footway"]',

'width':{

'motorway':5,

'trunk':5,

'primary':4.5,

'secondary':4,

'tertiary':3.5,

'residential':3,

'service':2,

'unclassified':2,

'pedestrian':2,

'footway':1,

'building':{'tags':{'building':True,'landuse':'construction'},'union':False},

'water':{'tags':{'natural':['water','bay']}},

'green':{'tags':{'landuse':'grass','natural':['island','wood'],'leisure':'park'}},

'forest':{'tags':{'landuse':'forest'}},

'parking':{'tags':{'amenity':'parking','highway':'pedestrian','man_made':'pier'}}

#下面的參數(shù)用于定義OpenStreetMap中不同矢量圖層的樣式,嫌麻煩的直接照抄下面的官方示例即可

drawing_kwargs={

'background':{'fc':'#F2F4CB','ec':'#dadbc1','hatch':'ooo...','zorder':-1},

'perimeter':{'fc':'#F2F4CB','ec':'#dadbc1','lw':0,'hatch':'ooo...','zorder':0},

'green':{'fc':'#D0F1BF','ec':'#2F3737','lw':1,'zorder':1},

'forest':{'fc':'#64B96A','ec':'#2F3737','lw':1,'zorder':1},

'water'

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論