DPSA/app/main.py
2025-05-06 20:27:42 +08:00

86 lines
3.5 KiB
Python

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)