endpoint / main.py
kdoherty's picture
Upload 3 files
a5da53f verified
from fastapi import FastAPI
from titiler.core.factory import TilerFactory
from titiler.stac.factory import STACTilerFactory
from titiler.mosaic.factory import MosaicTilerFactory
from starlette.middleware.cors import CORSMiddleware
app = FastAPI(
title="MPG TiTiler Endpoint",
description="High-performance geospatial tile server with COG, STAC, and Mosaic support",
version="1.0.0"
)
# Enable CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Use specific domains in production
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# ---- COG Tiler ----
cog = TilerFactory()
app.include_router(cog.router, tags=["Cloud Optimized GeoTIFF"])
# ---- STAC Tiler ----
stac = STACTilerFactory()
app.include_router(stac.router, prefix="/stac", tags=["STAC Items"])
# ---- MosaicJSON Tiler ----
mosaic = MosaicTilerFactory()
app.include_router(mosaic.router, prefix="/mosaic", tags=["MosaicJSON"])
# Root endpoint with API information
@app.get("/")
def read_index():
return {
"message": "Welcome to MPG TiTiler Endpoint",
"description": "High-performance geospatial tile server",
"endpoints": {
"cog": "Cloud Optimized GeoTIFF tiling",
"stac": "STAC item tiling (prefix: /stac)",
"mosaic": "MosaicJSON tiling (prefix: /mosaic)"
},
"docs": "/docs",
"health": "/health"
}
@app.get("/health")
def health_check():
return {"status": "healthy", "service": "titiler"}