GeoToolsHub / backend /terrain.py
gauthamnairy's picture
Upload 4 files
ac5007c verified
from fastapi import APIRouter, HTTPException
import httpx
router = APIRouter()
# Route for extracting terrain data
@router.post("/api/terrain-data")
async def extract_terrain_data(latitude: float, longitude: float):
"""Extract terrain data such as slope or aspect from a given location"""
try:
# Example API call to a terrain data service (replace with actual service)
url = f"https://api.example.com/terrain?latitude={latitude}&longitude={longitude}"
async with httpx.AsyncClient() as client:
response = await client.get(url)
response.raise_for_status()
data = response.json()
# Extract relevant terrain data (e.g., slope, aspect)
slope = data.get("slope")
aspect = data.get("aspect")
if slope is None or aspect is None:
raise Exception("No terrain data found in API response")
return {
"latitude": latitude,
"longitude": longitude,
"slope": slope,
"aspect": aspect
}
except httpx.HTTPStatusError as e:
raise HTTPException(status_code=500, detail=f"Terrain API error: {str(e)}")
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))