Wrong wind direction of vertcross
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- matplotlib, numpy, python
- Ambito
- data-visualization
Direzione di ricerca
Riproduci l’esempio usando vertcross, interplevel e matplotlib.quiver, quindi confronta le componenti della sezione trasversale con il grafico del vento orizzontale a 15 km. Inizia controllando la documentazione di vertcross e gli eventuali test o l’implementazione correlati; il lavoro è completato quando spieghi o correggi la discrepanza nella direzione e documenti un metodo di plotting verificato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Background
Hi, all,
I'm trying to plot the wind quiver on the crosssection. But, I find the wind direction is wrong. Here're the details.
Read data and vertcross
import numpy as np
from wrf import getvar, interplevel, ALL_TIMES, CoordPair, vertcross, to_np, latlon_coords
from netCDF4 import Dataset
import matplotlib.pyplot as plt
data_dir = '../data/wrfchem/wrfout/20200901/lnox_500/'
file = data_dir+'wrfout_d04_2020-09-01_05:00:00_subset'
ncfile = Dataset(file)
# set cross
start_lon = 118.6
end_lon = 119
start_lat = 32.1
end_lat = 31.7
start_point = CoordPair(lat=start_lat, lon=start_lon)
end_point = CoordPair(lat=end_lat, lon=end_lon)
# get vars
u = getvar(ncfile, 'ua')
v = getvar(ncfile, 'va')
w = getvar(ncfile, 'wa')
wspd = getvar(ncfile, 'uvmet_wspd_wdir')
dbz = getvar(ncfile, 'dbz')
z = getvar(ncfile, 'z', units='km')
# vertcross and subset to 0-17 km
cross_u = vertcross(u, z, wrfin=ncfile, start_point=start_point, end_point=end_point, latlon=True, meta=True).sel(vertical=slice(0, 17))
cross_v = vertcross(v, z, wrfin=ncfile, start_point=start_point, end_point=end_point, latlon=True, meta=True).sel(vertical=slice(0, 17))
cross_w = vertcross(w, z, wrfin=ncfile, start_point=start_point, end_point=end_point, latlon=True, meta=True).sel(vertical=slice(0, 17))
cross_dbz = vertcross(dbz, z, wrfin=ncfile, start_point=start_point, end_point=end_point, latlon=True, meta=True).sel(vertical=slice(0, 17))
cross_wspd = vertcross(wspd, z, wrfin=ncfile, start_point=start_point, end_point=end_point, latlon=True, meta=True).sel(vertical=slice(0, 17))
# get xlabels
coord_pairs = to_np(cross_dbz.coords["xy_loc"])
xticks = np.arange(coord_pairs.shape[0])
xlabels = [pair.latlon_str() for pair in to_np(coord_pairs)]
fig, ax = plt.subplots(figsize=(10, 6))
ax.set_xticks(xticks[::20])
ax.set_xticklabels(['(' +s.replace(',', '\n') + ')' for s in xlabels[::20]], fontsize=4) # rotation
# plot wind
xs = np.arange(0, cross_w.shape[-1], 1)
ys = to_np(cross_w.coords['vertical'])
step = 2
# plot dbz
m = ax.contourf(xs[::step],
ys[::step],
to_np(cross_dbz[::step, ::step]),
cmap='Reds'
)
q = ax.quiver(xs[::step],
ys[::step],
to_np(cross_u[::step, ::step]+cross_v[::step, ::step]),
to_np(cross_w[::step, ::step])
)
plt.colorbar(m, label='dBZ')
plt.savefig('./cross.jpg', dpi=300)
Result:

Wind interpolated to 15 km
# Get the lat/lon coordinates
lats, lons = latlon_coords(u)
zlevel = 15 # km
u_zlevel = interplevel(u, z, zlevel)
v_zlevel = interplevel(v, z, zlevel)
step = 10
fig, ax = plt.subplots(figsize=(10, 6))
q = plt.quiver(to_np(lons[::step,::step]), to_np(lats[::step,::step]),
to_np(u_zlevel[::step, ::step]), to_np(v_zlevel[::step, ::step])
)
qk = plt.quiverkey(q, 1, 1.05, 10, r'$10 m/s}$', labelpos='E')
plt.plot([start_lon, end_lon], [start_lat, end_lat], '-r')
plt.title('Wind at 15 km level')
plt.savefig('./zlev.jpg', dpi=300)

Problem
As you can see, the wind at the 15 km level should blow from the start point to the endpoint.
But, the 15 km wind in the crosssection is the opposite.
Is there anything wrong with my method?
Thanks in advance!
- Lingua principale
- Python
- Stelle
- 498
- Fork
- 178
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NCAR/wrf-python
-
NCAR/wrf-python#309 · 1 assegnatario ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
NCAR/wrf-python#307 · 5 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
NCAR/wrf-python#286 · 3 commenti ·
-
Windows builds and testing Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
NCAR/wrf-python#282 · 1 commento ·
-
PyPI releases Aperta
NCAR/wrf-python#274 · 5 commenti · 1 reazione · 1 assegnatario ·
Tutte le issue di NCAR/wrf-python
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
stephrobert/dsoxlab#238 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
sublimehq/package_control#1780 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
nwg-piotr/nwg-displays#145 ·