|
Download ims_api_documentation.md from SolarWine/api: direct link, hf CLI and curl.
- Browser
- Download file 15.9 kB
-
https://huggingface.co/spaces/SolarWine/api/resolve/main/ims_api_documentation.md
- Command line
-
hf download hf://spaces/SolarWine/api/ims_api_documentation.md
-
curl -L -o ims_api_documentation.md https://huggingface.co/spaces/SolarWine/api/resolve/main/ims_api_documentation.md
15.9 kB
| # ืื"ื ืืฉืืื 2 โ ืืืืช ื ืชืื ืื ื-IMS (Israel Meteorological Service) | |
| --- | |
| ## ืืืื ื ืชืื ืื ื ืืงืืื ื-IMS ืืืื ืื ื ืฉืืจืื | |
| ### ืืงืืจ ืื ืชืื ืื | |
| - **ืฉืืจืืช:** IMS (Israel Meteorological Service) โ ืฉืืจืืช ืืืืืืจืืืืืื ืืืฉืจืืื. | |
| - **ืืืฉืง:** API Envista โ `https://api.ims.gov.il/v1/envista/stations/{STATION_ID}/data/{CHANNEL_ID}/?from=YYYY/MM/DD&to=YYYY/MM/DD` | |
| - **ืชืื ื:** **43 โ ืฉืื ืืืงืจ** (ืืืื ืืืงืืื ืืจืืื; ืืืงืื ืืืจื). | |
| - **ืืืืืช:** ืืืงื API ืึพืืฉืชื ื ืกืืืื `IMS_API_TOKEN` (ื ืฉืืจ ืืงืืืืช ืึพ`.env`, ืื ืึพgit). | |
| ### ืขืจืืฆืื (Channels) ืฉื ืืงืืื | |
| ืืืื ืืขืจืืฆืื ืชืืืืื ืืชืื ื. **ืืชืื ื 43 (ืฉืื ืืืงืจ)** ืืืืืจืื ืึพ`config/dev.yaml` ืชืืช `ims:`: | |
| | ืขืจืืฅ IMS (ืืืื) | ืฉื IMS | ืืฉืชื ื ืืคืื (ืกืืื ืงื ืื ืืช) | ืืืืืืช | ืชืืืืจ | | |
| |-----------------|--------|---------------------------|--------|--------| | |
| | 6 | TD | `air_temperature_c` | ยฐC | ืืืคืจืืืจืช ืืืืืจ ื ืืืืืช | | |
| | 8 | TDmax| `tdmax_c` | ยฐC | ืืืคืจืืืจืช ืืงืกืืืื (ืืืืื ืืืจืืื) | | |
| | 9 | TDmin| `tdmin_c` | ยฐC | ืืืคืจืืืจืช ืืื ืืืื (ืืืืื ืืืจืืื) | | |
| | 10 | Grad | `ghi_w_m2` | W/mยฒ| ืงืจืื ื ืืืืืืืช ืืืคืงืืช (GHI) | | |
| - ืื `channel_radiation` ืืืืืจ ืึพ`null` ืืชืฆืืจื (ืชืื ื ืืื Grad), ืขืืืืช ืืงืจืื ื ืื ื ืืฉืืช ืืืืคืืขื ืจืง ืืืคืจืืืจื. | |
| ### ืืืื ืืื ืืจืืืืืฆืื | |
| - **ืืืื ืืจืืจืช ืืืื:** ืฉื ืชืืื ืืืืจื ืืชืืจืื ืืืจืฆื (ื ืืชื ืืฉื ืืช ืขื `--from`, `--to` ืื `--years`). | |
| - **ืจืืืืืฆืื:** ื ืชืื ื IMS ืืชืืืจืืช 10 ืืงืืช; ื ืฉืืจืื ืืคื ืฉืืชืงืืื (ืื ืืฆืื ื ืื). | |
| - **ืืงืฉืืช:** ืืืื ืฉื ืืืชืจ ืึพ60 ืืื ืืคืืฆื ืืืืงืื (chunks) ืืื ืืื ืืข ืชืืืืืช ืจืืงืืช ืืึพAPI; ืืื ืืงืฉืืช ืืฉ ืืฉืืืื ืงืฆืจื. | |
| ### ืขืืืื ืืคื ื ืฉืืืจื | |
| 1. **ืืืจืช ืืื:** ืืืชืืืช ืืืื ืืืืขืืช ืึพIMS ืืืื ืืฉืจืื (UTC+2/UTC+3). ืื ืืชืืจืืืื ืืืืจืื ืึพ**UTC** ืืคื ื ืฉืืืจื. | |
| 2. **ืืืืื ืขืจืืฆืื:** ืื ืขืจืืฅ ื ืืฉื ืื ืคืจื; ืืฉืืจืืช ืืืืืืืช ืืคื `timestamp_utc` (ืืืืื ืืื ืืงืกืื โ ืืกืจืื ืืกืืื ืื ืึพNaN). | |
| 3. **ืกืื ืื ืืืคืจืืืจื:** ืขืจืืื ืืืืฅ ืืืืื **ึพ50 ืขื 60 ยฐC** (ืืืฉื ืขืจืืฅ Time hhmm ืฉื ืืืง ืืืขืืช) ืืืืืคืื ืึพNaN. | |
| 4. **ืืงืืจ:** ื ืืกืคืช ืขืืืื `source` ืขื ืืขืจื `ims`. | |
| ### ืืืคื ืืืื ื ืฉืืจืื ืื ืชืื ืื | |
| | ืคืจืื | ืขืจื | | |
| |------|-----| | |
| | **ืงืืืฅ ืคืื** | `data/ims_radiation_temperature.csv` (ื ืชืื: `config.data_paths.IMS_RADIATION_TEMPERATURE_CSV`) | | |
| | **ืคืืจืื** | CSV (ืคืกืืง ืืืคืจืื) | | |
| | **ืงืืืื** | ืืจืืจืช ืืืื ืฉื pandas (ืืืจื ืืื UTF-8) | | |
| **ืขืืืืืช ืืงืืืฅ:** | |
| | ืขืืืื | ืชืืืืจ | ืืืืืืช | | |
| |--------|--------|--------| | |
| | `timestamp_utc` | ืืืชืืช ืืื (UTC) | ISO format, timezone-aware UTC | | |
| | `air_temperature_c` | ืืืคืจืืืจืช ืืืืืจ | ยฐC | | |
| | `tdmax_c` | ืืืคืจืืืจื ืืงืกืืืืืช | ยฐC | | |
| | `tdmin_c` | ืืืคืจืืืจื ืืื ืืืืืช | ยฐC | | |
| | `ghi_w_m2` | ืงืจืื ื ืืืืืืืช ืืืคืงืืช (Grad) | W/mยฒ | | |
| | `source` | ืืงืืจ ืื ืชืื | ืชืืื `ims` | | |
| - ืขืืืืืช ืฉืื ื ืืฉืื (ืืืฉื ืงืจืื ื ืื ืืื ืขืจืืฅ Grad) ืื ืืืคืืขื ืื ืืืื ืจืืงืืช. | |
| - ืฉืืจืืช ืขื NaN ืืืืง ืืืขืืืืืช ืืคืฉืจืืืช (ืืืฉื ืืึพืืชืืื ืืืื ืื ืืื ืขืจืืฆืื). | |
| ### ืฉืืืืฉ ืื ืชืื ืื ืืคืจืืืงื | |
| - ืืงืืืฅ ืืฉืืฉ ืึพ**ืืงืืจ ืืืืืจืืืืืื (IMS)** ืึพ**Ground Truth** (ืืฉืืื 1 โ Data fusion). | |
| - ืกืงืจืืคืืื ื ืืกืคืื: `scripts/gap_fill_future.py` ืืืื ืคืขืจืื (ืืืื ืขืชืื) ืืืืื ืืืชืื ืึพ`data/ims_radiation_temperature_gap_filled.csv`; `scripts/build_ground_truth.py` ืืืืจ/ืืืื ืึพGround Truth (Parquet) ืืคื ืืกืืื ืึพ`context/05_ground_truth_schema.md`. | |
| ### ืืจืืื ืื ืชืื ืื (ืช pipeline) | |
| ืกืืจ ืืขืืืื ืืคื ืืชืืขืื: | |
| 1. **ืืืจืืช IMS (ืืืืื)** | |
| `python -m scripts.download_ims_data` | |
| โ ืคืื: `data/ims_radiation_temperature.csv` (ืจืืืืืฆืื 10 ืืงืืช, UTC, ืกืื ืื ืืืคืจืืืจื -50..60 ยฐC). | |
| 2. **ืืฉืืืช ืคืขืจืื (ืืืื ืขืชืื)** | |
| `python -m scripts.gap_fill_future --input data/ims_radiation_temperature.csv` | |
| โ ืคืื: `data/ims_radiation_temperature_gap_filled.csv` (ืจืฉืช ืจืืืืจืืช, quality_flag). | |
| 3. **ืื ืืืช Ground Truth (Parquet)** | |
| `python -m scripts.build_ground_truth` | |
| โ ืคืื: `data/ground_truth/ground_truth_2024_2025.parquet` + `ground_truth_metadata.json` (ืจืืืืืฆืื 15 ืืงืืช). | |
| ืืจืฆืช ืื ืืฆืขืืื ืืจืฆืฃ (ืื ืงืืื ืงืืืฅ ืืืืื): | |
| ```bash | |
| python -m scripts.download_ims_data && \ | |
| python -m scripts.gap_fill_future --input data/ims_radiation_temperature.csv && \ | |
| python -m scripts.build_ground_truth | |
| ``` | |
| ืื ืขืืืื ืืืืืืื (ืืืื TB/DB): `python -m scripts.update_ground_truth`. | |
| --- | |
| ## ื ืกืคื โ ืคืงืืืืช API (ืืงืืจ: ืืฉืืจืืช ืืืืืืจืืืืื) | |
| ืชืืขืื ืื ืืืืกืก ืขื ืืืกืื ืืจืฉืื **"ืืืฉืง ืขืืืจ ืืืืจ ืื ืชืื ืื ืืืืืืจืืืืืืื ืืขืฉืจ ืืงืชืืื"** โ ืืฉืจื ืืชืืืืจื, ืืฉืืจืืช ืืืืืืจืืืืื (ืชืืจืื ืขืืืื 11.05.2017). ืืงืืจ: ืงืืืฅ "ืคืงืืืืช API" ืืืฉื"ื. ืึพ85 ืชืื ืืช ืืืืืืืืืช; ืื ืชืื ืื ื ืืฉืืื ืืคืืจืื JSON. | |
| ### ืืืืืช (Authorization) | |
| - **ืฉืืื:** `Authorization: ApiToken XXXX` | |
| - **ืงืืืช TOKEN:** ืคื ืืื ืืืืื ืึพ**ims@ims.gov.il** | |
| - ืืคืจืืืงื: ืืฉืชื ื ืกืืืื `IMS_API_TOKEN` (ื ืฉืืจ ืึพ`.env`). | |
| ### ืืืกืืืช ืืื | |
| - **ืื ืืฉื ื ืืคื ืืื ืืงืืื ืชืงื ื (LST)** โ ืฉืขืื ืืืจืฃ. | |
| - ืืชืงืืคืช ืฉืขืื ืงืืฅ ืืฉ ืืคืจืฉ ืฉื ืฉืขื ืืื `datetime` ืืืืฆื ืืืื ืืคืืขื (ืืืฉื ืืืงืืืืจ: 11:40+03:00 ืืืฆื ืืขืื ืฉืืคืืขื 12:40). | |
| - ืืกืงืจืืคื ืฉืื ื: ืื ืืืชืืืช ืืืื ืืืืจืืช ืึพ**UTC** ืืคื ื ืฉืืืจื. | |
| ### ืืืึพืืืื: ืชืื ืืช ืืืืืจืื | |
| ืืืื ืืง placeholders: `{%ST_ID%}` = ืืกืคืจ ืชืื ื, `{%REG_ID%}` = ืืกืคืจ ืืืืจ, `{%CH_ID%}` = ืืกืคืจ ืขืจืืฅ. ืชืืจืื: `YYYY/MM/DD`, `MM` = ืืืืฉ (ืืืฉื 05), `DD` = ืืื (ืืืฉื 28). | |
| **ืชืื ืืช:** | |
| | ืชืืืืจ | ืืชืืืช | | |
| |--------|--------| | |
| | ืืืืข ืขื ืื ืืชืื ืืช | `https://api.ims.gov.il/v1/envista/stations` | | |
| | ืืืืข ืขื ืชืื ื ืกืคืฆืืคืืช | `https://api.ims.gov.il/v1/envista/stations/{%ST_ID%}` | | |
| ืชืืืืช ืชืื ื ืืืืืช: `name`, `location`, `regionId`, `monitors` (ืจืฉืืืช ืขืจืืฆืื). ืืื ืขืจืืฅ: `active`, `channelId`, `name`, `typeId`, `units`. | |
| **ืืืืจืื:** | |
| | ืชืืืืจ | ืืชืืืช | | |
| |--------|--------| | |
| | ืืืืข ืขื ืื ืืืืืจืื (ืืืื ืชืื ืืช) | `https://api.ims.gov.il/v1/envista/regions` | | |
| | ืืืืข ืขื ืืืืจ ืกืคืฆืืคื | `https://api.ims.gov.il/v1/envista/regions/{%REG_ID%}` | | |
| ืืืืจ ืืืื: ืืกืคืจ ืืืืจ, ืฉื, ืจืฉืืืช ืชืื ืืช ืืืขืจืืฆืื ืฉืืื. | |
| ### ืืฉืืืช ื ืชืื ืื ืืืืืจืืืืืืื ืืชืื ื | |
| ืืกืืก: `https://api.ims.gov.il/v1/envista/stations/{%ST_ID%}/data/...` | |
| **ื ืชืื ืื ืืืจืื ืื / ืืฉื ืื ืืืืชืจ:** | |
| | ืชืืืืจ | ืืชืืืช | | |
| |--------|--------| | |
| | ืืืจืื ืื โ ืื ืืขืจืืฆืื | `.../stations/{%ST_ID%}/data/latest` | | |
| | ืืืจืื ืื โ ืขืจืืฅ ืกืคืฆืืคื | `.../stations/{%ST_ID%}/data/{%CH_ID%}/latest` | | |
| | ืืฉื ืื ืืืืชืจ โ ืื ืืขืจืืฆืื | `.../stations/{%ST_ID%}/data/earliest` | | |
| | ืืฉื ืื ืืืืชืจ โ ืขืจืืฅ ืกืคืฆืืคื | `.../stations/{%ST_ID%}/data/{%CH_ID%}/earliest` | | |
| **ืืืื / ืืืืืฉ ืื ืืืื:** | |
| | ืชืืืืจ | ืืชืืืช | | |
| |--------|--------| | |
| | ื ืชืื ืื ืืืืื โ ืื ืืขืจืืฆืื | `.../stations/{%ST_ID%}/data/daily` | | |
| | ื ืชืื ืื ืืืืื โ ืขืจืืฅ ืกืคืฆืืคื | `.../stations/{%ST_ID%}/data/{%CH_ID%}/daily` | | |
| | ื ืชืื ืื ืืืืืืฉ โ ืื ืืขืจืืฆืื | `.../stations/{%ST_ID%}/data/monthly` | | |
| | ื ืชืื ืื ืืืืืืฉ โ ืขืจืืฅ ืกืคืฆืืคื | `.../stations/{%ST_ID%}/data/{%CH_ID%}/monthly` | | |
| **ืืื / ืืืืฉ ืืกืืื:** | |
| | ืชืืืืจ | ืืชืืืช | | |
| |--------|--------| | |
| | ืืื ืืกืืื โ ืื ืืขืจืืฆืื | `.../stations/{%ST_ID%}/data/daily/YYYY/MM/DD` | | |
| | ืืื ืืกืืื โ ืขืจืืฅ ืกืคืฆืืคื | `.../stations/{%ST_ID%}/data/daily/{%CH_ID%}/YYYY/MM/DD` | | |
| | ืืืืฉ ืืกืืื โ ืื ืืขืจืืฆืื | `.../stations/{%ST_ID%}/data/monthly/YYYY/MM` | | |
| | ืืืืฉ ืืกืืื โ ืขืจืืฅ ืกืคืฆืืคื | `.../stations/{%ST_ID%}/data/{%CH_ID%}/monthly/YYYY/MM` | | |
| **ืืืื ืชืืจืืืื (ืื ืื ืฉืืกืงืจืืคื ืืฉืชืืฉ ืื):** | |
| | ืชืืืืจ | ืืชืืืช | | |
| |--------|--------| | |
| | ืืืื โ ืื ืืขืจืืฆืื | `.../stations/{%ST_ID%}/data?from=YYYY/MM/DD&to=YYYY/MM/DD` | | |
| | ืืืื โ ืขืจืืฅ ืกืคืฆืืคื | `.../stations/{%ST_ID%}/data/{%CH_ID%}?from=YYYY/MM/DD&to=YYYY/MM/DD` | | |
| ### ืืื ื ืชืืืืช ื ืชืื ืื | |
| - **ืืกืคืจ ืืชืื ื** | |
| - **ืืื ืืืืืื** (`datetime`) | |
| - **ืจืฉืืืช ืขืจืืฆืื**, ืืื ืขืจืืฅ: | |
| - `id` โ ืืก' ืขืจืืฅ | |
| - `name` โ ืฉื ืืขืจืืฅ | |
| - `status` โ **1** = ืชืงืื, **2** = ืื ืชืงืื (ืืืฉืจ Status=2 ืื ืชืื ืื ืื ืชืงืื ืื) | |
| - `valid` โ `true` / `false` | |
| - ืขืจื ืืกืคืจื ืฉื ืืคืจืืืจ ืื ืืื | |
| **ืืขืจื:** ืื ืื ืืชืื ืืช ืืืืืืช ืืช ืื ืืืฉืชื ืื; **ืืก' ืืขืจืืฅ ืืืืชื ืืฉืชื ื ืืืื ืืืืืช ืฉืื ื ืืชืื ื ืืชืื ื**. ืืื ืืืขืช ืืช ืืก' ืืขืจืืฅ โ ืืืจืืฅ ืืืึพืืืื ืขื ืืชืื ื (ืื `--list-stations` ืืกืงืจืืคื). | |
| ### ืจืฉืืืช ืืฉืชื ืื ืืืืืจืืืืืืื (CHANNEL) โ ื ืกืคื ื' | |
| ืืฉืชื ืื ืฉืืชืื ืืช ืขืฉืืืืช ืืืืื (ืฉื ืืขืจืืฅ ื-API, ืืืืืืช, ืชืืืืจ): | |
| | ืืฉืชื ื | ืืืืืืช | ืชืืืืจ | | |
| |--------|--------|--------| | |
| | BP | mb | ืืืฅ ืืืืื ืืชืื ื | | |
| | DiffR | w/mยฒ | ืงืจืื ื ืืคืืืจืช | | |
| | Grad | w/mยฒ | ืงืจืื ื ืืืืืืืช (GHI) | | |
| | NIP | w/mยฒ | ืงืจืื ื ืืฉืืจื | | |
| | Rain | mm | ืืืืช ืืฉื | | |
| | RH | % | ืืืืช ืืืกืืช | | |
| | STDwd | deg | ืกืืืืช ืชืงื ืฉื ืืืืื ืืจืื | | |
| | TD | degC | ืืืคืจืืืจื ืืืฉื (ืืืืืจ) | | |
| | TDmax | degC | ืืืคืจืืืจืช ืืงืกืืืื | | |
| | TDmin | degC | ืืืคืจืืืจืช ืืื ืืืื | | |
| | TG | degC | ืืืคืจืืืจื ืืื ืืงืจืงืข | | |
| | Time | hhmm | ืืื ืกืืื 10 ืืืงืืช ืืืงืกืืืืืืช | | |
| | WD | deg | ืืืืื ืืจืื | | |
| | WDmax | deg | ืืืืื ืืืฉื ืืขืืืื | | |
| | WS | m/sec | ืืืืจืืช ืืจืื | | |
| | Ws10mm | m/sec | ืืืืจืืช ืจืื 10 ืืงืชืืช ืืงืกืืืืืช | | |
| | WS1mm | m/sec | ืืืืจืืช ืจืื ืืงืชืืช ืืงืกืืืืืช | | |
| | WSmax | m/sec | ืืืืจืืช ืืืฉื ืืขืืืื | | |
| ืืคืจืืืงื ื ืืฉืืื ืืืื: **TD, TDmax, TDmin, Grad** (ืชืื ื 43 โ ืฉืื ืืืงืจ). ืฉืืจ ืืืฉืชื ืื (ืืืฅ, ืืฉื, ืจืื, ืืืืช, ืงืจืื ื ืืคืืืจืช/ืืฉืืจื ืืื') ืืืื ืื ืืืืชื API ืืคื ืืก' ืขืจืืฅ ืืื ืชืื ื. | |
| ### ืฉืืืืฉ ื-Fiddler (ื ืกืคื ื') | |
| ืืืืืงืืช: ืืื ืืื ืื Fiddler. ื-Composer: GET ืขื ืืืชืืืช ืืจืฆืืื, ืืึพHeader: `Authorization: ApiToken XXXX`. | |
| --- | |
| ## ืื ืืืฆืข | |
| ### 1. ืกืงืจืืคื ืืืจืืช ื ืชืื ืื IMS (`scripts/download_ims_data.py`) | |
| - **ืืืจื:** ืืืจืืช ื ืชืื ืื ืืืกืืืจืืื ืฉื ืงืจืื ื (Grad โ GHI) ืืืืคืจืืืจื (TD, TDmax, TDmin) ื-IMS ืืฉื ืชืืื ืืืืจื. | |
| - **API:** `https://api.ims.gov.il/v1/envista/stations/{STATION_ID}/data/{CHANNEL_ID}/?from=YYYY/MM/DD&to=YYYY/MM/DD` | |
| - **ืืืืืช:** ืืืงื IMS โ ืืืงืฉ ื-ims@ims.gov.il (ืชื ืื ืฉืืืืฉ: https://ims.gov.il/en/ObservationDataAPI). | |
| - **ืืฉืชื ื ืกืืืื:** `IMS_API_TOKEN` (ืื `IMS_TOKEN`) โ ืืืืืฅ ืืืืืืจ ืึพ`.env`. | |
| - **ืชืฆืืจื:** ืชืื ื ืืขืจืืฆืื ืึพ`config/dev.yaml` ืชืืช `ims:` (ืืจืืจืช ืืืื: ืชืื ื **43 โ ืฉืื ืืืงืจ**, ืืืื ืืืจืืื; ืชืื ื 98 = ื ืืืื). | |
| - **ืคืื:** `data/ims_radiation_temperature.csv` ืขื ืขืืืืืช ืงื ืื ืืืช: `timestamp_utc`, `air_temperature_c`, `ghi_w_m2`, `tdmax_c`, `tdmin_c`, `source=ims`. ืืืชืืืช ืืืื ืืืืจืืช ืืืฉืจืื (UTC+2/3) ื-UTC. | |
| **ืฉืืืืฉ:** | |
| ```bash | |
| # ืจืฉืืืช ืชืื ืืช (ืืืจืฉ ืืืงื) | |
| python -m scripts.download_ims_data --list-stations | |
| # ืืืจืื ืืฉื ืชืืื ืืืืจื (ืืจืืจืช ืืืื) | |
| python -m scripts.download_ims_data | |
| # ืืืื ืชืืจืืืื ืืื ื | |
| python -m scripts.download_ims_data --from 2024-01-01 --to 2025-12-31 --station 43 | |
| ``` | |
| **ืืขืจื:** ืืืื ืืขืจืืฆืื (channel IDs) ืชืืืืื ืืชืื ื; ืืฉ ืืืืช ืืื ื-API ืื ืชืืขืื IMS (ืืืฉื ืชืื ื 28: TDmax=10, TDmin=11). | |
| --- | |
| ### 2. ืกืงืจืืคื ืืฉืืืช ืคืขืจืื ืืขืชืื (`scripts/gap_fill_future.py`) | |
| - **ืืืจื:** ืืฉืืืช ืคืขืจืื ืืขืชืื โ ืจืฉืช ืืื ืจืืืืจืืช ืืืชืืจืื ืืืืจืื ืื ืชืื ืื ืขื ืชืืจืื ืกืืื (ืืืคืฆืืื ืื), ืขื ืืืืื ืคืขืจืื ื-forward-fill ืื ืืื ืืจืคืืืฆืื ืืื ืืืจืืช, ืืืืคืฆืื ืืืืืื ืขื ืงืืืฅ ืชืืืืช (ืืืฉื Open-Meteo). | |
| - **ืงืื:** ืงืืืฅ IMS (ืื ืื CSV ืขื `timestamp_utc` + ืขืืืืืช ืืกืคืจืืืช). | |
| - **ืคืื:** `data/ims_radiation_temperature_gap_filled.csv` ืขื ืขืืืื `quality_flag`: `observed` | `forward_fill` | `interpolated` | `forecast`. | |
| **ืฉืืืืฉ:** | |
| ```bash | |
| # ืืฉืืืช ืคืขืจืื ืขื forward-fill ืขื ืกืืฃ ืื ืชืื ืื | |
| python -m scripts.gap_fill_future --input data/ims_radiation_temperature.csv | |
| # ืืืจืืช ืจืฉืช ืขื ืชืืจืื ืขืชืืื | |
| python -m scripts.gap_fill_future --input data/ims_radiation_temperature.csv --end-date 2026-12-31 | |
| # ืืืืื ืขืชืื ืืชืืืืช (ืืืฉื weather_forecast_cache) | |
| python -m scripts.gap_fill_future --input data/ims_radiation_temperature.csv --forecast data/weather_forecast_cache.csv | |
| ``` | |
| --- | |
| ### 3. ืขืืืื ื ืงืื ืคืืืืจืฆืื | |
| - **`config/data_paths.py`:** ื ืืกืคื `IMS_RADIATION_TEMPERATURE_CSV`, `IMS_GAP_FILLED_CSV` ื-CSV_SPECS ืืชืืืืื. | |
| - **`config/dev.yaml`:** ื ืืกืฃ ืืืืง `ims:` ืขื `station_id`, `default_station_id`, ื-channel IDs (ื ืืชื ืืืชืืื ืืคื ืชืื ื). | |
| - **`config/env.example`:** ื ืืกืฃ `IMS_API_TOKEN` ืขื ืืขืจื ืืืงืฉืช ืืืงื. | |
| --- | |
| ## ืื ื ืฉืืจ (ืืืคืฆืืื ืื) | |
| - **ืืืืืฆืื:** ืืืจืืฅ ืืืจืื ืขื ืืืงื ืืืืชื ืืืืืื ืืืกืื ืืจืืืืืฆืื (ืฉืขืชื/ืืืื) ืืื ืืจืืฉืืช Ground Truth. | |
| - **ืืชืืืช ืชืื ื/ืขืจืืฆืื:** ืชืื ื 43 = ืฉืื ืืืงืจ (ืืืื ืืืจืืื), ืชืื ื 98 = ื ืืืื. ืืืจืืฅ `--list-stations` ืืขืืืื ืชืื ื/ืขืจืืฆืื. | |
| --- | |
| ## ืกืืืื | |
| | ืคืจืื | ืกืืืืก | | |
| |------|--------| | |
| | ืชืืขืื/ืืืฉื ื-IMS API | ืืืฆืข โ ืชืืขืื ืืกืงืจืืคื | | |
| | ืกืงืจืืคื ืืืจืื (ืฉื ืชืืื ืืืืจื) | ืืืฆืข โ `download_ims_data.py` | | |
| | ืืืคืื ืืกืืื ืงื ืื ืืช + CSV | ืืืฆืข โ `timestamp_utc`, `air_temperature_c`, `ghi_w_m2`, ืืื' | | |
| | ืกืงืจืืคื ืืฉืืืช ืคืขืจืื ืืขืชืื | ืืืฆืข โ `gap_fill_future.py` | | |
| | ืืืืืฆืื ืืืกืื/ืจืืืืืฆืื | ืืืชืื โ ืืืจืฉ ืืืงื IMS ืืืจืฆื | | |