1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

netCDF4-C++をvisual studio で使う

Last updated at Posted at 2023-12-23

はじめに

気象データの解析は主にFortranが使用されてきました。最近はPythonもよく見かけます。一方、C/C++で解析をしている人はあまり見かけません。自分はC++が好きなので、C++でnetCDFデータの解析ができるように環境設定をしたのですが、情報が全然なくて困ったため、記録として残します。

それと、WSL使っちゃえば(多分)楽なんですけど、Visual Studioでやりたいことがあったので、Visual Studioで使えるようにしてみます。

環境・使うもの

  • Windows 11
  • Visual Studio 2022(17.7.6)
  • vcpkg
  • git(2.42.0)

前置き

Visual StudioおよびGit for Windowsがインストールされているものとします。

用語

vcpkg

公式ドキュメント

Microsoftが提供しているC++ライブラリのパッケージ管理ツールです。netcdf-cxx4のインストール時に使用します。netcdf-cxx4の依存ライブラリは結構な数あるので、こういったツールがないとそれらを全てCMakeすることになります。(はじめはCMake使おうと思ってたんですけど、コマンドを4回叩いたところで心が折れました……。)

vcpkgには、ライブラリを全部グローバルにインストールするクラシックモードと、ディレクトリ毎にバージョンを指定してインストールするマニフェストモードの二種類の操作方法があります。今回はクラシックモードでやります。

netCDF

公式サイト

気象分野で広く使われるデータ形式の一種。アメリカのUnidataが開発し、FortranやCなど様々な言語で利用可能なAPIが提供されています。気象屋さんお馴染みですね。

vcpkgの導入

ドキュメントの手順に従ってインストールします。

1: githubからクローンする

git clone

PowerShellを開き、適当な場所にクローンします。今回はC:\Users\usernameにおきます。Windowsはパスが長すぎると動いてくれないので、あんまり下層には置かないように。

2: bootstrapを起動し、vcpkgをビルドする。

.\vcpkg\bootstrap-vcpkg.bat

全部自動でビルドしてくれます。ビルド後にvcpkg.exeという名前の実行ファイルが生成されます。
(1と2の手順は、Githubからzipでダウンロードして、解凍したフォルダの中にあるbootstrap-vcpkg.batをダブルクリックする方法でも大丈夫です。)

vcpkgの中に移動して、コマンドが使えるか確認してみます。

cd vcpkg
./vcpkg

vcpkgのパスを環境変数に設定すれば、どこでコマンドを叩いても認識してくれます。今回はやりません。以後、vcpkg以下で作業をするものとします。

netcdf-cxx4をインストールする

vcpkg search [keyword]で利用可能ライブラリを検索することができます。netcdf-cxx4がちゃんと対応しているか確認します。

PS C:\Users\username\vcpkg> .\vcpkg search netcdf
gdal[netcdf]                              Enable NetCDF support
minc                     2.4.03#3         MINC - Medical Image NetCDF or MINC isn't netCDF
minc[minc1]                               Support minc1 file format, requires NETCDF
netcdf-c                 4.8.1#4          A set of self-describing, machine-independent data formats that support th...
netcdf-c[dap]                             Build with DAP remote access client support
netcdf-c[hdf5]                            Build with HDF5 support
netcdf-c[nczarr]                          Build with NCZarr cloud storage access support
netcdf-c[nczarr-zip]                      Build with NCZarr ZIP support
netcdf-c[netcdf-4]                        Build with netCDF-4 support
netcdf-c[tools]                           Build utilities
netcdf-cxx4              4.3.1#5          a set of machine-independent data formats that support the creation, acces...
The result may be outdated. Run `git pull` to get the latest results.
If your port is not listed, please open an issue at and/or consider making a pull request.  -  https://github.com/Microsoft/vcpkg/issues

最下段にありました。名前もnetcdf-cxx4でよさそうです。

ではインストールしましょう。以下のコマンドを実行します。vcpkg install [名前]でインストールされます。

./vcpkg install netcdf-cxx4

30分くらい待ちましょう。これでnetcdf-cxx4がインストールされました。簡単すぎてちょっと不安になりますね。インストールしたライブラリを確認してみます。./vcpkg listと入力します。

PS C:\Users\username\vcpkg> ./vcpkg list
curl:x64-windows                                  8.4.0#1             A library for transferring data with URLs
curl[non-http]:x64-windows                                            Enables protocols beyond HTTP/HTTPS/HTTP2
curl[schannel]:x64-windows                                            SSL support (Secure Channel)
curl[ssl]:x64-windows                                                 Default SSL backend
curl[sspi]:x64-windows                                                SSPI support
hdf5:x64-windows                                  1.14.2              HDF5 is a data model, library, and file format f...
hdf5[szip]:x64-windows                                                Build with szip
hdf5[zlib]:x64-windows                                                Build with zlib
netcdf-c:x64-windows                              4.8.1#4             A set of self-describing, machine-independent da...
netcdf-c[dap]:x64-windows                                             Build with DAP remote access client support
netcdf-c[hdf5]:x64-windows                                            Build with HDF5 support
netcdf-c[nczarr]:x64-windows                                          Build with NCZarr cloud storage access support
netcdf-c[netcdf-4]:x64-windows                                        Build with netCDF-4 support
netcdf-cxx4:x64-windows                           4.3.1#5             a set of machine-independent data formats that s...
pkgconf:x64-windows                               2.1.0               pkgconf is a program which helps to configure co...
szip:x64-windows                                  2.1.1#12            Szip compression software, providing lossless co...
vcpkg-cmake-config:x64-windows                    2022-02-06#1
vcpkg-cmake:x64-windows                           2023-05-04
vcpkg-pkgconfig-get-modules:x64-windows           2023-09-06
vcpkg-tool-meson:x64-windows                      0.63#1              Meson build system
zlib:x64-windows                                  1.3                 A compression library

zlibやhdf5等の依存ライブラリも全部まとめてインストールされていることがわかります。vcpkg全体で大体13GBくらいでした。

Visual Studioで使用する

.\vcpkg integrate install

integrateコマンドを実行することで、Visual Studioでライブラリを利用することができます。一度実行すれば、今後はどこのプロジェクトでも#include <netcdf>と書くことができます。

早速、Visual Studioを開いてみましょう。
「新しいプロジェクトの作成」→「コンソールアプリ」→「作成」を選択します。
netcdf-cxx4のgithubの下部に使用例が記載されているので、コピー&ペーストします。

image.png

ちゃんと読めてそうですね!今度はビルドしてみます。
「ビルド」→「ソリューションのビルド」、「デバッグ」→「デバッグの開始」を選択します。
上手くいっていれば、simple_xy.ncがcppファイルのディレクトリに出力されているはずです。

おわりに

CMakeで2日悩んでいたところが一時間ちょっとで終わってしまった。感動。
今度はgribも扱ってみたいですね。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?