LoginSignup
4
5

More than 5 years have passed since last update.

気象情報をデータベースに格納する

Last updated at Posted at 2017-03-30

気象情報をデータベースに格納する

気象情報を用いて、「商品の売上予測」や「来客予測」を行っているのですが、分析を進めていくに従い、「気象情報をどこかに保管しておきたい」と思うようになりました。気象情報は新鮮な情報がどんどん入手できますが、一方ですぐにデータが更新されてしまうので、分析する時点でのスナップショットをデータベースに格納/蓄積したいと思ったのです。「手元にあるデータベースやデータウェアハウスに入れるほどでもない」かと思い、クラウドのサービスの利用を検討しました。

IBM CloudantとIBM dashDBを利用する

今回、IBM CloudantとIBM dashDBを使い気象情報の格納を検証しました。

IBM Cloudant
IBM dashDB

今回この2製品を選んだ理由は以下の通りです。
・SaaSのほうが手軽に利用できる点
・NoSQL DBを使えば、数が多い気象情報のカラムを全部事前定義しなくて良い点
・使うか分からない情報を高額なRDBに入れておくのがもったいないと考えた点
・NoSQLに入れておくのはいいが、利用するときにはRDBを利用したい
・気象情報をJSON形式でダウンロードし、それをそのままアップロードしたい
・気象情報としてIBM提供のデータを使うので、DaaSもIBMにしました

以下の情報を参考にしました。

Put the Weather in your Databases

手順

①bluemixで、cloudantのサービスを開始する
https://console.ng.bluemix.net/
で、カタログの「データ&分析」からCloudant NoSQL DBを選択

a1.png

デフォルトのままで、「作成」を押します。

a2.png

なお、今回は以下の無料プランを利用して検証をしています。

a3.png

②bluemixで、Weather Company Dataのサービスを開始する
で、カタログの「データ&分析」からWeather Company Dataを選択

a4.png

デフォルトのままで、「作成」を押します。

a6.png

なお、今回は以下の無料プランを利用して検証をしています。

a7.png

③PCへのcURLのセットアップ
今回、Weather Company DataのサービスでJSON形式の気象情報をPCにダウンロードし、それをCloudantへアップロードします。そこで、REST APIをコマンドでコールできるcURLというツールを使いました。以下のサイトから、画面を下のほうにスクロールさせて、PCのOSにあった圧縮ファイルをダウンロードします。このツール、インストールは不要で、ファイルを解凍し、任意のフォルダに置きます。

cURL

私の場合には、cの直下に置きました。(C:\curl-7.53.1-win64-mingwというフォルダ)

④Weather Company Dataのサービス資格情報の確認
先ほど開始したWeather Company Dataのサービス資格情報をbluemixのコンソールで確認します。

a9.png

⑤ファイル出力コマンドの実行
Windowsのコマンドプロンプトを起動し、cURLを置いたフォルダの直下のbinフォルダにて以下のコマンドを実行します。
curl -X GET -u <上記の資格情報のusername>:<上記の資格情報のpassword> https://twcservice.mybluemix.net:443/api/weather/v1/geocode/35.681298/139.766247/forecast/daily/7day.json?units=m > obs.json

URL:portは資格情報と違っていれば変えてください。ここでは、東京駅の緯度経度をWebで調べて、「35.681298/139.766247」と書いています。「units=m」をつけているのは、華氏ではなく摂氏、フィートではなくキロメートルの表示のためです。「7day.json」は7日間の日別の予報を出すものです。以下のサイトは、パラメータURLを作れるので便利です。

Weather Company Data For IBM Bluemix APIs

binフォルダにobs.jsonが作成されました。

なお、何回も連続でテスト実行したので、Weather Company Dataの無料枠を超えてしまい、エラーが出てしまいました。(1分間に10API実行まで)しばし、待ってから再度試しました。

a10.png

⑥Cloudantのサービス資格情報の確認
先ほど開始したCloudantのサービス資格情報をbluemixのコンソールで確認します。

a11.png

⑦Cloudantでデータベースを作成する
Cloudantの管理コンソールで、「Create Database」をし、「twc」という名前のデータベースを作成します。

a13.png

⑧obs.jsonをCloudantへインポート
Windowsのコマンドプロンプトを起動し、cURLを置いたフォルダの直下のbinフォルダにて以下のコマンドを実行します。
curl -X POST -u <上記の資格情報のusername>:<上記の資格情報のpassword> https://xxxxxxxxxxxx/twc -H Content-Type:application/json -d @obs.json

今度は、Cloudant側の資格情報です。「https://xxxxxxxxxxxx/」
は資格情報のhostを記載してください。

⑨Cloudantの管理コンソールでデータがインポートされたことを確認

a14.png

無事に、データがCloudantにインポートされました。しかし、この形では使いにくいので、RDBであるdashDBにこのデータをレプリケーションしましょう。

⑩CloudantとdashDBの連携
Cloudantの管理コンソールで「Analytics」のメニューから「Create Warehouse」を押します。

a16.png

「dashDB」を選択して、「IBMID/Password」を入力、認証をします。

a17.png

dashDB側のデータベース名(今回、新しく作ります:任意)とCloudant側のデータベース名(今回は先ほどつけた「twc」)を指定、今回は、dashDBも新しいインスタンスを作成します。

a19png.png

Cloudantの管理コンソールのdashDBへのリンクからdashDBを立ち上げてみると

a20.png

無事にデータが格納されていました。この形でデータが見れると安心します。

a21.png

おわりに

難しいのは、(JSON用)URLを構築する所ぐらいで、あとはデフォルトでほぼすすめます。いくつかの種類の天気情報がありますので、それぞれ試してみたいと思います。「NoSQL DBを使えば、数が多い気象情報のカラムを全部事前定義しなくて良い」点が本当に便利でした。

4
5
1

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
4
5