2017-05-25 30 views
0

私はnetCDFライブラリの新しいユーザーですので、この基本的な質問に対して私は謝ります。 4列(lon、lat、depth、velocity)のasciiファイルをnetCDFに変換しようとしています。AsciiからNetCDFへの変換

Vpの[:] =ファイル私は、次のエラーを取得しています[:、:、:、:] はIndexError:配列のためにあまりにも多くの指標が

あなたがの原因を見つけるために私を助けてもらえエラー?変数の次元を行数に設定しました。そうですか?

ありがとうございます。

ファイルが大きい、あなたはここでサンプルを見つけることができます。https://www.dropbox.com/s/qq9529vcvq8t1av/test.txt?dl=0ここ

# -*- coding: utf-8 -*- 
from netCDF4 import Dataset 
import numpy as np 
import sys 


file = np.loadtxt('test.txt', delimiter=' ') 
# NC file setup 
mydata = Dataset('Vp.nc', 'w', format='NETCDF4') 
mydata.description = '3D VP velocity model' 

# dimensions 
mydata.createDimension('latitude', 1000) 
mydata.createDimension('longitude', 1000) 
mydata.createDimension('depth', 1000) 

Vp = mydata.createVariable('Vp', 'f4', ('latitude', 'longitude', 'depth'), fill_value=0) 

Vp[:] = file[:,:,:] 
Vp.units = 'km/s' 

答えて

1

されているいくつかの問題

  • ないように、変数名などの組み込み関数名を使用file
  • 変数に座標データを入れないでください。別の変数に入れてください。
  • データをNetCDF変数、スライスサイズのマスに追加するとトンあなたの現在のエラーはちょうどあなたの例では1000,4はここ

を提出さnumpyの配列から、間違った寸法を求めてから、作品例ですが、私はので、正しい変数データを抽出しませんでした

  • 等しくなります私は実際の構造を知りませんし、再構成にも注意してください。

    from netCDF4 import Dataset 
    import numpy as np 
    import sys 
    
    
    input_file = np.loadtxt('test.txt', delimiter=' ') 
    # NC file setup 
    mydata = Dataset('Vp.nc', 'w', format='NETCDF4') 
    mydata.description = '3D VP velocity model' 
    
    # dimensions 
    mydata.createDimension('longitude', 128) 
    mydata.createDimension('latitude', 4) 
    lat = mydata.createVariable('latitude', 'f4','longitude') 
    lat.long_name = "latitude" 
    lat.units = "degrees_north" 
    lat.standard_name = "latitude" 
    lon = mydata.createVariable('longitude', 'f4','latitude') 
    lon.long_name = "longitude" 
    lon.units = "degrees_east" 
    lon.standard_name = "longitude" 
    
    ## mydata.createVariable('depth', 1) 
    
    Vp = mydata.createVariable('Vp', 'f4', ('longitude','latitude'), fill_value=0) 
    
    Vp[:128,:4] = input_file[:512,3].reshape(128,4) 
    ## lon[:] = ??? 
    ## lat[:] = ??? 
    Vp.units = 'km/s' 
    
  • 関連する問題