使用BaseMap繪制地圖它不香么


一 前言

使用baseMap繪制地圖簡單方便,使用BaseMap需要搭配其它庫進行使用常見的就是matplotlib; 讀完本篇,讀者將學會簡單的使用baseMap或世界地圖,國家地圖,省份甚至特定地區等等;如果作者文章不錯,隨手點贊關注謝謝,不要耍白嫖喲;

公眾號:知識追尋者

知識追尋者(Inheriting the spirit of open source, Spreading technology knowledge;)

二 BaseMap繪圖

地圖背景說明

  1. drawcoastlines():繪制海岸線。
  2. fillcontinents():為大陸內部着色(通過填充海岸線多邊形)
  3. drawcountries():繪制國家邊界。
  4. drawstates():繪制北美的州界。
  5. drawrivers():繪制河流。
  6. drawlsmask():繪制高分辨率海陸掩碼作為圖像,指定土地和海洋顏色。
  7. bluemarble():繪制一張NASA藍色大理石圖像作為地圖背景。
  8. shadedrelief():繪制一個陰影浮雕圖像作為地圖背景。
  9. etopo():繪制etopo浮雕圖像作為地圖背景。
  10. warpimage():使用abitrary圖像作為地圖背景。圖像必須是全球的,從國際數據線向東,南極向北,以緯度/經度坐標覆蓋世界。

2.1 arcgis REST API服務繪制圖像

Basemap 參數說明

  • llcrnrlon 經度下界
  • llcrnrlat 緯度下界
  • urcrnrlon 經度上界
  • urcrnrlat 緯度上界

arcgisimage 參數說明

  • server 遠程服務器地址
  • service 底圖類型
  • xpixels 縮放比例
  • dpi 分辨率
  • verbose 打印用於獲取遠程圖像的URL

service參數列表

http://server.arcgisonline.com/arcgis/rest/services

# -*- coding: utf-8 -*-
import warnings
warnings.filterwarnings('ignore')

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

map = Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=140,urcrnrlat=54)
map.arcgisimage(service='NatGeo_World_Map', xpixels = 1500, ypixels=None,dpi=120, verbose= True)
plt.show()

結果

2.2 繪制海岸線

drawcoastlines 參數說明

  • linewidth : 線寬度
  • linestyle : 設置線風格,參照matplotlib
  • color :顏色,參照matplotlib
  • antialiasing:抗鋸齒
  • axes 軸實例
  • zorder: 海岸線圖層位置
# -*- coding: utf-8 -*-
import warnings
warnings.filterwarnings('ignore')

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

map = Basemap()
# 國家陸地填充顏色,湖泊填充顏色
map.fillcontinents(color='coral',lake_color='aqua')
# 繪制海岸線
map.drawcoastlines(linewidth=0.5, linestyle='solid', color='k', antialiased=1, ax=None, zorder=None)
plt.show()

結果

2.3 繪制國家地圖

drawcountries 參數與海岸線類似,不贅述

drawcountries(linewidth=0.5,linestyle='solid',color='k',antialiased=1,ax=None,zorder=None)

# -*- coding: utf-8 -*-
import warnings
warnings.filterwarnings('ignore')

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

# 規定投影方法;設置中國地圖中部經緯度
map = Basemap(projection='ortho',
              lat_0=25, lon_0=105)
# 繪制地圖邊界,填充顏色 藍色; 設置線寬度
map.drawmapboundary(fill_color='aqua',linewidth=1.0)
# 陸地填充顏色,湖泊填充顏色
map.fillcontinents(color='coral',lake_color='aqua')
# 繪制國家
map.drawcountries()

plt.show()

結果

2.4繪制浮雕地圖

# -*- coding: utf-8 -*-
import warnings
warnings.filterwarnings('ignore')

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

map = Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=140,urcrnrlat=54,
             resolution='i', projection='cass', lat_0 = 25, lon_0 = 105)
# 浮雕圖像
map.etopo()
# 海岸線
map.drawcoastlines()
# 顯示
plt.show()

結果

2.5 繪制地圖帶有經緯度

# -*- coding: utf-8 -*-
import warnings
warnings.filterwarnings('ignore')

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

# 規定投影方法;設置中國地圖中部經緯度
map = Basemap(projection='ortho',
              lat_0=25, lon_0=105,
              width=25000000, height=25000000)
# 繪制地圖邊界,填充顏色 藍色; 設置線寬度
map.drawmapboundary(fill_color='aqua',linewidth=1.0)
# 陸地填充顏色,湖泊填充顏色
map.fillcontinents(color='coral',lake_color='aqua')
# 繪制國家
map.drawcountries()
# 設置經度
map.drawmeridians(range(0, 360, 20))
# 設置緯度
map.drawparallels(range(-90, 100, 10), dashes=[4, 2], color='r', zorder=0 )
plt.show()

結果

2.6 繪制美洲地圖

# -*- coding: utf-8 -*-
import warnings
warnings.filterwarnings('ignore')

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt


map = Basemap(width=12000000,height=9000000,
            rsphere=(6378137.00,6356752.3142),
            resolution='l',area_thresh=1000.,projection='lcc',
            lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
# 地圖邊界
map.drawmapboundary(fill_color='aqua')
# 陸地海洋填充
map.fillcontinents(color='#FF7F50', lake_color='#00BFFF')
# 國家
map.drawcountries()
# 美洲地圖
map.drawstates(color='0.5')

plt.show()

結果

2.7 繪制河流

# -*- coding: utf-8 -*-
import warnings
warnings.filterwarnings('ignore')

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt


map = Basemap(width=25000000, height=25000000,llcrnrlon=70,llcrnrlat=3,urcrnrlon=140,urcrnrlat=54,
             resolution='i', projection='cass', lat_0 = 25, lon_0 = 105)
# 地圖邊界
map.drawmapboundary(fill_color='aqua')
# 陸地填充
map.fillcontinents(color='coral', lake_color='aqua')
# 繪制國家
map.drawcountries()
# 繪制河流
map.drawrivers(color='#0000ff')

plt.show()

結果

三 參考連接

RGB 顏色對照 https://www.sioe.cn/yingyong/yanse-rgb-16/

basemap教程:https://basemaptutorial.readthedocs.io/en/latest/

matplotlib basemap教程 https://matplotlib.org/basemap/users/geography.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM