|
@@ -1,23 +1,27 @@
|
|
|
-import json
|
|
|
+import os.path
|
|
|
import traceback
|
|
|
|
|
|
+import requests
|
|
|
from flask import request, jsonify
|
|
|
from flask_restx import Resource, Namespace, reqparse
|
|
|
|
|
|
from app.defines import StatesCode
|
|
|
-from application import Application
|
|
|
+from app.mission_jobs.application import Application
|
|
|
+from config import Config
|
|
|
from starearth.utils.general_utils import print_log
|
|
|
|
|
|
+config = Config()
|
|
|
ns = Namespace('mission', description='任务管理 API接口')
|
|
|
|
|
|
slice_mission_parser = reqparse.RequestParser(bundle_errors=True)
|
|
|
-slice_mission_parser.add_argument(name='data_path', type=str, location='from', required=False,help='数据目录')
|
|
|
-slice_mission_parser.add_argument(name='tile_size', type=int, location='from', required=False,help='瓦片大小')
|
|
|
-slice_mission_parser.add_argument(name='tile_format', type=int, location='from', required=False,help='瓦片格式:png、jpeg、tif')
|
|
|
-slice_mission_parser.add_argument(name='auto_zoom', type=int, location='from', required=False,help='是否自动切片,0:否,1:是')
|
|
|
-slice_mission_parser.add_argument(name='min_zoom', type=int, location='from', required=False,help='最小切片层级')
|
|
|
-slice_mission_parser.add_argument(name='max_zoom', type=int, location='from', required=False,help='最大切片层级')
|
|
|
-
|
|
|
+slice_mission_parser.add_argument(name='data_path', type=str, location='form', required=False, help='数据目录')
|
|
|
+slice_mission_parser.add_argument(name='tile_size', type=int, location='form', required=False, help='瓦片大小')
|
|
|
+slice_mission_parser.add_argument(name='tile_format', type=str, location='form', required=False,
|
|
|
+ help='瓦片格式:png、jpeg、tif')
|
|
|
+slice_mission_parser.add_argument(name='auto_zoom', type=int, location='form', required=False,
|
|
|
+ help='是否自动切片,0:否,1:是')
|
|
|
+slice_mission_parser.add_argument(name='min_zoom', type=int, location='form', required=False, help='最小切片层级')
|
|
|
+slice_mission_parser.add_argument(name='max_zoom', type=int, location='form', required=False, help='最大切片层级')
|
|
|
|
|
|
|
|
|
@ns.route('/mission_slice_api')
|
|
@@ -30,12 +34,15 @@ class MissionAPI(Resource):
|
|
|
try:
|
|
|
form = request.form
|
|
|
data_path = form.get('data_path')
|
|
|
- tile_size = form.get('tile_size')
|
|
|
- tile_grid = form.get('tile_grid')
|
|
|
- tile_format = form.get('tile_format')
|
|
|
- auto_zoom = form.get('auto_zoom')
|
|
|
- min_zoom = form.get('min_zoom')
|
|
|
- max_zoom = form.get('max_zoom')
|
|
|
+ tile_size = int(form.get('tile_size', 256))
|
|
|
+ tile_grid = form.get('tile_grid', 'WebMercatorQuad')
|
|
|
+ tile_format = form.get('tile_format', 'png')
|
|
|
+ auto_zoom = int(form.get('auto_zoom', 1))
|
|
|
+ min_zoom = int(form.get('min_zoom', 1))
|
|
|
+ max_zoom = int(form.get('max_zoom', 19))
|
|
|
+
|
|
|
+ if not data_path:
|
|
|
+ return jsonify(code=StatesCode.PARA_ERROR, message='输入路径错误')
|
|
|
|
|
|
application = Application()
|
|
|
application.new_mission(
|
|
@@ -46,20 +53,39 @@ class MissionAPI(Resource):
|
|
|
auto_zoom=auto_zoom,
|
|
|
min_zoom=min_zoom,
|
|
|
max_zoom=max_zoom
|
|
|
-
|
|
|
)
|
|
|
|
|
|
# 添加至dem
|
|
|
- # try:
|
|
|
- # key_status_upload(proxy_host=config.common.RPOXY_SERVICE_HOST, # 上报服务的IP
|
|
|
- # proxy_port=str(config.common.RPOXY_SERVICE_PORT), # 上报服务的端口
|
|
|
- # software_key=root_mission_id, # 任务标识
|
|
|
- # software_name=mission_name, # 任务名称
|
|
|
- # software_status='0', # 字符串类型的数字
|
|
|
- # software_warn_desc='任务创建成功', # 描述
|
|
|
- # is_enable=config.common.ENABLE_PROXY_BASE) # 是否上报
|
|
|
- # except Exception as err:
|
|
|
- # print_log('任务上报失败')
|
|
|
+ try:
|
|
|
+ # 获取token
|
|
|
+ login_data = {
|
|
|
+ 'userName': config.oauth.userName,
|
|
|
+ 'password': config.oauth.password,
|
|
|
+ 'clientId': config.oauth.clientId,
|
|
|
+ 'serviceId': config.oauth.serviceId
|
|
|
+ }
|
|
|
+ login_rep = requests.post(config.oauth.URL + '/api/user/login', data=login_data).json()
|
|
|
+ headers = {'token': login_rep.get('message')}
|
|
|
+ dms_data = {
|
|
|
+ "title": os.path.basename(data_path),
|
|
|
+ "content": os.path.basename(data_path),
|
|
|
+ "c_tile_grid": tile_grid,
|
|
|
+ "c_name": os.path.basename(data_path),
|
|
|
+ "c_tile_format": tile_format,
|
|
|
+ "c_epsg": '4326',
|
|
|
+ "c_url": config.nginx.URL + config.common.OUTPUT_PATH,
|
|
|
+ "c_content": "0",
|
|
|
+ "c_note": "0",
|
|
|
+ "c_tile_size": tile_size,
|
|
|
+ "c_zoom_min": min_zoom,
|
|
|
+ "c_zoom_max": max_zoom,
|
|
|
+ "c_auto_zoom": auto_zoom
|
|
|
+ }
|
|
|
+ dms_rep = requests.post(config.dms.URL + '/content/addContent', headers=headers, data=dms_data)
|
|
|
+
|
|
|
+ except Exception as err:
|
|
|
+ traceback.print_exc()
|
|
|
+ print_log('dms添加失败')
|
|
|
|
|
|
return {"code": StatesCode.SUCCESS, "message": "任务添加成功"}
|
|
|
|