123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- from fastapi import APIRouter, Request, Depends, Query, HTTPException, status
- from common.security import valid_access_token
- from sqlalchemy.orm import Session
- from sqlalchemy.sql import func
- from common.auth_user import *
- from sqlalchemy import text
- from pydantic import BaseModel
- from common.BigDataCenterAPI import *
- from database import get_db
- from typing import List
- from models import *
- from utils import *
- from utils.spatial import *
- import json
- import traceback
- from common import RLTApi
- from exceptions import AppException
- router = APIRouter()
- # 行政区划人流量查询接口
- @router.get('/listPopulationNumberByRegion')
- async def listPopulationNumberByRegion(request: Request,body = Depends(remove_xss_json),db: Session = Depends(get_db)):
- try:
- data = RLTApi.listPopulationNumberByRegion()
- print('data ====>>>', data)
- with open('/home/python3/xh_twapi01/routers/api/spatialAnalysis/茂名市.json','r', encoding='utf-8') as f:
- data = json.load(f)
- features = data['features']
- result = [{'name': '高','color': '#ff2f3c',"points":[]},
- {'name': '较高', 'color': '#ffaf00',"points":[]},
- {'name': '较低', 'color': '#ffd800',"points":[]},
- {'name': '低', 'color': '#40c75f',"points":[]},]
- adcode_dit = {'高':['440902','440983'],"较高":['440904'],"较低":['440981'],"低":['440982']}
- # "440902":{'name': '高','color': '#ff2f3c'},
- # "440904": {'name': '较高', 'color': '#ffaf00'},
- # "440981": {'name': '较低', 'color': '#ffd800'},
- # "440982": {'name': '低', 'color': '#40c75f'},
- # "440983": {'name': '高', 'color': '#ff2f3c'},
- # }
- area_data = {}
- for feature in features:
- properties = feature['properties']
- area_code = properties['adcode']
- geometry = feature['geometry']
- coordinates = geometry['coordinates']
- area_data[str(area_code)]=[]
- for i in coordinates:
- area_data[str(area_code)] += i
- # result.append({"name":adcode_dit[str(area_code)]['name'],
- # "color":adcode_dit[str(area_code)]['color'],
- # "area_name":area_name,
- # "area_code":area_code,
- # "points":i})
- for i in result:
- for x in adcode_dit[i['name']]:
- i['points']+=area_data[x]
- return {
- "code": 200,
- "msg": "成功",
- "data": result}
-
- except AppException as e:
- return {
- "code": 500,
- "msg": e.msg
- }
- except Exception as e:
- traceback.print_exc()
- raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
-
- # 行政区划人口热力查询接口
- @router.get('/listPopulationHeatByRegion')
- async def listPopulationHeatByRegion(request: Request,body = Depends(remove_xss_json),db: Session = Depends(get_db)):
- try:
- data = RLTApi.listPopulationHeatByRegion()
- print('data ====>>>', data)
- with open('/home/python3/xh_twapi01/routers/api/spatialAnalysis/茂名市.json','r', encoding='utf-8') as f:
- data = json.load(f)
- features = data['features']
- result = [{'name': '高','color': '#ff2f3c',"points":[]},
- {'name': '较高', 'color': '#ffaf00',"points":[]},
- {'name': '较低', 'color': '#ffd800',"points":[]},
- {'name': '低', 'color': '#40c75f',"points":[]},]
- adcode_dit = {'高':['440902','440983'],"较高":['440904'],"较低":['440981'],"低":['440982']}
- # "440902":{'name': '高','color': '#ff2f3c'},
- # "440904": {'name': '较高', 'color': '#ffaf00'},
- # "440981": {'name': '较低', 'color': '#ffd800'},
- # "440982": {'name': '低', 'color': '#40c75f'},
- # "440983": {'name': '高', 'color': '#ff2f3c'},
- # }
- area_data = {}
- for feature in features:
- properties = feature['properties']
- area_code = properties['adcode']
- geometry = feature['geometry']
- coordinates = geometry['coordinates']
- area_data[str(area_code)]=[]
- for i in coordinates:
- area_data[str(area_code)] += i
- # result.append({"name":adcode_dit[str(area_code)]['name'],
- # "color":adcode_dit[str(area_code)]['color'],
- # "area_name":area_name,
- # "area_code":area_code,
- # "points":i})
- for i in result:
- for x in adcode_dit[i['name']]:
- i['points']+=area_data[x]
- return {
- "code": 200,
- "msg": "成功",
- "data": result}
-
- except AppException as e:
- return {
- "code": 500,
- "msg": e.msg
- }
- except Exception as e:
- traceback.print_exc()
- raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|