import numpy as np from flask import Flask, request, jsonify from flasgger import Swagger import json from algorithms import bilinear_interpolation app = Flask(__name__) # 配置 Swagger app.config['SWAGGER'] = { 'title': '插值计算API', 'description': '提供基于双线性插值的计算服务', 'version': '1.0.0', 'uiversion': 3 } swagger = Swagger(app) @app.route('/PythonCalculate', methods=['POST']) def calculate(): """ 插值计算接口 --- tags: - 计算 parameters: - in: body name: body required: true schema: type: object properties: text: type: string description: 包含计算参数的JSON字符串 example: '{"FuncName":"calculate_main","ClassName":"","Par":[{"name":"X_NUM","dataType":"0","arrayType":"0","isOut":"2","data":5},{"name":"Y_NUM","dataType":"0","arrayType":"0","isOut":"2","data":5},{"name":"X","dataType":"1","arrayType":"0","isOut":"2","data":2.5},{"name":"Y","dataType":"1","arrayType":"0","isOut":"2","data":3.5},{"name":"X0","dataType":"1","arrayType":"1","isOut":"2","data":[1,2,3,4,5]},{"name":"Y0","dataType":"1","arrayType":"1","isOut":"2","data":[1,2,3,4,5]},{"name":"Z0","dataType":"1","arrayType":"1","isOut":"2","data":[1,2,3,4,5,2,3,4,5,6,3,4,5,6,7,4,5,6,7,8,5,6,7,8,9]},{"name":"Z","dataType":"1","arrayType":"0","isOut":"1","data":0},{"name":"ZX","dataType":"1","arrayType":"0","isOut":"1","data":0},{"name":"ZY","dataType":"1","arrayType":"0","isOut":"1","data":0},{"name":"Z_OUT","dataType":"1","arrayType":"1","isOut":"1","data":0}]}' responses: 200: description: 计算结果 schema: type: object properties: text: type: string description: 包含计算结果的JSON字符串 """ # 解析输入JSON request_data = request.json input_data = json.loads(request_data["text"]) # 提取输入参数 X_NUM = input_data["Par"][0]["Data"] Y_NUM = input_data["Par"][1]["Data"] X = input_data["Par"][2]["Data"] Y = input_data["Par"][3]["Data"] X0 = input_data["Par"][4]["Data"] Y0 = input_data["Par"][5]["Data"] Z0 = input_data["Par"][6]["Data"] # 调用算法函数 Z, ZX, ZY, Z_OUT = bilinear_interpolation( X_NUM, Y_NUM, X, Y, X0, Y0, np.array(Z0).reshape(Y_NUM, X_NUM) ) # 构建输出JSON output_data = { "funcName": "calculate_main", "className": "", "par": [ {"name": "X_NUM", "dataType": 0, "arrayType": 0, "isOut": 2, "data": X_NUM}, {"name": "Y_NUM", "dataType": 0, "arrayType": 0, "isOut": 2, "data": Y_NUM}, {"name": "X", "dataType": 1, "arrayType": 0, "isOut": 2, "data": X}, {"name": "Y", "dataType": 2, "arrayType": 0, "isOut": 2, "data": Y}, {"name": "X0", "dataType": 1, "arrayType": 1, "isOut": 2, "data": X0}, {"name": "Y0", "dataType": 1, "arrayType": 1, "isOut": 2, "data": Y0}, {"name": "Z0", "dataType": 1, "arrayType": 1, "isOut": 2, "data": Z0}, {"name": "Z", "dataType": 1, "arrayType": 0, "isOut": 1, "data": float(Z)}, {"name": "ZX", "dataType": 1, "arrayType": 0, "isOut": 1, "data": float(ZX)}, {"name": "ZY", "dataType": 1, "arrayType": 0, "isOut": 1, "data": float(ZY)}, {"name": "Z_OUT", "dataType": 1, "arrayType": 1, "isOut": 1, "data": Z_OUT} ] } return jsonify(output_data) if __name__ == '__main__': app.run(debug=True)