gauthamnairy's picture
Upload 4 files
ac5007c verified
raw
history blame contribute delete
924 Bytes
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from typing import List
router = APIRouter()
class PolygonCoordinates(BaseModel):
coordinates: List[List[float]] # List of [longitude, latitude] pairs
@router.post("/api/calculate-area")
async def calculate_area(polygon: PolygonCoordinates):
"""Calculate the area of a polygon defined by a set of coordinates."""
if len(polygon.coordinates) < 3:
raise HTTPException(status_code=400, detail="At least three coordinates are required to form a polygon.")
# Using the Shoelace formula to calculate the area
area = 0.0
n = len(polygon.coordinates)
for i in range(n):
x1, y1 = polygon.coordinates[i]
x2, y2 = polygon.coordinates[(i + 1) % n] # Wrap around to the first point
area += x1 * y2 - x2 * y1
area = abs(area) / 2.0
return {"area": area}