μ΄ νλ‘μ νΈλ Supabase PostgreSQL β GeoTIFF β GeoServer ImageMosaic νμ΄νλΌμΈμ μλννμ¬
μ΅μ κΈ°μ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ μκ³μ΄ λμ€ν° λ μ΄μ΄λ₯Ό μλ μμ±Β·λ°ννλ μμ€ν
μ
λλ€.
- controller/ : λ μ¨ μ‘°ν API
- dto/
- entity/
- repository/
- scheduler/ : λ§€μΌ 04:05 κΈ°μλ°μ΄ν° μμ§ μ€μΌμ€λ¬
- service/
- raster/ : μμ±λ GeoTIFF, indexer.properties λ±
- seoul_boundary.* : μμΈμ κ²½κ³ SHP νμΌ
- tiff_maker.py : 04:10 TIFF μμ± μ€ν¬λ¦½νΈ
- environment.yml : Conda νκ²½ μ μ νμΌ
μ μ₯λλ νλ:
- lat, lon
- ts (timestamp)
- temp, rain
- geom (PostGIS Point μλ μμ±)
- created_at
Spring Schedulerκ° λ§€μΌ 04:05μ OpenWeather APIλ₯Ό νΈμΆνμ¬ λ°μ΄ν°λ₯Ό μ μ₯ν©λλ€.
conda env create -f environment.yml
conda activate weather-env
cd Python
python tiff_maker.py
- Supabase weather_raw λ°μ΄ν° μ‘°ν
- IDW λ³΄κ° κΈ°λ° μ¨λ 격μ μμ±
- μμΈμ κ²½κ³(shp)λ‘ λ§μ€νΉ
- temp_YYYY-MM-DD_HH.tif νμ GeoTIFF μμ±
- ImageMosaic μΈλ±μ€ κ°±μ
νμ μ€μ λ¨κ³:
0. 17 λ²μ μ΄μ JDK μ€μΉ
1. GeoServer μ€μΉ
2. ImageMosaic μ μ₯μ μμ± ν raster ν΄λ μ°κ²°
3. SLD μ€νμΌ μμ± λ° μ μ©
4. TIFF νμΌ μΆκ° μ:
- κΈ°μ‘΄ μΈλ±μ€ νμΌ(rasters.\*) μμ
- GeoServer μ¬μμ λλ REST Reload
5. Pythonμμ TIFF μμ± β μλ λ°μ
- OpenWeather API νΈμΆ
- weather_raw ν μ΄λΈμ μκ°λ³ temp, rain μ μ₯
- μ λ°μ΄ν° μ‘°ν
- GeoTIFF μμ±
- raster ν΄λ μ μ₯
- μΈλ±μ€ κ°±μ
DB β TIFF β GeoServer λ μ΄μ΄λ‘ μ΅μ κΈ°μ λ°μ΄ν°κ° μλ λ°νλ©λλ€.
conda env create -f environment.yml
conda activate weather-env
./gradlew bootRun
python tiff_maker.py
- environment.yml : Python TIFF μμ± νκ²½ μ€μ
- .env : Spring/Python κ³΅ν΅ νκ²½ λ³μ (Gitμλ ν¬ν¨λμ§ μμ)