Geo-Lab / app.py
HANSOL
v4.3: Multi-Page structure + 5 new landforms (uvala, tower_karst, karren, transverse_dune, star_dune)
2be4f60
"""
๐ŸŒ Geo-Lab AI - ํ™ˆ
HuggingFace Spaces Entry Point (Multi-Page Streamlit)
"""
import streamlit as st
st.set_page_config(
page_title="๐ŸŒ Geo-Lab AI",
page_icon="๐ŸŒ",
layout="wide"
)
# ========== ์ตœ์ƒ๋‹จ: ์ œ์ž‘์ž ์ •๋ณด ==========
st.markdown("""
<div style='background: linear-gradient(90deg, #1565C0, #42A5F5); padding: 12px 20px; border-radius: 10px; margin-bottom: 15px;'>
<div style='display: flex; justify-content: space-between; align-items: center; color: white;'>
<span style='font-size: 1.1rem;'>๐ŸŒ <b>Geo-Lab AI</b> - ์ด์ƒ์  ์ง€ํ˜• ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ</span>
<span style='font-size: 0.85rem;'>์ œ์ž‘: 2025 ํ•œ๋ฐฑ๊ณ ๋“ฑํ•™๊ต ๊น€ํ•œ์†”T</span>
</div>
</div>
""", unsafe_allow_html=True)
st.title("๐ŸŒ Geo-Lab AI")
st.subheader("_๊ต์‚ฌ๋ฅผ ์œ„ํ•œ ์ง€ํ˜• ํ˜•์„ฑ๊ณผ์ • ์‹œ๊ฐํ™” ๋„๊ตฌ_")
st.markdown("---")
# ========== ๊ธฐ๋Šฅ ์†Œ๊ฐœ ==========
col1, col2, col3 = st.columns(3)
with col1:
st.markdown("""
### ๐Ÿ“– ์ด์ƒ์  ์ง€ํ˜• ๊ฐค๋Ÿฌ๋ฆฌ
- 31์ข…+ ๊ต๊ณผ์„œ์  ์ง€ํ˜• ๋ชจ๋ธ
- 7๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„๋ฅ˜
- 2D/3D ์‹œ๊ฐํ™”
**๐Ÿ‘ˆ ์™ผ์ชฝ ์‚ฌ์ด๋“œ๋ฐ”์—์„œ ํŽ˜์ด์ง€ ์„ ํƒ**
""")
with col2:
st.markdown("""
### ๐ŸŽฌ ํ˜•์„ฑ ๊ณผ์ • ์• ๋‹ˆ๋ฉ”์ด์…˜
- 0% โ†’ 100% ์Šฌ๋ผ์ด๋”
- ์‹ค์‹œ๊ฐ„ ์ง€ํ˜• ๋ณ€ํ™” ๊ด€์ฐฐ
- ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ˜ ์‹œ๋ฎฌ๋ ˆ์ด์…˜
""")
with col3:
st.markdown("""
### ๐ŸŒ ์ง€ํ˜• ์‹œ๋‚˜๋ฆฌ์˜ค
- ๋‹ค์ค‘ ์ด๋ก  ๋ชจ๋ธ ๋น„๊ต
- ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐ์ ˆ
- ๊ณผํ•™์  ์‹œ๋ฎฌ๋ ˆ์ด์…˜
""")
st.markdown("---")
# ========== ์‚ฌ์šฉ๋ฒ• ==========
st.info("""
### ๐Ÿ’ก ์‚ฌ์šฉ๋ฒ•
1. **์™ผ์ชฝ ์‚ฌ์ด๋“œ๋ฐ”**์—์„œ ์›ํ•˜๋Š” ํŽ˜์ด์ง€ ์„ ํƒ
2. **๐Ÿ“– ์ด์ƒ์  ์ง€ํ˜• ๊ฐค๋Ÿฌ๋ฆฌ** - ๊ต๊ณผ์„œ์  ์ง€ํ˜• ํ™•์ธ
3. **๐ŸŒ ์ง€ํ˜• ์‹œ๋‚˜๋ฆฌ์˜ค** - ์ƒ์„ธ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹คํ–‰
> โš ๏ธ **๊ฐ ํŽ˜์ด์ง€๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค** - ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ์ด์ „ 3D๊ฐ€ ํ•ด์ œ๋˜์–ด ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
""")
# ========== ์ง€์› ์ง€ํ˜• ๋ชฉ๋ก ==========
with st.expander("๐Ÿ“‹ ์ง€์› ์ง€ํ˜• ๋ชฉ๋ก (36์ข…)", expanded=False):
st.markdown("""
| ์นดํ…Œ๊ณ ๋ฆฌ | ์ง€ํ˜• |
|----------|------|
| ๐ŸŒŠ ํ•˜์ฒœ | ์„ ์ƒ์ง€, ์ž์œ ๊ณก๋ฅ˜, ๊ฐ์ž…๊ณก๋ฅ˜, V์ž๊ณก, ๋ง์ƒํ•˜์ฒœ, ํญํฌ |
| ๐Ÿ”บ ์‚ผ๊ฐ์ฃผ | ์ผ๋ฐ˜, ์กฐ์กฑ์ƒ, ํ˜ธ์ƒ, ์ฒจ๋‘์ƒ |
| โ„๏ธ ๋น™ํ•˜ | U์ž๊ณก, ๊ถŒ๊ณก, ํ˜ธ๋ฅธ, ํ”ผ์˜ค๋ฅด๋“œ, ๋“œ๋Ÿผ๋ฆฐ, ๋น™ํ‡ด์„ |
| ๐ŸŒ‹ ํ™”์‚ฐ | ์ˆœ์ƒํ™”์‚ฐ, ์„ฑ์ธตํ™”์‚ฐ, ์นผ๋ฐ๋ผ, ํ™”๊ตฌํ˜ธ, ์šฉ์•”๋Œ€์ง€ |
| ๐Ÿฆ‡ ์นด๋ฅด์ŠคํŠธ | ๋Œ๋ฆฌ๋„ค, **์šฐ๋ฐœ๋ผ, ํƒ‘์นด๋ฅด์ŠคํŠธ, ์นด๋ Œ** |
| ๐Ÿœ๏ธ ๊ฑด์กฐ | ๋ฐ”๋ฅดํ•œ, **ํšก์‚ฌ๊ตฌ, ์„ฑ์‚ฌ๊ตฌ**, ๋ฉ”์‚ฌ/๋ทฐํŠธ |
| ๐Ÿ–๏ธ ํ•ด์•ˆ | ํ•ด์•ˆ์ ˆ๋ฒฝ, ์‚ฌ์ทจ+์„ํ˜ธ, ์œก๊ณ„์‚ฌ์ฃผ, ๋ฆฌ์•„์Šคํ•ด์•ˆ, ํ•ด์‹์•„์น˜, ํ•ด์•ˆ์‚ฌ๊ตฌ |
""")
# ========== ์—…๋ฐ์ดํŠธ ๋‚ด์—ญ ==========
with st.expander("๐Ÿ“‹ ์—…๋ฐ์ดํŠธ ๋‚ด์—ญ", expanded=False):
st.markdown("""
**v4.3 (2025-12-14)** ๐Ÿ†•
- ์ƒˆ ์ง€ํ˜• ์ถ”๊ฐ€: ์šฐ๋ฐœ๋ผ, ํƒ‘์นด๋ฅด์ŠคํŠธ, ์นด๋ Œ, ํšก์‚ฌ๊ตฌ, ์„ฑ์‚ฌ๊ตฌ
- ๋ฆฌ์•„์Šค ํ•ด์•ˆ, ํ•ด์‹์•„์น˜ ๊ฐœ์„ 
- ํ˜•์„ฑ๊ณผ์ • ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ฐœ์„  (ํญํฌ ๋‘๋ถ€์นจ์‹, ํ”ผ์˜ค๋ฅด๋“œ ๋น™ํ•˜โ†’๋ฌผ)
**v4.2 (2025-12-14)**
- Multi-Page ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝ (์•ˆ์ •์„ฑ ํ–ฅ์ƒ)
- WebGL ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ ๊ฐœ์„ 
**v4.1 (2025-12-14)**
- ์ด์ƒ์  ์ง€ํ˜• ๊ฐค๋Ÿฌ๋ฆฌ 31์ข… ์ถ”๊ฐ€
- ํ˜•์„ฑ๊ณผ์ • ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ธฐ๋Šฅ
""")
st.markdown("---")
st.caption("ยฉ 2025 ํ•œ๋ฐฑ๊ณ ๋“ฑํ•™๊ต ๊น€ํ•œ์†”T | Geo-Lab AI")