rlt.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends, Query, HTTPException, status
  4. from common.security import valid_access_token
  5. from sqlalchemy.orm import Session
  6. from sqlalchemy.sql import func
  7. from common.auth_user import *
  8. from sqlalchemy import text
  9. from pydantic import BaseModel
  10. from common.BigDataCenterAPI import *
  11. from database import get_db
  12. from typing import List
  13. from models import *
  14. from utils import *
  15. from utils.spatial import *
  16. import json
  17. import traceback
  18. from common import RLTApi
  19. from exceptions import AppException
  20. router = APIRouter()
  21. # 行政区划人流量查询接口
  22. @router.get('/listPopulationNumberByRegion')
  23. async def listPopulationNumberByRegion(request: Request,body = Depends(remove_xss_json),db: Session = Depends(get_db)):
  24. try:
  25. data = RLTApi.listPopulationNumberByRegion()
  26. with open('/home/python3/xh_twapi01/routers/api/spatialAnalysis/茂名市.json','r', encoding='utf-8') as f:
  27. data = json.load(f)
  28. features = data['features']
  29. result = [{'name': '高','color': '#ff2f3c',"points":[]},
  30. {'name': '较高', 'color': '#ffaf00',"points":[]},
  31. {'name': '较低', 'color': '#ffd800',"points":[]},
  32. {'name': '低', 'color': '#40c75f',"points":[]},]
  33. adcode_dit = {'高':['440902','440983'],"较高":['440904'],"较低":['440981'],"低":['440982']}
  34. # "440902":{'name': '高','color': '#ff2f3c'},
  35. # "440904": {'name': '较高', 'color': '#ffaf00'},
  36. # "440981": {'name': '较低', 'color': '#ffd800'},
  37. # "440982": {'name': '低', 'color': '#40c75f'},
  38. # "440983": {'name': '高', 'color': '#ff2f3c'},
  39. # }
  40. area_data = {}
  41. for feature in features:
  42. properties = feature['properties']
  43. area_code = properties['adcode']
  44. geometry = feature['geometry']
  45. coordinates = geometry['coordinates']
  46. area_data[str(area_code)]=[]
  47. for i in coordinates:
  48. area_data[str(area_code)] += i
  49. # result.append({"name":adcode_dit[str(area_code)]['name'],
  50. # "color":adcode_dit[str(area_code)]['color'],
  51. # "area_name":area_name,
  52. # "area_code":area_code,
  53. # "points":i})
  54. for i in result:
  55. for x in adcode_dit[i['name']]:
  56. i['points']+=area_data[x]
  57. return {
  58. "code": 200,
  59. "msg": "成功",
  60. "data": result}
  61. except AppException as e:
  62. return {
  63. "code": 500,
  64. "msg": e.msg
  65. }
  66. except Exception as e:
  67. traceback.print_exc()
  68. raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
  69. # 行政区划人口热力查询接口
  70. @router.get('/listPopulationHeatByRegion')
  71. async def listPopulationHeatByRegion(request: Request,body = Depends(remove_xss_json),db: Session = Depends(get_db)):
  72. try:
  73. # data = RLTApi.listPopulationHeatByRegion()
  74. with open('/home/python3/xh_twapi01/routers/api/spatialAnalysis/茂名市.json','r', encoding='utf-8') as f:
  75. data = json.load(f)
  76. features = data['features']
  77. result = [{'name': '高','color': '#ff2f3c',"points":[]},
  78. {'name': '较高', 'color': '#ffaf00',"points":[]},
  79. {'name': '较低', 'color': '#ffd800',"points":[]},
  80. {'name': '低', 'color': '#40c75f',"points":[]},]
  81. adcode_dit = {'高':['440902','440983'],"较高":['440904'],"较低":['440981'],"低":['440982']}
  82. # "440902":{'name': '高','color': '#ff2f3c'},
  83. # "440904": {'name': '较高', 'color': '#ffaf00'},
  84. # "440981": {'name': '较低', 'color': '#ffd800'},
  85. # "440982": {'name': '低', 'color': '#40c75f'},
  86. # "440983": {'name': '高', 'color': '#ff2f3c'},
  87. # }
  88. area_data = {}
  89. for feature in features:
  90. properties = feature['properties']
  91. area_code = properties['adcode']
  92. geometry = feature['geometry']
  93. coordinates = geometry['coordinates']
  94. area_data[str(area_code)]=[]
  95. for i in coordinates:
  96. area_data[str(area_code)] += i
  97. # result.append({"name":adcode_dit[str(area_code)]['name'],
  98. # "color":adcode_dit[str(area_code)]['color'],
  99. # "area_name":area_name,
  100. # "area_code":area_code,
  101. # "points":i})
  102. for i in result:
  103. for x in adcode_dit[i['name']]:
  104. i['points']+=area_data[x]
  105. return {
  106. "code": 200,
  107. "msg": "成功",
  108. "data": result}
  109. except AppException as e:
  110. return {
  111. "code": 500,
  112. "msg": e.msg
  113. }
  114. except Exception as e:
  115. traceback.print_exc()
  116. raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")