Questão:
Traçando farpas de vento em python
Brian B.
2015-12-02 14:07:22 UTC
view on stackexchange narkive permalink

Estou tentando plotar farpas de vento no mapa base e tenho dois arquivos netCDF separados. Aqui está o que estou tentando produzir, ou algo parecido: enter image description here Como leio um uwnd variável em um arquivo netCDF em python?

  from mpl_toolkits.basemap import Basemapfrom netCDF4 import Dataset, date2indeximport numpy como npimport matplotlib.pyplot as pltfrom datetime import datetimefrom IPython.display import Imagefrom IPython.display import Imagefrom IPython.pyplot. exibir importar HTML importar netCDF4 as ncplt.clf () nc_file = '042711_V.nc'nc_file2 =' 042711_U.nc'V = Conjunto de dados (nc_file, modo = 'r') U = Conjunto de dados (nc_file2, modo = 'r') imprimir U.variables  

Isso verifica se uwnd é realmente uma variável, mas por que não lê?

  OrderedDict ([(u'lat ', <type 'netCDF4._netCDF4.Variable'>float32 unidades lat (lat): degrees_north actual_range: [90. -90.] Long_name: Latitudeunlimited dimensões: current shape = (73,) preenchendo), (u'lon', <type 'netCDF4 ._netCDF4.Variable'>floa t32 unidades lon (lon): degrees_east long_name: Longitude actual_range: [0. 357.5] dimensões ilimitadas: forma atual = (144,) preenchendo), (u'time ', <type' netCDF4._netCDF4.Variable'>float64 tempo (tempo ) unidades: horas desde 1800-1-1 00: 00: 0.0 long_name: Tempo real_range: [71870952. 71870952.] delta_t: 0000-01-00 00: 00: 00 dimensões ilimitadas: forma da corrente do tempo = (1,) preenchendo) , (u'uwnd ', <type' netCDF4._netCDF4.Variable'>float32 uwnd (time, lat, lon) long_name: u wind valid_range: [-99999. 99999.] intervalo_real: [-26.84999084 377.20001221] unidades: m / s add_offset: 0,0 fator_escala: 1,0 valor ausente: -9,96921e + 36 precisão: 99 dígito menos significativo: 99 var_desc: u conjunto de dados do vento: CDC Derived NCEP Reanalysis Nível de pressão dos produtos: 500mb estatística: Composite parent_stat: Otherunlimited dimensões: timecurrent shape = (1, 73, 144) fill off)]) KeyError: 'uwnd'

Estou tentando plotar alguns widnbarbs no mapa. consegui ler a hora, longitude e latitude, mas o que significa uwnd e como faço para lê-lo no formato numpy?

Aqui está o site que encontrei sobre como ler netCDF arquivos: http://www.hydro.washington.edu/~jhamman/hydro-logic/blog/2013/10/12/plot-netcdf-data/

Se você puder fazer um link para os arquivos netcdf, posso mostrar um exemplo mais completo.
http://meta.earthscience.stackexchange.com/questions/1513/are-programming-questions-on-topic
Um responda:
casey
2015-12-03 06:15:28 UTC
view on stackexchange narkive permalink

Sua variável uwnd contém flutuadores de 32 bits e tem forma (1,73,144) correspondendo a tempo, lat, lon e está localizada no Conjunto de dados que você chamou de 'U '.

Uma maneira de colocar isso em uma matriz numpy é:

  uwind = np.zeros ((lat, lon), np.float) uwind = U. variáveis ​​['uwnd'] [1,:,:]  

A primeira linha define o tamanho do array uwind, que é útil do ponto de vista de desempenho e a segunda carrega os dados do tempo 1 na matriz. lat e lon acima são as dimensões de sua grade 73 e 144 e np é o módulo numpy .

O vento u é apenas o componente leste-oeste do vento. O componente norte-sul estará na variável v vento. Você precisará de ambos para traçar o vento. Para plotar as farpas, você precisará configurar matrizes para suas coordenadas xey que dependerão de lat, lon e possivelmente de sua projeção de mapa. uma vez que você tenha um array x e y , bem como uwind e vwind , você pode plotar as farpas do vento usando matplotlib como:

  plt.barbs (x, y, u, v)  

e pode personalizar sua aparência com várias opções. A referência do plt é o módulo matplotlib.pyplot .

Para leitura adicional, aqui estão alguns exemplos de plotagem de dados netcdf de um amigo meu da CSU.



Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 3.0 sob a qual é distribuído.
Loading...