再生可能エネルギーとして注目される太陽光発電を効果的に活用するには、地域ごとの日射量データや気象データが重要です。この記事では、NRELとNASA POWER APIを使用して、太陽光発電に必要な365日分の日射量データや発電予測データを取得する方法を紹介します。Pythonコードを使用して、簡単にデータを収集し、エネルギー効率化に役立つ情報を得る手順を説明します。
データの種類と取得方法
私たちが今回取得するデータには、以下の3つが含まれます。
- Global Horizontal Irradiance (GHI): 地面に到達する総日射量(kWh/m²)で、太陽光パネルにとって重要な指標です。
- Direct Normal Irradiance (DNI): 直接日射量(kWh/m²)で、特に集中型太陽光発電に関連します。
- AC Output: PVWatts APIからの発電予測値(kWh)で、指定した地域のシステムが日々生成する電力を表します。
必要なAPIキーの取得
NOAA APIキーの取得 NOAA APIを利用するには、まずNOAAの公式サイトで無料のAPIキーを取得します。APIキーはリクエスト送信時に必要ですので、取得後は安全な場所に保存しておきましょう。
NREL APIキーの取得 NREL APIのPVWattsを使用するために、NRELの公式サイトでAPIキーを取得します。NOAAと同様、取得したAPIキーは控えておきます。
NOAA APIの構造理解
NOAA APIは、気象観測やデータセットに関する情報を取得するための複数のエンドポイントを提供しています。以下のエンドポイントを活用して、気象データを収集します。
/datasets
: 利用可能なデータセットの概要を取得します。/datatypes
: 各データセットに含まれるデータの種類(例:気温、降水量など)を取得します。/data
: 特定の場所と時間における気象データを取得します。
今回は、日ごとの気象データが必要なので、/data
エンドポイントを使用して、2023年のニューヨーク市の日ごとの気温、降水量などのデータを取得します。
NOAA APIを用いた気象データの取得
まず、NOAA APIを使って、2023年のニューヨーク市の日ごとの気象データを取得します。以下のコードは、Pythonを使用してNOAA APIからデータをリクエストし、CSVファイルに保存する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
import requests import csv from datetime import datetime # NOAA APIキーとURL設定 noaa_api_key = "取得したNOAA APIキーをここに入力" noaa_base_url = "https://www.ncdc.noaa.gov/cdo-web/api/v2/data" # リクエストパラメータ設定 noaa_params = { "datasetid": "GHCND", # 日ごとの気象観測データセット "locationid": "CITY:US360019", # ニューヨーク市のID "startdate": "2023-01-01", "enddate": "2023-12-31", "datatypeid": ["TMIN", "TMAX", "PRCP"], # 最低/最高気温と降水量 "units": "metric", "limit": 1000 # データの取得上限(APIの仕様に依存) } # NOAA APIからデータを取得 headers = {"token": noaa_api_key} response = requests.get(noaa_base_url, headers=headers, params=noaa_params) noaa_data = response.json() # データをCSVファイルに保存 with open("noaa_weather_data_2023.csv", "w", newline="") as csvfile: writer = csv.writer(csvfile) writer.writerow(["Date", "TMIN", "TMAX", "PRCP"]) # 各日のデータを抽出し、CSVに書き込む for record in noaa_data["results"]: writer.writerow([record["date"], record["value"] if record["datatype"] == "TMIN" else None, record["value"] if record["datatype"] == "TMAX" else None, record["value"] if record["datatype"] == "PRCP" else None]) |
NREL APIを用いた日射量データの取得
NREL APIのPVWattsを使用して、日ごとの発電量予測(AC出力)を取得します。日射量データにはNASA POWER APIを使用し、日射条件に応じた発電量予測が可能になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# NREL PVWatts APIのURLとキー pvwatts_base_url = "https://developer.nrel.gov/api/pvwatts/v6.json" nrel_api_key = "取得したNREL APIキーをここに入力" pvwatts_params = { "api_key": nrel_api_key, "lat": 40.7128, "lon": -74.0060, "system_capacity": 4, "module_type": 0, "losses": 14, "array_type": 1, "tilt": 20, "azimuth": 180, "timeframe": "hourly" } # データ取得 response_pvwatts = requests.get(pvwatts_base_url, params=pvwatts_params) pvwatts_data = response_pvwatts.json() # データの変換(毎時データを日ごとに合計) daily_ac_output = [sum(pvwatts_data["outputs"]["ac"][i:i+24]) for i in range(0, len(pvwatts_data["outputs"]["ac"]), 24)] |
NASA POWER APIから日射量データの取得
NREL API(PVWatts)を使用するには、APIキーが必要です。NRELの公式サイトでアカウントを作成し、APIキーを取得してください。一方、NASA POWER APIはAPIキーが不要で、誰でもアクセス可能です。
Pythonコードを使ったデータ取得の手順
以下に、Pythonを使ってNRELのPVWatts APIとNASA POWER APIから365日分のデータを取得し、CSVに保存する方法を示します。
4. NASA POWER APIからGHIとDNIデータを取得
まず、NASA POWER APIを使用して、2023年のGHI(Global Horizontal Irradiance)とDNI(Direct Normal Irradiance)データを取得します。このデータは、日ごとにニューヨーク市での太陽光発電に適した条件を示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import requests # NASA POWER APIのURLとパラメータ設定 nasa_base_url = "https://power.larc.nasa.gov/api/temporal/daily/point" nasa_params = { "parameters": "ALLSKY_SFC_SW_DWN,CLRSKY_SFC_SW_DWN", # GHIとDNIを取得 "community": "RE", "longitude": -74.0060, "latitude": 40.7128, "start": "20230101", "end": "20231231", "format": "JSON" } # データ取得 response_nasa = requests.get(nasa_base_url, params=nasa_params) nasa_data = response_nasa.json() |
データの結合と保存
NOAA、NREL、NASAの各APIから得たデータを結合し、365日分の日ごとの気象・発電データをCSV形式で保存します。
1 2 3 4 5 6 7 8 9 10 |
with open('combined_weather_energy_data_2023.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow(["Date", "TMIN", "TMAX", "PRCP", "Daily GHI (kWh/m^2)", "Daily DNI (kWh/m^2)", "Daily AC Output (kWh)"]) start_date = datetime(2023, 1, 1) for day, (ghi, dni, ac_output) in enumerate(zip(nasa_data["properties"]["parameter"]["ALLSKY_SFC_SW_DWN"].values(), nasa_data["properties"]["parameter"]["CLRSKY_SFC_SW_DWN"].values(), daily_ac_output)): date = start_date + timedelta(days=day) writer.writerow([date.strftime("%Y-%m-%d"), "TMINの値", "TMAXの値", "PRCPの値", ghi, dni, ac_output]) |
活用方法と分析
このCSVファイルには、2023年の各日ごとのGHI、DNI、および予測されるAC出力が含まれており、季節による発電量の変化や最適な発電条件を把握するための分析に活用できます。例えば、夏季にGHIやDNIが上昇して発電量も増加する傾向を確認することができ、エネルギー供給計画や発電効率の最適化に役立てることが可能です。
まとめ
今回の手順で、NOAA、NREL、NASAの各APIを使用し、ニューヨーク市の2023年の日ごとの気象データおよび太陽光発電データを収集できるようになりました。このデータは、地域ごとの気象条件に基づいた発電計画やエネルギー供給の最適化に利用できます。再生可能エネルギーの効果的な活用に向けて、APIを活用したデータ収集を積極的に行っていきましょう。
Pythonを学びたい方はこちらの記事を参考にしてみてください
関連記事
プログラミング学習を進めているけれど、まだ副収入につなげられていない…そんなあなたへ!今こそ、学んだスキルを活かして副業に挑戦する絶好のチャンスです。プログラミングだけでなく、自分のスキルや商品をネットで販売する『ネットショップ』を開設してみませんか?
ネットショップを持つことで、自分の知識やスキルをより多くの人に届け、副収入を得ることが可能です。学んできたプログラミングを活かして、ショップのカスタマイズや運営も自由自在に行えますし、もし商品作成が難しい場合でも、デジタル商品やサービス提供など、いろんな選択肢があります。
このステップで一歩踏み出せば、今学んでいることが副収入に直結し、自分の時間をより有効に使うことができるはずです!一緒にネットショップを開設し、副業の第一歩を踏み出しましょう!
タイトルテキスト
プログラミングを学びたいけど、どこから始めたらいいのか分からない、自分に合っているか不安…そんな悩みを持っている方におすすめしたいのが、 無料相談 サービスです!
この無料相談では、あなたの現状や目標に合わせて、最適な学習プランを一緒に考えてくれます。どんなスキルが必要なのか、どうやって学習を進めると効果的かを具体的にアドバイスしてもらえるので、無駄なく効率的にスタートを切ることができます。
さらに、プログラミング学習には同じ目標を持つ 仲間 がいること、そして頼りになる メンター の存在がとても大きな支えになります。独学ではどうしてもつまずきやすい部分も、メンターがあなたの成長に合わせて親身にサポートしてくれるので、安心して学びを進められます。
まずは 無料相談 で、あなたに合ったプランを見つけて、スキルアップへの第一歩を踏み出してみませんか?今なら、迷っている方でも気軽に相談できるチャンスです!