120 lines
4.4 KiB
Python
120 lines
4.4 KiB
Python
|
# coding: utf-8
|
|||
|
# Author:tajochen
|
|||
|
|
|||
|
import time
|
|||
|
|
|||
|
import requests
|
|||
|
|
|||
|
from application.settings import Config
|
|||
|
from common.tools.dms import dms_login, dms_task_record
|
|||
|
from util.upload_client import upload_file_client
|
|||
|
|
|||
|
from util.http_util import httpUtil
|
|||
|
|
|||
|
|
|||
|
# 动态调用函数
|
|||
|
# @param tag 标签名
|
|||
|
# @param text 文本
|
|||
|
# @return True:OK, False:NG
|
|||
|
def item_check(func_name, text):
|
|||
|
if type and text:
|
|||
|
try:
|
|||
|
# 调用导入模块中的函数,并传参
|
|||
|
return eval("__{0}".format(func_name))(text)
|
|||
|
except Exception:
|
|||
|
return False
|
|||
|
else:
|
|||
|
return False
|
|||
|
|
|||
|
|
|||
|
# 动态调用遥感函数
|
|||
|
# @param tag 标签名
|
|||
|
# @param text 文本
|
|||
|
# @return True:OK, False:NG
|
|||
|
def analysis_remote_sensing_data(func_name, collection_code, path):
|
|||
|
"""
|
|||
|
解析JPSS-VJ102元数据
|
|||
|
:return:
|
|||
|
"""
|
|||
|
print('开始扫描VJ102IMG数据集')
|
|||
|
#collectionCode = 'VJ102IMG'
|
|||
|
# 用户登录
|
|||
|
token_s = dms_login()
|
|||
|
# 判断定时任务是否在进行
|
|||
|
task = dms_task_record(token_s, collection_code)
|
|||
|
# 如果不是空说明正在进行
|
|||
|
if task is not None and len(task) > 0:
|
|||
|
return 1
|
|||
|
|
|||
|
file_total_size = ""
|
|||
|
file_total_name = ""
|
|||
|
xmlPath = Config.XML_PATH # 解析出的xml文件保存的路径
|
|||
|
ThumbnailPath = Config.THUMBNAIL_PATH # 解析出的缩略图保存的路径
|
|||
|
|
|||
|
# 解析遥感数据文件(demo)
|
|||
|
remote_sensing_data_dic = globals().get('func_%s' % func_name)(path, xmlPath, ThumbnailPath)
|
|||
|
|
|||
|
# 配置文件服务器参数
|
|||
|
url = Config.DFS_UPLOAD_URL
|
|||
|
files = {'file': open(remote_sensing_data_dic['xmlPath'], 'rb')}
|
|||
|
options = {'output': 'json', 'path': '/archive_data/remote_sensing_data/' + collection_code}
|
|||
|
# 上传生成的xml文件到文件服务器
|
|||
|
xml = requests.post(url, data=options, files=files)
|
|||
|
|
|||
|
url = Config.DFS_UPLOAD_URL
|
|||
|
files = {'file': open(remote_sensing_data_dic['ThumbnailPath'], 'rb')}
|
|||
|
options = {'output': 'json', 'path': '/archive_data/remote_sensing_data/' + collection_code}
|
|||
|
# 上传生成的xml文件到文件服务器
|
|||
|
ThumbnailName = requests.post(url, data=options, files=files)
|
|||
|
|
|||
|
CollectionCode = remote_sensing_data_dic['CollectionCode']
|
|||
|
DirectoryDepth = remote_sensing_data_dic['DirectoryDepth']
|
|||
|
StartTime = remote_sensing_data_dic['StartTime']
|
|||
|
# uc = upload_client(path, DirectoryDepth, StartTime[0:19])
|
|||
|
uc = upload_file_client(path, DirectoryDepth, StartTime[0:19], collection_code)
|
|||
|
|
|||
|
StartTime = time.mktime(time.strptime(remote_sensing_data_dic['StartTime'][0:19], '%Y-%m-%d %H:%M:%S'))
|
|||
|
EndTime = time.mktime(time.strptime(remote_sensing_data_dic['EndTime'][0:19], '%Y-%m-%d %H:%M:%S'))
|
|||
|
|
|||
|
# 入库遥感数据
|
|||
|
res_data = httpUtil(url=Config.RESING_DATA_URL,
|
|||
|
data={"collectionCode": collection_code, "shootingTimeStartTs": StartTime,
|
|||
|
"shootingTimeEndTs": EndTime,
|
|||
|
"fileMd5": uc['md5'], "fileName": uc['fileName'], "filePath": uc['file_path'],
|
|||
|
"fileSize": uc['file_size'], "cloudCoverage": remote_sensing_data_dic['CloudPercent'],
|
|||
|
"metaInformationFile": xml.json()['path'],
|
|||
|
"thumbnailFile": ThumbnailName.json()['path'],
|
|||
|
"remarks": "", "boundaryGeomStr": remote_sensing_data_dic['boundaryGeomStr']},
|
|||
|
token=token_s).post_no_patam_herder()
|
|||
|
print(res_data.json()['data'])
|
|||
|
|
|||
|
file_total_size = file_total_size + str(uc['file_size'])
|
|||
|
file_total_size = file_total_size + ","
|
|||
|
|
|||
|
file_total_name = file_total_name + uc['fileName']
|
|||
|
file_total_name = file_total_name + ","
|
|||
|
|
|||
|
# 添加遥感数据归档任务
|
|||
|
res = httpUtil(url=Config.DATA_TASK_URL,
|
|||
|
data={"clientCode": "client1", "collectionCode": collection_code, "storageFileList": file_total_name,
|
|||
|
"storageFileSizeList": file_total_size, "remarks": ""}, token=token_s).post_no_patam_herder()
|
|||
|
task_code = res.json()['data']
|
|||
|
|
|||
|
# 结束遥感数据归档任务
|
|||
|
header = {"Authorization": token_s}
|
|||
|
res = requests.post(url=Config.DATA_END_TASK_URL,
|
|||
|
|
|||
|
params={"taskCode": task_code}, headers=header).json()
|
|||
|
if res_data.json()['status'] == 0:
|
|||
|
return 0
|
|||
|
else:
|
|||
|
return 2
|
|||
|
|
|||
|
|
|||
|
if __name__ == "__main__":
|
|||
|
result = item_check("num", 123.23)
|
|||
|
print(result)
|
|||
|
strs = ['year', 'month']
|
|||
|
for s in strs:
|
|||
|
globals().get('func_%s' % s)(s)
|