|
@@ -8,6 +8,7 @@ from flask_restx import Resource, Namespace, reqparse
|
|
|
|
|
|
from app.defines import StatesCode
|
|
|
from app.mission_jobs.application import Application
|
|
|
+from app.utils.create_geojsonl import verify_geotiff
|
|
|
from config import Config
|
|
|
from starearth.utils.general_utils import print_log
|
|
|
|
|
@@ -18,6 +19,8 @@ slice_mission_parser = reqparse.RequestParser(bundle_errors=True)
|
|
|
slice_mission_parser.add_argument(name='title', type=str, location='form', required=False, help='dms 标题')
|
|
|
slice_mission_parser.add_argument(name='content', type=str, location='form', required=False, help='dms 描述')
|
|
|
slice_mission_parser.add_argument(name='c_name', type=str, location='form', required=False, help='dms 名称')
|
|
|
+slice_mission_parser.add_argument(name='c_content', type=str, location='form', required=False, help='dms 描述')
|
|
|
+slice_mission_parser.add_argument(name='c_note', type=str, location='form', required=False, help='dms 备注')
|
|
|
|
|
|
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='瓦片大小')
|
|
@@ -25,6 +28,7 @@ slice_mission_parser.add_argument(name='tile_format', type=str, location='form',
|
|
|
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='epsg', type=str, location='form', required=False, help='投影信息:EPSG:4326、EPSG:3857')
|
|
|
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='最大切片层级')
|
|
|
|
|
@@ -43,18 +47,35 @@ class MissionAPI(Resource):
|
|
|
title = form.get('title')
|
|
|
content = form.get('content')
|
|
|
c_name = form.get('c_name')
|
|
|
+ c_content = form.get('c_content')
|
|
|
+ c_note = form.get('c_note')
|
|
|
|
|
|
data_path = form.get('data_path')
|
|
|
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))
|
|
|
+ epsg = int(form.get('epsg', 'EPSG:4326'))
|
|
|
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='输入路径错误')
|
|
|
- # 获取token
|
|
|
+
|
|
|
+ err_file = []
|
|
|
+ # 验证数据有错误数据直接返回错误数据
|
|
|
+ for file_name in os.listdir(data_path):
|
|
|
+ input_file = os.path.join(data_path, file_name)
|
|
|
+ if os.path.splitext(file_name)[-1] == ".tif":
|
|
|
+ try:
|
|
|
+ verify_geotiff(input_file, epsg)
|
|
|
+ except Exception:
|
|
|
+ err_file.append(file_name)
|
|
|
+
|
|
|
+ if err_file:
|
|
|
+ return jsonify(code=StatesCode.PARA_ERROR, message='输入文件错误:{},不支持的投影'.format(err_file))
|
|
|
+
|
|
|
+ # 获取token
|
|
|
login_data = {
|
|
|
'userName': config.oauth.userName,
|
|
|
'password': config.oauth.password,
|
|
@@ -70,13 +91,13 @@ class MissionAPI(Resource):
|
|
|
'content': json.dumps({
|
|
|
"title": title,
|
|
|
"content": content,
|
|
|
- "c_tile_grid": tile_grid,
|
|
|
+ "c_tile_grid": "墨卡托投影切片",
|
|
|
"c_name": c_name,
|
|
|
"c_tile_format": tile_format,
|
|
|
"c_epsg": '4326',
|
|
|
- "c_url": config.nginx.URL + config.common.OUTPUT_PATH,
|
|
|
- "c_content": "0",
|
|
|
- "c_note": "0",
|
|
|
+ "c_url": config.nginx.URL + config.common.OUTPUT_PATH + '/{z}/{x}/{y}.%s' % tile_format,
|
|
|
+ "c_content": c_content,
|
|
|
+ "c_note": c_note,
|
|
|
"c_tile_size": tile_size,
|
|
|
"c_zoom_min": min_zoom,
|
|
|
"c_zoom_max": max_zoom,
|
|
@@ -94,6 +115,7 @@ class MissionAPI(Resource):
|
|
|
tile_size=tile_size,
|
|
|
tile_grid=tile_grid,
|
|
|
tile_format=tile_format,
|
|
|
+ epsg=epsg,
|
|
|
auto_zoom=auto_zoom,
|
|
|
min_zoom=min_zoom,
|
|
|
max_zoom=max_zoom,
|