| # ืื"ื ืืฉืืื 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 ืืืจืฆื | |
|
|