|
■No54357 (a04sa013 さん) に返信 > このライブラリの使い方,実際のnetCDFデータの取得方法等を教えていただけますでしょうか?
そのライブラリはunidataのnetCDFライブラリをコンパイルしてできるnetcdf.dllです。 サンプルにはVBでnetcdfファイルを作成する例が書かれているようです。
unidataのnetCDFライブラリを使う場合、 既存のnetCDFファイルからデータを読むだけであれば
1 nc_openでファイルを開く 2 (nc_inq(_xxx)でファイル内の次元名や変数名を取得する) 3 nc_inq_dimid / nc_inq_varid で適切な次元・変数のdimension idとvariable idを取得 4 nc_get_var_xxxで値を取得
の手順でOKです。 次元名や変数名が既知の場合は2の手順は必要はありません。
で、netCDFライブラリをVB.Netから呼ぶ場合にはプラットフォーム呼び出しという技術を使います。 いろいろ面倒ですが、 先ほどのサンプルにある
' nc_open Declare Ansi Function nc_open Lib "netcdf.dll" _ (ByVal path As String, ByVal mode As Int32, ByRef ncidp As Int32) As Int32
というのがそれを用いる宣言です。 必要なnc_XXXについて、VB.Net中で宣言すれば使えるようになります。 これを宣言すれば1の手順は
r = nc_open( "xxxx.nc", 0, nc_id )
というように書けるようになります。 同様に、
Dim values as Double() r = nc_inq_varid( nc_id, "peak_height", var_id) r = nc_get_var_double( nc_id, var_id, values )
というようにして、変数"peak_height"の配列を取得することができます。 (「nc_get_var_double」の宣言はサンプルには無いので自分で考える必要があります。)
unidataのnetCDFライブラリは設計が古いので、かなり使いづらいと思います。 とくにVB.Netから直接netCDF.dllを使うとデザイン上の不整合がいろいろと出てくるかと。
私は使ったことがありませんが、VBAが得意ならOLEがどこかにあったと思いますので、それを使うのもよいかもしれません。
|