xuanzhi_query.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import json
  2. from fastapi import FastAPI, APIRouter
  3. from qwen_agent.tools.tools import async_db
  4. from qwen_agent.tools.gis.spatial_analysis.geo_analysis import intersect_kfq, intersect_gyyd
  5. router = APIRouter()
  6. @router.get("/kgQuery")
  7. async def kgQuery(id: str):
  8. 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})'
  9. res_tuples = await async_db.run(sql)
  10. result, success = res_tuples
  11. return json.loads(result)
  12. @router.get("/klyzyQuery")
  13. async def klyzyQuery(id: str):
  14. sql = f'select *, st_astext(shape) as geom, st_astext(st_centroid(shape)) as center_wkt from sde.ecgap_klyzy where id in ({id})'
  15. res_tuples = await async_db.run(sql)
  16. result, success = res_tuples
  17. return json.loads(result)
  18. @router.get("/yjjbntQuery")
  19. async def yjjbntQuery(id: str):
  20. sql = f'select *,st_astext(shape) as geom from ddd.gcs330000g2001_yjjbnt_gx_xsb where objectid in ({id})'
  21. res_tuples = await async_db.run(sql)
  22. result, success = res_tuples
  23. return json.loads(result)
  24. @router.get("/populationQuery")
  25. async def populationQuery(name: str):
  26. 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}'"
  27. res_tuples = await async_db.run(sql)
  28. result, success = res_tuples
  29. return json.loads(result)
  30. @router.get("/kfqintersect")
  31. async def kfqintersect(wkt: str):
  32. result = await intersect_kfq(
  33. wkt)
  34. return result
  35. @router.get("/gyydintersect")
  36. async def gyydintersect(wkt: str):
  37. result = await intersect_gyyd(wkt)
  38. return result