rlt.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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. print('data ====>>>', data)
  27. with open('/home/python3/xh_twapi01/routers/api/spatialAnalysis/茂名市.json','r', encoding='utf-8') as f:
  28. data = json.load(f)
  29. features = data['features']
  30. result = [{'name': '高','color': '#ff2f3c',"points":[]},
  31. {'name': '较高', 'color': '#ffaf00',"points":[]},
  32. {'name': '较低', 'color': '#ffd800',"points":[]},
  33. {'name': '低', 'color': '#40c75f',"points":[]},]
  34. adcode_dit = {'高':['440902','440983'],"较高":['440904'],"较低":['440981'],"低":['440982']}
  35. # "440902":{'name': '高','color': '#ff2f3c'},
  36. # "440904": {'name': '较高', 'color': '#ffaf00'},
  37. # "440981": {'name': '较低', 'color': '#ffd800'},
  38. # "440982": {'name': '低', 'color': '#40c75f'},
  39. # "440983": {'name': '高', 'color': '#ff2f3c'},
  40. # }
  41. area_data = {}
  42. for feature in features:
  43. properties = feature['properties']
  44. area_code = properties['adcode']
  45. geometry = feature['geometry']
  46. coordinates = geometry['coordinates']
  47. area_data[str(area_code)]=[]
  48. for i in coordinates:
  49. area_data[str(area_code)] += i
  50. # result.append({"name":adcode_dit[str(area_code)]['name'],
  51. # "color":adcode_dit[str(area_code)]['color'],
  52. # "area_name":area_name,
  53. # "area_code":area_code,
  54. # "points":i})
  55. for i in result:
  56. for x in adcode_dit[i['name']]:
  57. i['points']+=area_data[x]
  58. return {
  59. "code": 200,
  60. "msg": "成功",
  61. "data": result}
  62. except AppException as e:
  63. return {
  64. "code": 500,
  65. "msg": e.msg
  66. }
  67. except Exception as e:
  68. traceback.print_exc()
  69. raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
  70. # 行政区划人口热力查询接口
  71. @router.get('/listPopulationHeatByRegion')
  72. async def listPopulationHeatByRegion(request: Request,body = Depends(remove_xss_json),db: Session = Depends(get_db)):
  73. try:
  74. data = RLTApi.listPopulationHeatByRegion()
  75. print('data ====>>>', data)
  76. with open('/home/python3/xh_twapi01/routers/api/spatialAnalysis/茂名市.json','r', encoding='utf-8') as f:
  77. data = json.load(f)
  78. features = data['features']
  79. result = [{'name': '高','color': '#ff2f3c',"points":[]},
  80. {'name': '较高', 'color': '#ffaf00',"points":[]},
  81. {'name': '较低', 'color': '#ffd800',"points":[]},
  82. {'name': '低', 'color': '#40c75f',"points":[]},]
  83. adcode_dit = {'高':['440902','440983'],"较高":['440904'],"较低":['440981'],"低":['440982']}
  84. # "440902":{'name': '高','color': '#ff2f3c'},
  85. # "440904": {'name': '较高', 'color': '#ffaf00'},
  86. # "440981": {'name': '较低', 'color': '#ffd800'},
  87. # "440982": {'name': '低', 'color': '#40c75f'},
  88. # "440983": {'name': '高', 'color': '#ff2f3c'},
  89. # }
  90. area_data = {}
  91. for feature in features:
  92. properties = feature['properties']
  93. area_code = properties['adcode']
  94. geometry = feature['geometry']
  95. coordinates = geometry['coordinates']
  96. area_data[str(area_code)]=[]
  97. for i in coordinates:
  98. area_data[str(area_code)] += i
  99. # result.append({"name":adcode_dit[str(area_code)]['name'],
  100. # "color":adcode_dit[str(area_code)]['color'],
  101. # "area_name":area_name,
  102. # "area_code":area_code,
  103. # "points":i})
  104. for i in result:
  105. for x in adcode_dit[i['name']]:
  106. i['points']+=area_data[x]
  107. return {
  108. "code": 200,
  109. "msg": "成功",
  110. "data": result}
  111. except AppException as e:
  112. return {
  113. "code": 500,
  114. "msg": e.msg
  115. }
  116. except Exception as e:
  117. traceback.print_exc()
  118. raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")