file_table_reader/main.py
2025-11-25 15:33:38 +07:00

95 lines
2.2 KiB
Python

# from fastapi import FastAPI
# from qgis.core import QgsVectorLayer
# from qgis_bootstrap import start_qgis
# app = FastAPI()
# # Start QGIS headless
# qgs = start_qgis()
# @app.get("/")
# def root():
# return {"status": "QGIS API Ready"}
# @app.get("/extent")
# def extent():
# layer = QgsVectorLayer("data/exmpl.geojson", "jalan", "ogr")
# if not layer.isValid():
# return {"error": "Layer tidak valid"}
# ext = layer.extent()
# return {
# "xmin": ext.xMinimum(),
# "ymin": ext.yMinimum(),
# "xmax": ext.xMaximum(),
# "ymax": ext.yMaximum(),
# }
from fastapi import FastAPI, BackgroundTasks
from qgis_bootstrap import start_qgis
# from cleansing_service import load_layer, cleansing_layer
from full_cleansing_service import load_layer, cleansing_layer
app = FastAPI()
qgs = start_qgis()
@app.get("/")
def root():
return {"status": "QGIS Cleansing API Running"}
@app.get("/clean/{table_name}")
def clean_table(table_name: str):
layer = load_layer(table_name)
if not layer.isValid():
return {"error": f"Table '{table_name}' tidak valid atau tidak ditemukan."}
print(layer)
result = cleansing_layer(layer)
summary = result["summary"]
return {
"table": table_name,
"summary": summary,
"message": "Cleansing selesai"
}
@app.post("/process/{table_name}")
def process_table(table_name: str, background: BackgroundTasks):
background.add_task(run_clean_table, table_name)
return {"status": "ACCEPTED", "table": table_name}
def run_clean_table(table_name: str):
print(f"\n=== Mulai cleansing untuk tabel: {table_name} ===")
layer = load_layer(table_name)
if not layer.isValid():
print(f"[ERROR] Table '{table_name}' tidak valid atau tidak ditemukan.")
return
print("[OK] Layer valid, mulai cleansing...")
result = cleansing_layer(layer)
summary = result["summary"]
clean_layer = result["clean_layer"]
print("\n=== RINGKASAN CLEANSING ===")
for k, v in summary.items():
print(f"{k}: {v}")
# TODO: save back ke PostGIS
# save_to_postgis(clean_layer, table_name)
print(f"=== Cleansing selesai untuk tabel: {table_name} ===\n")