ソースを参照

250409-2代码。

baoyubo 2 ヶ月 前
コミット
49c33c1706
2 ファイル変更29 行追加104 行削除
  1. 4 95
      routers/api/spatialAnalysis/__init__.py
  2. 25 9
      utils/spatial/__init__.py

+ 4 - 95
routers/api/spatialAnalysis/__init__.py

@@ -43,7 +43,9 @@ async def mine(request: Request,body = Depends(remove_xss_json),db: Session = De
         # 行政镇、行政村数据
         # town_village_data,town_count,village_count = count_town_village(from_data.location,db)
         # town_village_data,town_count = get_town_list(body)
+        print(time.time())
         town_village_data,town_count,village_count = get_town_village_list(body,db) #[],0,0#
+        print(time.time())
         # emergency_expert_count = count_emergency_expert(from_data.location,db)
         # emergency_management_count = count_emergency_management(from_data.location,db)
 
@@ -123,91 +125,7 @@ async def mine(request: Request,body = Depends(remove_xss_json),db: Session = De
         list_1 = [{"name": point_type_to_list[dataType], "num": len(lst), "list": lst}
                   for dataType, lst in lists.items() if lst]
 
-        # list_1 = []
-        # point_list = get_point_list(body,db)
-        # emergency_expert_list = [] #专家 1
-        # rescue_materia_warehouse_list = [] #救援物资-仓库 2
-        # emergency_shelter_list = [] # 应急避难场所 3
-        # waterlogged_roads_list = [] # 易涝点 4
-        # school_list = [] # 学校 5
-        # hospital_list = [] #医院 6
-        # gasoline_station_list = [] #加油站 7
-        # mining_company_list = []# 非煤矿山企业 8
-        # chemical_company_list = [] #危化企业 9
-        # ship_realtilme_positioninfo_list = []# 船舶动态 10
-        # for point in point_list:
-        #     if point.dataType == 1:
-        #         emergency_expert_list.append({"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude, "latitude": point.latitude})
-        #     elif point.dataType == 2:
-        #         rescue_materia_warehouse_list.append({"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
-        #              "latitude": point.latitude})
-        #     elif point.dataType == 3:
-        #         emergency_shelter_list.append(
-        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
-        #              "latitude": point.latitude})
-        #     elif point.dataType == 4:
-        #         waterlogged_roads_list.append(
-        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
-        #              "latitude": point.latitude})
-        #     elif point.dataType == 5:
-        #         school_list.append(
-        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
-        #              "latitude": point.latitude})
-        #     elif point.dataType == 6:
-        #         hospital_list.append(
-        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
-        #              "latitude": point.latitude})
-        #     elif point.dataType == 7:
-        #         gasoline_station_list.append(
-        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
-        #              "latitude": point.latitude})
-        #     elif point.dataType == 8:
-        #         mining_company_list.append(
-        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
-        #              "latitude": point.latitude})
-        #     elif point.dataType == 9:
-        #         chemical_company_list.append(
-        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
-        #              "latitude": point.latitude})
-        #     elif point.dataType == 10:
-        #         ship_realtilme_positioninfo_list.append(
-        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
-        #              "latitude": point.latitude})
-        # num = len(emergency_expert_list)
-        # if num>0:
-        #     list_1.append({"name":"专家","num":num,"list":emergency_expert_list})
-        # num = len(rescue_materia_warehouse_list)
-        # if num>0:
-        #     list_1.append({"name":"救援物资仓库","num":num,"list":rescue_materia_warehouse_list})
-        # num = len(emergency_shelter_list)
-        # if num>0:
-        #     list_1.append({"name":"应急避难场所","num":num,"list":emergency_shelter_list})
-        # num = len(waterlogged_roads_list)
-        # if num>0:
-        #     list_1.append({"name":"易涝点","num":num,"list":waterlogged_roads_list})
-        # num = len(school_list)
-        # if num>0:
-        #     list_1.append({"name":"学校","num":num,"list":school_list})
-        # num = len(hospital_list)
-        # if num>0:
-        #     list_1.append({"name":"医院","num":num,"list":hospital_list})
-        # num = len(gasoline_station_list)
-        # if num>0:
-        #     list_1.append({"name":"加油站","num":num,"list":gasoline_station_list})
-        # num = len(mining_company_list)
-        # if num>0:
-        #     list_1.append({"name":"非煤矿山企业","num":num,"list":mining_company_list})
-        # num = len(chemical_company_list)
-        # if num>0:
-        #     list_1.append({"name":"危化企业","num":num,"list":chemical_company_list})
-        # num = len(ship_realtilme_positioninfo_list)
-        # if num>0:
-        #     list_1.append({"name":"船舶动态","num":num,"list":ship_realtilme_positioninfo_list})
-
-
-        # hospital_list = get_hospital_list(body,db)
-        # emergency_shelter_list = get_emergency_shelter_list(body,db)
-        # waterlogged_roads_list = get_waterlogged_roads_list(body,db)
+        print(time.time())
 
 
         return {
@@ -222,16 +140,7 @@ async def mine(request: Request,body = Depends(remove_xss_json),db: Session = De
                 "areaSize":0,
                 "GDP":0,
                 "list":list_1
-                #     [{
-                #     "name":"应急避难场所","num":len(emergency_shelter_list),"list":[{"name":shelter.name,"longitude":shelter.longitude,"latitude":shelter.latitude} for shelter in emergency_shelter_list]
-                # },{
-                #     "name":"易涝点","num":len(waterlogged_roads_list),"list":[{"name":waterlogged.name,"longitude":waterlogged.longitude,"latitude":waterlogged.latitude} for waterlogged in waterlogged_roads_list]
-                # },{
-                #     "name":"医院","num":len(hospital_list),"list":[{"name":hospital.name,"longitude":hospital.longitude,"latitude":hospital.latitude} for hospital in hospital_list]
-                # }
-                # ]
-                # "emergencyExpertCount":emergency_expert_count,
-                # "emergencyManagementCount":emergency_management_count
+
             }
         }
     except Exception as e:

+ 25 - 9
utils/spatial/__init__.py

@@ -85,7 +85,21 @@ def get_town_list(locations,):
                 })
 
     return intersected_names_and_pacs, len(intersected_names_and_pacs)
-
+def get_bqw_yj_quyu_data(area_code,db):
+    sql = text(
+        """SELECT ifnull(populationSize,0) as populationSize,
+        ifnull(populationSize_unit,'') as populationSize_unit,
+        ifnull(areaSize,0) as areaSize,
+         ifnull(areaSize_unit,'')as areaSize_unit,ifnull(GDP,0) as GDP,ifnull(GDP_unit,'') as GDP_unit FROM sharedb.`bqw_yj_quyu_data` where `area_code`like :code order by area_code,year desc """).bindparams(
+        code=f'%{area_code}%')
+    # 执行查询
+    result = db.execute(sql).fetchone()
+
+    # 处理结果
+    if result:
+        return dict(result)
+    else:
+        return {"populationSize":0,"populationSize_unit":"","areaSize":0,"areaSize_unit":"","GDP":0,"GDP_unit":""}
 def get_town_village_list(locations,db):
     # 初始化一个空的MultiPolygon来容纳所有多边形
 
@@ -110,12 +124,13 @@ def get_town_village_list(locations,db):
         # town_count+=1
         town_pac = town.pac
         properties = json.loads(town.properties)
+        quyu_data = get_bqw_yj_quyu_data(town.pac,db)
         town_data = {
             "townName": town.name,
             "code": town.pac,
-            "populationSize": 0,  # 假设值,需要从数据中获取
-            "areaSize": properties['GEO_AREA'],  # 交集区域的面积
-            "GDP": 0  # 假设值,需要从数据中获取
+            "populationSize": f"{quyu_data['populationSize']}{quyu_data['populationSize_unit']}",
+            "areaSize": f"{quyu_data['areaSize']}{quyu_data['areaSize_unit']}",
+            "GDP": f"{quyu_data['GDP']}{quyu_data['GDP_unit']}"  # 假设值,需要从数据中获取
         }
 
         # intersected_villages = db.query(TpCjSqGeoJSONData).filter(
@@ -124,15 +139,16 @@ def get_town_village_list(locations,db):
         intersected_villages = get_village_list(locations,db,pac=f""" where pac like '{town_pac}%'""")
         intersected_villages_names_and_pacs = []
         for village in intersected_villages:
-            town_data['populationSize']+=village.populationSize
-            town_data['GDP']+=village.GDP
+            quyu_data = get_bqw_yj_quyu_data(village.pac, db)
+            # town_data['populationSize']+=village.populationSize
+            # town_data['GDP']+=village.GDP
             # properties = json.loads(village.properties)
             village_data = {
                 "villageName": village.name,
                 "code": village.pac,
-                "populationSize": village.populationSize,  # 假设值,需要从数据中获取
-                "areaSize": properties['GEO_AREA'],  # 交集区域的面积  0,#
-                "GDP": village.GDP  # 假设值,需要从数据中获取
+                "populationSize": f"{quyu_data['populationSize']}{quyu_data['populationSize_unit']}",#village.populationSize,  # 假设值,需要从数据中获取
+                "areaSize": f"{quyu_data['areaSize']}{quyu_data['areaSize_unit']}",#properties['GEO_AREA'],  # 交集区域的面积  0,#
+                "GDP": f"{quyu_data['GDP']}{quyu_data['GDP_unit']}"#village.GDP  # 假设值,需要从数据中获取
             }
             intersected_villages_names_and_pacs.append(village_data)
         villageCount= len(intersected_villages_names_and_pacs)