scheme_create.py 3.9 KB
# coding=utf-8
#author:        4N
#createtime:    2021/9/16
#email:         nheweijun@sina.com


import uuid
from app.models import TileScheme,db
from app.util.component.ApiTemplate import ApiTemplate
import datetime
import json
class Api(ApiTemplate):
    api_name = "创建方案"

    def process(self):

        # 返回结果
        res = {}
        res["result"] = False
        try:
            # 业务逻辑

            data = self.para
            # extent = [float(x) for x in  data.get("extent").split(",")] if data.get("extent") else [0,0,0,0]
            # top_left = [float(x) for x in data.get("top_left").split(",")] if data.get("top_left") else [0, 0]

            parameter = {}
            for l_dict in json.loads(data.get("levels")):
                parameter[str(l_dict["level"])] = {"resolution":l_dict["resolution"],"scale":l_dict["scale"]}
            parameter["cols"] = int(data.get("cols",256))
            parameter["rows"] = int(data.get("rows",256))
            parameter["dpi"] = int(data.get("dpi",96))
            parameter["wkt"] = data.get("crs_wkt")
            parameter["x"] = eval(data.get("top_left").split(",")[0])
            parameter["y"] = eval(data.get("top_left").split(",")[1])


            guid = uuid.uuid1().__str__()
            tile_scheme = TileScheme(
                guid = guid,
                name = data.get("name"),
                alias = data.get("alias"),
                description = data.get("description"),
                crs = data.get("crs"),
                crs_wkt = data.get("crs_wkt"),
                extent = data.get("extent"),
                top_left =  data.get("top_left"),
                # ymin = extent[1],
                # xmax = extent[2],
                # ymax = extent[3],
                # origin_x = top_left[0],
                # origin_y = top_left[1],
                levels = json.dumps(json.loads(data.get("levels"))),
                dpi = int(data.get("dpi",96)),
                rows = int(data.get("rows",256)),
                cols = int(data.get("cols",256)),
                update_time = datetime.datetime.now(),
                parameter=json.dumps(parameter)
            )

            db.session.add(tile_scheme)
            db.session.commit()
            res["data"] = guid
            res["result"] = True
        except Exception as e:
            db.session.rollback()
            raise Exception("参数填写错误!")
        return res

    api_doc = {

        "tags": ["方案接口"],
        "parameters": [
            {"name": "name",
             "in": "formData",
             "type": "string"},
            {"name": "alias",
             "in": "formData",
             "type": "string"},
            {"name": "description",
             "in": "formData",
             "type": "string"},
            {"name": "crs",
             "in": "formData",
             "type": "string"},
            {"name": "crs_wkt",
             "in": "formData",
             "type": "string"},
            {"name": "extent",
             "in": "formData",
             "type": "string"},
            {"name": "top_left",
             "in": "formData",
             "type": "string"},
            {"name": "rows",
             "in": "formData",
             "type": "string"},
            {"name": "cols",
             "in": "formData",
             "type": "string"},
            {"name": "dpi",
             "in": "formData",
             "type": "string"},
            {"name": "levels",
             "in": "formData",
             "type": "string"},
            # {"name": "parameter",
            #  "in": "formData",
            #  "type": "string"},

        ],
        "responses": {
            200: {
                "schema": {
                    "properties": {
                    }
                }
            }
        }
    }