Architecture & Stack

معماری فنی پروتوتایپ GeoAI

سیستم به‌صورت full-stack طراحی شده: فرانت‌اند React برای اکتشاف، بک‌اند FastAPI برای پردازش، و ذخیره دوگانه PostGIS + فایل برای پایداری نتایج.

High-level flow

React + Leaflet FastAPI AnalysisService Preprocess / NDVI / CD / Spatial PostGIS + GeoTIFF/PNG

پشته فناوری

لایه ابزار نقش
Backend Python, FastAPI, uvicorn, Pydantic API، اعتبارسنجی، orchestration
Raster GIS rasterio, numpy, scipy, scikit-image خواندن/نوشتن GeoTIFF و محاسبات آرایه‌ای
Vector GIS geopandas, shapely, pyproj پلی‌گان‌سازی و CRS
Database PostgreSQL + PostGIS, SQLAlchemy ذخیره run و مناطق تغییر
Frontend React 18, TypeScript, Vite, Leaflet داشبورد، نقشه، لایه‌ها، آمار
Data access pystac-client, planetary-computer, stackstac دانلود Sentinel-2 از STAC
Ops Docker Compose, pytest استقرار و تست

ساختار مخزن

backend/app/

  • api/routes/ — endpointهای REST
  • services/preprocessing/ — آماده‌سازی رستر
  • services/ndvi/ — شاخص پوشش گیاهی
  • services/change_detection/ — baseline و CVA
  • services/spatial_analysis/ — polygonize
  • utils/preview_png.py — overlay مرورگرپسند
  • utils/run_store.py — fallback فایل‌محور

frontend/src/

  • pages/Dashboard.tsx — فضای کاری اصلی
  • map/MapView.tsx — Leaflet + ImageOverlay
  • components/StatsPanel.tsx — KPI و نمودارها
  • components/LayerControl.tsx — کنترل لایه‌ها
  • services/api.ts — کلاینت API

تصمیم‌های طراحی فنی

PNG برای نقشه، GeoTIFF برای علم

Leaflet نمی‌تواند GeoTIFF خام را به‌عنوان ImageOverlay نشان دهد. بنابراین برای نمایش، PNG ساخته می‌شود؛ برای تحلیل علمی همان GeoTIFFها حفظ می‌شوند.

Fallback بدون دیتابیس

اگر PostGIS بالا نباشد، آمار و GeoJSON در data/processed/<run_id>/ ذخیره می‌شوند تا پروتوتایپ همچنان قابل‌اجرا بماند.

ماژولار بودن پایپ‌لاین

هر مرحله (validate، reproject، align، ndvi، detect، polygonize) جداست تا بتوان روش‌ها را تعویض یا تست کرد.

نمونه مصنوعی برای CI

data/samples/ امکان توسعه آفلاین و تست بدون دانلود سنگین Sentinel-2 را می‌دهد.