import json from fastapi import FastAPI, APIRouter from qwen_agent.tools.tools import async_db from qwen_agent.tools.gis.spatial_analysis.geo_analysis import intersect_kfq, intersect_gyyd router = APIRouter() @router.get("/kgQuery") async def kgQuery(id: str): sql = f'select id, xzqmc, xzqdm, dymc, yddm, ydxz, ydmj, rjlsx, rjlxx, jzmdsx, jzmdxx, jzgdsx, jzgdxx, ldlsx, ldlxx, pfwh, pfsj, st_area(shape::geography) as pfmarea,st_astext(shape) as geom, st_astext(st_centroid(shape)) as center_wkt from sde.kzxxxgh where id in ({id})' res_tuples = await async_db.run(sql) result, success = res_tuples return json.loads(result) @router.get("/klyzyQuery") async def klyzyQuery(id: str): sql = f'select *, st_astext(shape) as geom, st_astext(st_centroid(shape)) as center_wkt from sde.ecgap_klyzy where id in ({id})' res_tuples = await async_db.run(sql) result, success = res_tuples return json.loads(result) @router.get("/yjjbntQuery") async def yjjbntQuery(id: str): sql = f'select *,st_astext(shape) as geom from ddd.gcs330000g2001_yjjbnt_gx_xsb where objectid in ({id})' res_tuples = await async_db.run(sql) result, success = res_tuples return json.loads(result) @router.get("/populationQuery") async def populationQuery(name: str): sql = f"select pop_age_o as 老年人口, pop_age_m as 中青年人口,pop_sex_m as 男性人口,pop_sex_f as 女性人口,pop as 人口总量 from sde.layer_poi_population where name = '{name}'" res_tuples = await async_db.run(sql) result, success = res_tuples return json.loads(result) @router.get("/kfqintersect") async def kfqintersect(wkt: str): result = await intersect_kfq( wkt) return result @router.get("/gyydintersect") async def gyydintersect(wkt: str): result = await intersect_gyyd(wkt) return result