在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

教你們如何用 Python 快速制作海報級地圖附代碼

Linux愛好者 ? 來源:CSDN技術社區 ? 作者:籠中小夜鶯 ? 2021-10-09 11:36 ? 次閱讀

1 簡介

基于Python中諸如matplotlib等功能豐富、自由度極高的繪圖庫,我們可以完成各種極富藝術感的可視化作品,關于這一點我在系列文章在模仿中精進數據可視化中已經帶大家學習過很多案例了。

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

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

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

pipinstallgit+https://hub.fastgit.org/marceloprates/prettymaps.git

安裝完成后,如果下面的語句執行無誤,那么恭喜你已經安裝完成:

fromprettymapsimport*

2.1 prettymaps的幾種使用方式

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

2.1.1 圓形模式

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

fromprettymapsimport*
frommatplotlibimportpyplotasplt

#創建圖床
fig,ax=plt.subplots(figsize=(12,12),constrained_layout=True)

layers=plot(
(31.23346,121.492154),#圓心坐標,格式:(緯度, 經度)
radius=2500,#半徑
ax=ax,#綁定圖床
layers={
'perimeter':{},#控制繪圖模式,{}即相當于圓形繪圖模式
#下面的參數用于定義從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'}}
},
#下面的參數用于定義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中還可以使用「圓角矩形模式」,同樣需要定義中心點坐標和半徑,接著為參數layers下的每個鍵值對添加鍵值對{'circle': False, 'dilate': 圓角半徑}即可,其中圓角半徑為數值型,這次我們換一個地方,以故宮為例,半徑選擇600米:

#創建圖床
fig,ax=plt.subplots(figsize=(12,12),constrained_layout=True)

dilate=100

layers=plot(
(39.91645697864148,116.39077532493388),#圓心坐標,格式:(緯度, 經度)
radius=600,#半徑
ax=ax,#綁定圖床
layers={
'perimeter':{'circle':False,'dilate':dilate},#控制繪圖模式,{}即相當于圓形繪圖模式
#下面的參數用于定義從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}
},
#下面的參數用于定義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 添加文字內容

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

importmatplotlib.font_managerasfm

#創建圖床
fig,ax=plt.subplots(figsize=(12,12),constrained_layout=True)

layers=plot(
(31.23346,121.492154),#圓心坐標,格式:(緯度, 經度)
radius=2500,#半徑
ax=ax,#綁定圖床
layers={
'perimeter':{},#控制繪圖模式,{}即相當于圓形繪圖模式
#下面的參數用于定義從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'}}
},
#下面的參數用于定義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':'#2F373700'}
)

#添加文字標注
ax.text(
0.5,0.5,
'外灘,上海',
zorder=6,
ha='center',
va='center',
fontsize=120,
fontproperties=fm.FontProperties(fname='FZZJ-HLYHXSJW.TTF'),
transform=ax.transAxes
)

#導出圖片文件
plt.savefig('上海外灘-添加文字標注.png',dpi=500)

你可以找到你關注地點的經緯度坐標,盡情地繪制出各種藝術地圖作品,譬如下面這些地標:

編輯:jq
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4809

    瀏覽量

    68826
  • python
    +關注

    關注

    56

    文章

    4801

    瀏覽量

    84883

原文標題:用 Python 快速制作海報級地圖

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    從《自動駕駛地圖數據規范》聊高精地圖在自動駕駛中的重要性

    自動駕駛地圖作為L3及以上自動駕駛技術的核心基礎設施,其重要性隨著智能駕駛技術的發展愈發顯著?!蹲詣玉{駛地圖數據規范》(DB11/T 2041-2022)由北京市規劃和自然資源委員會制定,旨在
    的頭像 發表于 01-05 19:24 ?1608次閱讀
    從《自動駕駛<b class='flag-5'>地圖</b>數據規范》聊高精<b class='flag-5'>地圖</b>在自動駕駛中的重要性

    使用Python進行串口通信的案例

    python復制代碼 import serialimport time # 配置串口參數serial_port = '/dev/ttyUSB0' # 在Windows上可能是 'COM3' 或其他類
    的頭像 發表于 11-22 09:11 ?331次閱讀

    對比Python與Java編程語言

    Python與Java都是目前非常流行的編程語言,它們各有其獨特的優勢和適用場景。以下是對這兩種編程語言的對比: 一、語法和易用性 Python 語法簡潔,代碼更易讀,非常適合初學者。 動態類型系統
    的頭像 發表于 11-15 09:31 ?382次閱讀

    使用Python進行圖像處理

    下面是一個關于使用Python在幾行代碼中分析城市輪廓線的快速教程。
    的頭像 發表于 11-07 10:14 ?259次閱讀
    使用<b class='flag-5'>Python</b>進行圖像處理

    電子地圖的主要功能與應用

    電子地圖,即數字地圖,是利用計算機技術,以數字方式存儲和查閱的地圖。它不僅繼承了傳統紙質地圖的基本功能,還通過現代科技手段實現了諸多創新應用。以下是電子
    的頭像 發表于 09-12 11:18 ?2240次閱讀
    電子<b class='flag-5'>地圖</b>的主要功能與應用

    pytorch和python的關系是什么

    ,PyTorch已經成為了一個非常受歡迎的框架。本文將介紹PyTorch和Python之間的關系,以及它們在深度學習領域的應用。 Python簡介 Python是一種高級、解釋型、通用的編程語言,由Guido van Rossu
    的頭像 發表于 08-01 15:27 ?2135次閱讀

    何用代碼在運行的時候設置程序防止被讀出?

    何用代碼在運行的時候設置程序防止被讀出
    發表于 06-03 07:24

    學鴻蒙的1萬個理由,北京中關村現大幅鴻蒙海報

    五一假期以來,北京中關村附近多個地鐵站、公交站出現大幅鴻蒙海報。據統計,不止中關村,北京杭州兩地清華、北大、浙江大學等多所高校附近也掛上了巨幅鴻蒙海報。 學鴻蒙,突破自我,Get職場”星“技能;學
    發表于 05-08 20:31

    百度開放車道地圖數據,助力高級駕駛與無人駕駛

    5月1日期,百度地圖將向高級輔助駕駛行業提供全量車道地圖數據(LD地圖)。該數據已經覆蓋全國360個地級市及超過360萬公里的高速公路及城市道路。值得關注的是,該LD輕圖已通過相關車
    的頭像 發表于 04-30 16:54 ?1327次閱讀

    鴻蒙開發實例【使用高德地圖鴻蒙SDK】(一)

    使用高德地圖鴻蒙SDK的快速入門指南。
    的頭像 發表于 03-22 16:59 ?879次閱讀
    鴻蒙開發實例【使用高德<b class='flag-5'>地圖</b>鴻蒙SDK】(一)

    教你一招,簡化儀器Python編程控制!

    許多行業的工程師都使用自動化來擴展其測試儀器的功能,而大多是選擇免費的編程語言——Python來完成。作為適用于自動化的主要編程語言,Python具備許多顯著優勢
    的頭像 發表于 03-15 14:31 ?2476次閱讀
    <b class='flag-5'>教你</b>一招,簡化儀器<b class='flag-5'>Python</b>編程控制!

    基于Python地圖繪制教程

    本文將介紹通過Python繪制地形圖的方法,所需第三方Python相關模塊包括 rasterio、geopandas、cartopy 等,可通過 pip 等方式安裝。
    的頭像 發表于 02-26 09:53 ?1275次閱讀
    基于<b class='flag-5'>Python</b>的<b class='flag-5'>地圖</b>繪制教程

    谷歌升級Bard AI聊天機器人為Gemini,新增Python代碼編輯功能

     此外,谷歌表示,接下來數個月內,Gemini Advanced 計劃會加入更多新功能,如支持更為詳盡的上下文信息、增強多模態交互性以及完善編程功能。據谷歌公開更新,付費用戶可用 Gemini 界面直接編輯和執行 Python 代碼,有助于
    的頭像 發表于 02-20 15:47 ?631次閱讀

    【鴻蒙千帆起】高德地圖攜手HarmonyOS NEXT,開啟智能出行新篇章

    監測工具等,有效提升了鴻蒙原生版高德地圖的用戶體驗。 例如,當 C++這樣的多線程語言去調用 JS 或者 ArkTS 等單線程語言時,偶發性線程調用崩潰問題隱藏較深,通過審查代碼的?式難以發現,極易
    發表于 02-02 11:09

    Python智能家居系統代碼介紹

    Python智能家居系統是一種基于Python編程語言開發的智能家居控制系統,在現代家庭中得到了越來越廣泛的應用。本文將詳細介紹Python智能家居系統的代碼實現,包括系統的結構與功能
    的頭像 發表于 01-25 09:46 ?1416次閱讀
    主站蜘蛛池模板: 99插插| 酒色激情网| 欧美精品久久天天躁| 国产乱辈通伦影片在线播放| 日本大片免a费观看在线| 亚洲色图狠狠干| 亚洲free| yy肉戏多纯黄的小说| 一色屋免费视频| 天天性视频| 欧美一级日韩一级亚洲一级| 激情综合亚洲| 国产你懂| 天天操操操操操操| 大量国产后进翘臀视频| 中文字幕一区视频| 888午夜不卡理论久久| 亚洲精品成人网| 亚洲欧美日韩一区| 在线观看免费视频网站色| 热re99久久精品国产99热| 直接在线观看的三级网址| 亚洲 自拍 欧美 综合| 日本理论在线| 国产玖玖| 奇米影视777欧美在线观看| 欧美视频图片| 黄网站视频| 男人操女人视频在线观看| 亚洲成av人片在线观看无码| 亚洲综合色一区二区三区小说| 色多多网| 欧美人与动性行为网站免费| 欧美黄色一级视频| 大香交伊人| 亚洲 欧美 日韩 丝袜 另类| 九九热在线视频观看| 女人又色又爽又黄| 亚洲一区中文字幕在线观看| 婷婷色站| 欧美午夜激情影院|