python地理 Python教程 地理視覺化

2021-10-11 12:57:42 字數 2075 閱讀 4885

matplotlib是python常用的資料繪製包,其繪圖功能強大;而basemap則是matplotlib的乙個子包,負責地圖繪製。本文簡單介紹如何利用該程式包繪製風向圖。具體操作如下:

匯入命令

1)設定工作環境並匯入程式包%cd "f:\\dropbox\\python"

import numpy as np

import matplotlib.pyplot as plt

import datetime

from mpl_toolkits.basemap import basemap, shiftgrid

from netcdf4 import dataset

3)設定時間並讀取資料yyyy=1993; mm=03; dd=14; hh=00

date = datetime.datetime(yyyy,mm,dd,hh)

urlbase=""

url=urlbase+"%04i/%04i%02i/%04i%02i%02i/pgbh00.gdas.%04i%02i%02i%02i.grb2" %\

(yyyy,yyyy,mm,yyyy,mm,dd,yyyy,mm,dd,hh)

data = dataset(url)

4)資料預處理latitudes = data.variables['lat'][::-1]

longitudes = data.variables['lon'][:].tolist()

slpin = 0.01*data.variables['pressure_msl'][:].squeeze()

slp[:,0:-1] = slpin[::-1]; slp[:,-1] = slpin[::-1,0]u = np.zeros((uin.shape[0],uin.shape[1]+1),np.float64)

u[:,0:-1] = uin[::-1]; u[:,-1] = uin[::-1,0]v = np.zeros((vin.shape[0],vin.shape[1]+1),np.float64)v[:,0:-1] = vin[::-1];

5)設定並繪製圖示m = basemap(resolution='c',projection='ortho',lat_0=60.,lon_0=-60.)fig1 = plt.figure(figsize=(8,10))

ax = fig1.add_axes([0.1,0.1,0.8,0.8])clevs = np.arange(960,1061,5)x, y = m(lons, lats)parallels = np.arange(-80.,90,20.)

meridians = np.arange(0.,360.,20.)cs1 = m.contour(x,y,slp,clevs,linewidths=0.5,colors='k',animated=true)

cs2 = m.contourf(x,y,slp,clevs,cmap=plt.cm.rdbu_r,animated=true)ugrid,newlons = shiftgrid(180.,u,longitudes,start=false)

vgrid,newlons = shiftgrid(180.,v,longitudes,start=false)

uproj,vproj,xx,yy = \

m.transform_vector(ugrid,vgrid,newlons,latitudes,31,31,returnxy=true,masked=true)

q = m.quiver(xx,yy,uproj,vproj,scale=700)qk = plt.quiverkey(q, 0.1, 0.1, 20, '20 m/s', labelpos='w')m.drawcoastlines(linewidth=1.5)

m.drawparallels(parallels)

m.drawmeridians(meridians)

cb = m.colorbar(cs2,"bottom", size="5%", pad="2%")

cb.set_label('hpa')

ax.set_title('slp and wind vectors '+str(date))

plt.show()

輸出影象如下

python例項教 Python例項教程

python 100例 01 題目 輸有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?python 100例 02 題目 企業發放的獎金根據利潤提成。python 100例 03 題目 乙個整數,它加上100和加上268後都是乙個完全平方數問該數是多少?python 100例 04...

python獲取地理位置天氣

使用ininfo獲取當前位置資訊,拼音位址 beijing ipinfo位址資訊獲取 參照註冊登入 github可以直接登入 獲取access token import ipinfo access token 1234567 handler ipinfo.gethandler access toke...

Python初識以及Windows安裝教程

一,python發展史 1989年由荷蘭人guido van rossum於1989年發明,第乙個公開發行版發行於1991年 granddaddy of python web frameworks,zope 1 was released in 1999 python 1.0 january 1994...