xuanzhi_query.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import json
  2. from fastapi import APIRouter, Query
  3. from typing import List, Any
  4. from gistools.geo_analysis import intersect_kfq, intersect_gyyd
  5. from database import Database
  6. router = APIRouter()
  7. database = Database()
  8. @router.get("/kg-query")
  9. async def kg_query(id: str = Query(..., description="ID列表, 逗号分隔")) -> List[Any]:
  10. """
  11. 查询控制性详细规划信息
  12. """
  13. sql = (
  14. "select id, xzqmc, xzqdm, dymc, yddm, ydxz, ydmj, rjlsx, rjlxx, jzmdsx, jzmdxx, "
  15. "jzgdsx, jzgdxx, ldlsx, ldlxx, pfwh, pfsj,dkcsd,ghfhd,dkgzd,jtblx,cyppd, st_area(shape::geography) as pfmarea, "
  16. "st_astext(shape) as geom, st_astext(st_centroid(shape)) as center_wkt "
  17. "from sde.kzxxxgh where id in ({id})"
  18. )
  19. result = await database.execute_query(sql.format(id=id))
  20. return result
  21. @router.get("/klyzy-query")
  22. async def klyzy_query(id: str = Query(..., description="ID列表, 逗号分隔")) -> List[Any]:
  23. """
  24. 查询可利用资源信息
  25. """
  26. sql = (
  27. "select *, st_astext(shape) as geom, st_astext(st_centroid(shape)) as center_wkt "
  28. "from sde.ecgap_klyzy where id in ({id})"
  29. )
  30. result = await database.execute_query(sql.format(id=id))
  31. return result
  32. @router.get("/population")
  33. async def population_query(name: str = Query(..., description="地名")) -> List[Any]:
  34. """
  35. 查询人口信息
  36. """
  37. sql = (
  38. "select pop_age_o as 老年人口, pop_age_m as 中青年人口, pop_sex_m as 男性人口, "
  39. "pop_sex_f as 女性人口, pop as 人口总量 "
  40. "from sde.layer_poi_population where name = '{name}'"
  41. )
  42. result = await database.execute_query(sql.format(name=name))
  43. return result
  44. @router.get("/kfq-intersect")
  45. async def kfq_intersect(wkt: str = Query(..., description="WKT字符串")) -> List[Any]:
  46. """
  47. 查询缓冲区内的开发区信息
  48. """
  49. result = await intersect_kfq(wkt)
  50. return result
  51. @router.get("/gyyd-intersect")
  52. async def gyyd_intersect(wkt: str = Query(..., description="WKT字符串")) -> List[Any]:
  53. """
  54. 查询缓冲区内的工业用地信息
  55. """
  56. result = await intersect_gyyd(wkt)
  57. return result