|
@@ -89,15 +89,14 @@ def clear_chat_history():
|
|
|
return chat_history
|
|
|
|
|
|
|
|
|
-def create_chat(msg,type):
|
|
|
+def create_chat(msg, type):
|
|
|
# msg = data['msg']
|
|
|
-
|
|
|
|
|
|
# type = data['type']
|
|
|
if type == 'selectLand':
|
|
|
- #同音字替换
|
|
|
+ # 同音字替换
|
|
|
msg = replace_word(msg, target_word)
|
|
|
- words_to_replace1 = ["爆破", "爆坡","鲍坡"]
|
|
|
+ words_to_replace1 = ["爆破", "爆坡", "鲍坡"]
|
|
|
for word in words_to_replace1:
|
|
|
msg = msg.replace(word, "抱坡")
|
|
|
print(msg)
|
|
@@ -107,7 +106,7 @@ def create_chat(msg,type):
|
|
|
res = update_chat_history(msg)
|
|
|
print(res) # 打印生成的回复
|
|
|
|
|
|
- #未找到相关数据提示
|
|
|
+ # 未找到相关数据提示
|
|
|
prompt = "根据提供的信息,您的表述不够清晰明确,为更好的达到您的选址需求,请重新描述您的选址条件。"
|
|
|
addtress = ['抱坡区', '天涯区', '崖州区', '海棠区', '吉阳区']
|
|
|
land = ['园地', '耕地', '林地', '草地', '湿地', '公共卫生用地', '老年人社会福利用地', '儿童社会福利用地', '残疾人社会福利用地', '其他社会福利用地', '零售商业用地', '批发市场用地', '餐饮用地', '旅馆用地', '公用设施营业网点用地', '娱乐用地', '康体用地', '一类工业用地', '二类工业用地', '广播电视设施用地', '环卫用地', '消防用地', '干渠', '水工设施用地', '其他公用设施用地', '公园绿地', '防护绿地', '广场用地', '军事设施用地', '使领馆用地', '宗教用地', '文物古迹用地', '监教场所用地', '殡葬用地', '其他特殊用地', '河流水面', '湖泊水面', '水库水面', '坑塘水面', '沟渠', '冰川及常年积雪', '渔业基础设施用海', '增养殖用海', '捕捞海域', '工业用海', '盐田用海', '固体矿产用海', '油气用海', '可再生能源用海', '海底电缆管道用海', '港口用海', '农业设施建设用地', '工矿用地', '畜禽养殖设施建设用地', '水产养殖设施建设用地', '城镇住宅用地', '特殊用地', '居住用地', '绿地与开敞空间用地', '水田', '水浇地', '旱地', '果园', '茶园', '橡胶园', '其他园地', '乔木林地', '竹林地', '城镇社区服务设施用地', '农村宅基地', '农村社区服务设施用地', '机关团体用地', '科研用地', '文化用地', '教育用地', '体育用地', '医疗卫生用地', '社会福利用地', '商业用地', '商务金融用地', '二类农村宅基地', '图书与展览用地',
|
|
@@ -121,20 +120,19 @@ def create_chat(msg,type):
|
|
|
landType = json_res["landType"]
|
|
|
poi = json_res["poi"]
|
|
|
# if landType != "未找到相关数据" and landType != "" and districtName != "未找到相关数据"and districtName != "":
|
|
|
-
|
|
|
|
|
|
if landType in land and districtName in addtress:
|
|
|
- json_res = jsonResToDict(json_res,poi)
|
|
|
+ json_res = jsonResToDict(json_res, poi)
|
|
|
# print(json_res)
|
|
|
else:
|
|
|
json_res = prompt
|
|
|
- json_res = res_error(json_res, "selectLand","error")
|
|
|
+ json_res = res_error(json_res, "selectLand", "error")
|
|
|
except:
|
|
|
json_res = prompt
|
|
|
- json_res = res_error(json_res, "selectLand","error")
|
|
|
+ json_res = res_error(json_res, "selectLand", "error")
|
|
|
else:
|
|
|
json_res = prompt
|
|
|
- json_res = res_error(json_res, "selectLand","error")
|
|
|
+ json_res = res_error(json_res, "selectLand", "error")
|
|
|
return json_res
|
|
|
elif type == 'answer':
|
|
|
# json_res = route_query(msg)
|
|
@@ -145,7 +143,7 @@ def create_chat(msg,type):
|
|
|
json_res = res_success(json_res, "answer", "success")
|
|
|
print(json_res) # 打印生成的回复
|
|
|
return json_res
|
|
|
-
|
|
|
+
|
|
|
|
|
|
# 智能选址
|
|
|
|
|
@@ -176,19 +174,17 @@ def update_chat_history(user_message):
|
|
|
# 将大模型解析的结果转换为选址需要的数据格式
|
|
|
|
|
|
|
|
|
-def jsonResToDict(json_res,poi):
|
|
|
- #位置点为空,利用行政区划选址
|
|
|
+def jsonResToDict(json_res, poi):
|
|
|
+ # 1.查询选址范围信息
|
|
|
+ # 位置点为空,利用行政区划选址
|
|
|
if poi == "":
|
|
|
print("位置点为空,利用行政区划选址")
|
|
|
-
|
|
|
-
|
|
|
+ ewkt = getAiDistrict(json_res["districtName"])
|
|
|
# 位置点不为空,利用位置点选址
|
|
|
else:
|
|
|
+ ewkt = getPoiArea(json_res["poi"],json_res["buffer"])
|
|
|
print("位置点不为空,利用位置点选址")
|
|
|
-[]
|
|
|
- # 1.查询选址范围信息
|
|
|
- districtName = json_res["districtName"]
|
|
|
- ewkt = getAiDistrict(districtName)
|
|
|
+
|
|
|
# 2.保存选址范围信息
|
|
|
geomId = saveGeom(ewkt)
|
|
|
# 3.获取用地类型信息
|
|
@@ -313,6 +309,19 @@ def getAiDistrict(name):
|
|
|
res = cur.fetchone()
|
|
|
return res["geom"]
|
|
|
|
|
|
+# 获取位置点信息区域
|
|
|
+
|
|
|
+
|
|
|
+def getPoiArea(name, buffer):
|
|
|
+ with conn.cursor(cursor_factory=DictCursor) as cur:
|
|
|
+ sql = "SELECT public.st_asewkt(geom) as geom FROM base.t_fzss_fzxz_ai_district WHERE name = %s"
|
|
|
+ sql="SELECT public.st_asewkt(public.st_buffer(geom::public.geography,%s)) FROM vector.poi WHERE name like '%%s%'"
|
|
|
+ complete_sql = cur.mogrify(sql, (name,buffer,)).decode('utf-8')
|
|
|
+ logger.info(f"Executing SQL: {complete_sql}")
|
|
|
+ cur.execute(sql, (name,buffer,))
|
|
|
+ res = cur.fetchone()
|
|
|
+ return res["geom"]
|
|
|
+
|
|
|
# 保存选址范围信息
|
|
|
|
|
|
|
|
@@ -372,7 +381,7 @@ def update_chat_history_simple(user_message):
|
|
|
)
|
|
|
|
|
|
# 获取机器人回复
|
|
|
- bot_message = res["response"] + "感谢您的提问,四维智能助手将竭诚为您解答。"
|
|
|
+ bot_message = res["response"] + "感谢您的提问,四维智能助手将竭诚为您解答。"
|
|
|
|
|
|
# 更新聊天历史
|
|
|
chat_history += "\\n智能助手:" + bot_message
|
|
@@ -380,6 +389,7 @@ def update_chat_history_simple(user_message):
|
|
|
# 返回机器人的回复
|
|
|
return bot_message
|
|
|
|
|
|
+
|
|
|
def route_query(msg):
|
|
|
response = query(msg)
|
|
|
# print(response)
|
|
@@ -390,4 +400,4 @@ def route_query(msg):
|
|
|
# resObj["type"] = "answer"
|
|
|
# return resObj
|
|
|
# return {"error": "Something went wrong"}, 400
|
|
|
- return response
|
|
|
+ return response
|