waterHeight.py 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. import requests
  2. import json
  3. import codecs
  4. import os
  5. from datetime import datetime, timedelta
  6. qxData = []
  7. swData = []
  8. swHeightData = []
  9. wagaData = []
  10. def GetStartEndTime(deltaHour = 6):
  11. # 获取当前时间
  12. current_time = datetime.now()
  13. # 取整到最近的小时,即当前时间的小时数不变,分钟和秒数归零
  14. rounded_time = datetime(current_time.year, current_time.month, current_time.day, current_time.hour, 0, 0)
  15. # 往前推6个小时
  16. previous_time = rounded_time - timedelta(hours=deltaHour)
  17. # 输出两个时间
  18. return rounded_time.strftime('%Y-%m-%d %H:%M:%S'), previous_time.strftime('%Y-%m-%d %H:%M:%S')
  19. #return "2024-07-13 16:00:00", "2024-07-10 16:00:00"
  20. def GetSixHourQXData():
  21. global qxData
  22. requestData = {}
  23. requestHead = {}
  24. requestData["eqaddvcd"] = "421083"
  25. requestData["pageSize"] = "80"
  26. requestHead["token"] = "6C60F37D40B48DECF9A3F2CC1A5A50142C4BE52F26D15B171153F20DB63960696A439E435DDCA9AF925F13338470FFBDDC98CEE65AFBC92C2EB4E44C0A757DB5"
  27. responese = requests.post("http://111.4.141.191:18081/shareddata/api/v1/baseinfo/stbprp/qx",data=requestData,headers=requestHead)
  28. qxDataDic = {}
  29. jsonData = json.loads(responese.content)
  30. index = 0
  31. for jsData in jsonData["data"]["list"]:
  32. #if (114.115926000756 > jsData["LGTD"] and jsData["LGTD"] > 113.410714576698 and 30.2676753765206 > jsData["LTTD"] and jsData["LTTD"] > 29.8114499954776):
  33. qxData.append(jsData)
  34. qxDataDic[jsData["STCD"]] = index
  35. index += 1
  36. requestData = {}
  37. sts = ''
  38. index = 0
  39. for qx in qxData:
  40. if index == 0:
  41. sts += qx["STCD"]
  42. else:
  43. sts += "," + qx["STCD"]
  44. index += 1
  45. etm,stm = GetStartEndTime(6)
  46. requestData["sts"] = sts
  47. requestData["etm"] = etm
  48. requestData["stm"] = stm
  49. #print(sts)
  50. dropDic = {}
  51. responese = requests.post("http://111.4.141.191:18081/shareddata/api/v1/monitdata/pptn/qx",data=requestData,headers=requestHead)
  52. jsonData = json.loads(responese.content)
  53. for jd in jsonData['data']:
  54. if jd["STCD"] not in dropDic.keys():
  55. dropDic[jd["STCD"]] = jd["DRP"]
  56. else:
  57. dropDic[jd["STCD"]] += jd["DRP"]
  58. for key in dropDic.keys():
  59. if key in qxDataDic:
  60. qxData[qxDataDic[key]]["dropSum6"] = dropDic[key]
  61. for sw in qxData:
  62. print(sw["STNM"] + " 经度:" + str(sw["LGTD"]) + " 维度:" + str(sw["LTTD"]) + " 六小时内降雨量:" + str(sw["dropSum6"]))
  63. def GetSixHourSWData():
  64. global swData
  65. requestData = {}
  66. requestHead = {}
  67. requestData["eqaddvcd"] = "421083"
  68. requestData["pageSize"] = "80"
  69. requestHead["token"] = "6C60F37D40B48DECF9A3F2CC1A5A50142C4BE52F26D15B171153F20DB63960696A439E435DDCA9AF925F13338470FFBDDC98CEE65AFBC92C2EB4E44C0A757DB5"
  70. responese = requests.post("http://111.4.141.191:18081/shareddata/api/v1/baseinfo/stbprp/sw",data=requestData,headers=requestHead)
  71. swDataDic = {}
  72. jsonData = json.loads(responese.content)
  73. index = 0
  74. for jsData in jsonData["data"]["list"]:
  75. #if (114.115926000756 > jsData["LGTD"] and jsData["LGTD"] > 113.410714576698 and 30.2676753765206 > jsData["LTTD"] and jsData["LTTD"] > 29.8114499954776):
  76. swData.append(jsData)
  77. swDataDic[jsData["STCD"]] = index
  78. index += 1
  79. requestData = {}
  80. sts = ''
  81. index = 0
  82. for sw in swData:
  83. if index == 0:
  84. sts += sw["STCD"]
  85. else:
  86. sts += "," + sw["STCD"]
  87. index += 1
  88. print(sts)
  89. etm,stm = GetStartEndTime(6)
  90. requestData["sts"] = sts
  91. requestData["etm"] = etm
  92. requestData["stm"] = stm
  93. dropDic = {}
  94. wthDic = {}
  95. responese = requests.post("http://111.4.141.191:18081/shareddata/api/v1/monitdata/pptn/sw",data=requestData,headers=requestHead)
  96. jsonData = json.loads(responese.content)
  97. for jd in jsonData['data']:
  98. if jd["STCD"] not in dropDic.keys():
  99. dropDic[jd["STCD"]] = jd["DRP"]
  100. else:
  101. dropDic[jd["STCD"]] += jd["DRP"]
  102. wthDic[jd["STCD"]] = jd["WTH"]
  103. for key in dropDic.keys():
  104. if key in swDataDic:
  105. swData[swDataDic[key]]["dropSum6"] = dropDic[key]
  106. swData[swDataDic[key]]["wth"] = wthDic[key]
  107. # 使用列表推导过滤出包含 'dropSum6' 字段的字典
  108. filtered_swData = [item for item in swData if 'dropSum6' in item]
  109. swData = filtered_swData
  110. for sw in swData:
  111. print(sw["STNM"] + " 经度:" + str(sw["LGTD"]) + " 维度:" + str(sw["LTTD"]) + " 六小时内降雨量:" + str(sw["dropSum6"]) + " 天气:" + str(sw["wth"]))
  112. def GetSWHegihtData():
  113. global swHeightData
  114. swDataDic = {}
  115. requestData = {}
  116. requestHead = {}
  117. requestHead["token"] = "6C60F37D40B48DECF9A3F2CC1A5A50142C4BE52F26D15B171153F20DB63960696A439E435DDCA9AF925F13338470FFBDDC98CEE65AFBC92C2EB4E44C0A757DB5"
  118. if not os.path.exists("importZa.json"):
  119. requestData["pageSize"] = "10000"
  120. responese = requests.post("http://111.4.141.191:18081/shareddata/api/v1/baseinfo/stbprp/sw",data=requestData,headers=requestHead)
  121. importZ = ["福田寺","黄丝南","下新河","子贝渊","沙螺"]
  122. jsonData = json.loads(responese.content)
  123. index = 0
  124. for jsData in jsonData["data"]["list"]:
  125. esixt = False
  126. for im in importZ:
  127. if im in jsData["STNM"]:
  128. esixt = True
  129. if esixt:
  130. swHeightData.append(jsData)
  131. swDataDic[jsData["STCD"]] = index
  132. index += 1
  133. newJ = json.dumps(swHeightData, ensure_ascii=False)
  134. with codecs.open("importZa.json", "w+", encoding="utf-8") as nj:
  135. nj.write(newJ)
  136. else:
  137. index = 0
  138. with codecs.open("importZa.json","r", encoding="utf-8") as iz:
  139. izContent = json.loads(iz.read())
  140. for izc in izContent:
  141. swHeightData.append(izc)
  142. swDataDic[izc["STCD"]] = index
  143. index+=1
  144. # requestData["eqaddvcd"] = "421083"
  145. # requestData["pageSize"] = "80"
  146. # responese = requests.post("http://111.4.141.191:18081/shareddata/api/v1/baseinfo/stbprp/sw",data=requestData,headers=requestHead)
  147. # jsonData = json.loads(responese.content)
  148. # for jsData in jsonData["data"]["list"]:
  149. # if jsData not in swHeightData:
  150. # swHeightData.append(jsData)
  151. # swDataDic[jsData["STCD"]] = index
  152. # index += 1
  153. requestData = {}
  154. etm,stm = GetStartEndTime(0)
  155. requestData["pageSize"] = 300
  156. requestData["etm"] = etm
  157. requestData["stm"] = stm
  158. dwzDic = {}
  159. upzDic = {}
  160. tgtqDic = {}
  161. responese = requests.post("http://111.4.141.191:18081/shareddata/api/v1/monitdata/rw/st_was_r",data=requestData,headers=requestHead)
  162. jsonData = json.loads(responese.content)
  163. for jd in jsonData['data']["list"]:
  164. dwzDic[jd["STCD"]] = jd["DWZ"]
  165. upzDic[jd["STCD"]] = jd["UPZ"]
  166. tgtqDic[jd["STCD"]] = jd["TGTQ"]
  167. for key in dwzDic.keys():
  168. if key in swDataDic.keys():
  169. swHeightData[swDataDic[key]]["dwz"] = dwzDic[key]
  170. swHeightData[swDataDic[key]]["upz"] = upzDic[key]
  171. swHeightData[swDataDic[key]]["tgtq"] = tgtqDic[key]
  172. # 使用列表推导过滤出包含 'dropSum6' 字段的字典
  173. filtered_swData = [item for item in swHeightData if 'dwz' in item]
  174. sub_swData = [item for item in swHeightData if 'dwz' not in item]
  175. for ssw in sub_swData:
  176. ssw["dwz"] = None
  177. ssw["upz"] = None
  178. ssw["tgtq"] = None
  179. filtered_swData.append(ssw)
  180. swHeightData = filtered_swData
  181. for sw in swHeightData:
  182. #print(sw)
  183. print(sw["STNM"] + " 编码:" + str(sw["STCD"]) + " 经度:" + str(sw["LGTD"]) + " 维度:" + str(sw["LTTD"]) + " 下水位:" + str(sw["dwz"]) + " 下水位:" + str(sw["dwz"]) + " 上水位:" + str(sw["upz"]) + " 流量:" + str(sw["tgtq"]))
  184. def GetWaGaData():
  185. global wagaData
  186. requestData = {}
  187. requestHead = {}
  188. requestData["pageSize"] = "320"
  189. requestHead["token"] = "6C60F37D40B48DECF9A3F2CC1A5A50142C4BE52F26D15B171153F20DB63960696A439E435DDCA9AF925F13338470FFBDDC98CEE65AFBC92C2EB4E44C0A757DB5"
  190. responese = requests.post("http://111.4.141.191:18081/shareddata/api/v1/baseinfo/bfx/fx_att_waga",data=requestData,headers=requestHead)
  191. wagaDataDic = {}
  192. jsonData = json.loads(responese.content)
  193. index = 0
  194. for jsData in jsonData["data"]["list"]:
  195. #if (114.115926000756 > jsData["LGTD"] and jsData["LGTD"] > 113.410714576698 and 30.2676753765206 > jsData["LTTD"] and jsData["LTTD"] > 29.8114499954776):
  196. wagaData.append(jsData)
  197. wagaDataDic[jsData["WAGA_CODE"]] = index
  198. index += 1
  199. requestData = {}
  200. etm,stm = GetStartEndTime(0)
  201. #requestData["etm"] = etm
  202. #requestData["stm"] = stm
  203. dwzDic = {}
  204. upzDic = {}
  205. tgtqDic = {}
  206. for waga in wagaData:
  207. #requestData["waga_code"] = waga["WAGA_CODE"]
  208. requestData["waga_name"] = waga["WAGA_NAME"]
  209. responese = requests.post("http://111.4.141.191:18081/shareddata/api/v1/monitdata/rw/waga_st_info",data=requestData,headers=requestHead)
  210. jsonData = json.loads(responese.content)
  211. if(len(jsonData["data"]["list"]) > 0):
  212. print(waga["WAGA_NAME"])
  213. print(waga["WAGA_CODE"])
  214. print(len(jsonData["data"]["list"]))
  215. #GetSixHourQXData()
  216. #GetSixHourSWData()
  217. GetSWHegihtData()
  218. #GetWaGaData()