Commit d24f1859 authored by Takhir Fakhrutdinov's avatar Takhir Fakhrutdinov

Обработка файлов просмотренных зон

parent 54c7c2c8
......@@ -81,7 +81,7 @@ class Factory_t:
for l in fd:
l = l.strip('\n').strip()
if not len(l): continue
if l[0] == '{':
if l[0] in ('{','['):
return self._detect_json(fd)
else:
for k,v in self._patterns.items():
......@@ -411,3 +411,4 @@ frame = {
}
}
factory.register_file('LCZ', _create_lczFile, schema=frame)
......@@ -3,6 +3,7 @@ from .xFile import baseFile
import logging
import json
import io
from datetime import datetime
logger = logging.getLogger('')
......@@ -25,7 +26,6 @@ class lczFile(baseFile):
async def process_data(self,data):
import base64
from datetime import datetime
from collections import namedtuple
real = lambda x: round(float(x),6)
......@@ -44,21 +44,22 @@ class lczFile(baseFile):
_ = {k:f(r[k]) for k,f in rec_list.items() if k in r}
rec = namedtuple('rec_t',_.keys())(**_)
crops = r'\x%s' % base64.b64decode(rec.crops).hex()
crops = base64.b64decode(rec.crops)
if rec.night not in nights:
await self.execute("select * from template.partition_table('xd.t_localzone'::regclass,$1)",rec.night)
nights.add(rec.night)
if rec.nightid not in nights:
await self.execute("select * from template.partition_table('xd.t_localzone'::regclass,$1)",rec.nightid)
nights.add(rec.nightid)
dev = await self.fetchval("""
insert into xd.t_localzone(night,dev,fn,fid,tm,frame,crops)
values ($1,main.devget_devid($2,$1::date),$3,$4,$5,$6,$7)
values ($1,main.devget_id($2::integer,$3),$4,$5,$6,$7,$8)
on conflict(dev,night,fn) do update
set (fid,tm,frame,crops) = (excluded.fid,excluded.tm,excluded.frame,excluded.crops)
returning dev
""",rec.night,rec.siteid,rec.filename,self.fid,rec.osbtime,json.dumps(frame),crops)
""",rec.nightid,rec.siteid,rec.nightid.date(),rec.filename,self.fid,rec.obstime,json.dumps(frame),crops)
devs.add(dev)
tb,te = max(tb,rec.osbtime),min(te,rec.osbtime)
tb,te = min(tb,rec.obstime),max(te,rec.obstime)
self.devs,self.tbeg,self.tend =list(devs),tb,te
......
......@@ -49,35 +49,67 @@ if __name__ == '__main__':
t = factory.detect_file(f)
if not t:
shema = {
"type": "object",
"properties": {
"tracks": {"type": "array","items":{"$ref":"#/$defs/track" }},
"siteid": {"type": "integer"},
"nightid": {"type": "integer"}
},
"required": ["siteid","nightid","tracks"],
"$defs":{
"track":{
"properties": {
"trackid": {"type":"integer"},
"meas": {"type": "array", "items":{"$ref":"#/$defs/ms"}},
},
"required": ["trackid","meas"],
},
"ms":{
"properties":{
"utc":{"type":"string","pattern": r"\d{2}\/\d{2}\/\d{4}\s\d{2}\:\d{2}\:\d{2}(\.\d+)?"},
"ra_j2000":{"type":"string","pattern":r"[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?"},
"dec_j2000":{"type":"string","pattern":r"[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?"},
"mag":{"type":"string","pattern":r"[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?"},
"ra_j2000_full_error":{"type":"string","pattern":r"[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?"},
"dec_j2000_full_error":{"type":"string","pattern":r"[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?"},
"mag_error":{"type":"string","pattern":r"[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?"},
"crops":{"type":"string","media":{"binaryEncoding":"base64","type":"image/png"}}
"type": "array",
"items": {
"allOf": [
{
"type": "object",
"required": ["header","frames"],
"properties": {
"header": {
"type": "object",
"required": ["originator","message_type","message_id"],
"properties": {
"originator": {"type": "string"},
"message_type": {"type": "string","enum":["frames"]},
"message_id": {"type": "string"}
}
},
"required": ["utc","ra_j2000","dec_j2000","mag","ra_j2000_full_error","dec_j2000_full_error","mag_error","crops"]
"frames": {
"type": "array",
"items": {
"allOf":[
{
"type": "object",
"required": [
"siteid","nightid","filename","exp_num","obstime","crops",
"ast_ra_j2000","ast_dec_j2000","ast_rms_ra","ast_rms_dec","ast_orientation",
"limmag","limmag_error","phot_zero_error",
"phot_zero","sky_level","seeing"
],
"properties": {
"siteid": { "$ref": "#/$defs/integer"},
"nightid": {"$ref": "#/$defs/integer"},
"filename": {"type": "string"},
"exp_num": {"type": "integer"},
"obstime": {"$ref": "#/$defs/datetime"},
"crops": {"$ref": "#/$defs/base64"},
"ast_ra_j2000": {"$ref": "#/$defs/number"},
"ast_dec_j2000": {"$ref": "#/$defs/number"},
"ast_rms_ra": {"$ref": "#/$defs/number"},
"ast_rms_dec": {"$ref": "#/$defs/number"},
"ast_orientation": {"$ref": "#/$defs/number"},
"limmag": {"$ref": "#/$defs/number"},
"limmag_error": {"$ref": "#/$defs/number"},
"phot_zero_error": {"$ref": "#/$defs/number"},
"phot_zero": {"$ref": "#/$defs/number"},
"sky_level": {"$ref": "#/$defs/number"},
"seeing": {"$ref": "#/$defs/number"}
}
}
]
}
}
}
}
]
},
"$defs": {
"datetime": {"type":"string","pattern":"^\\d{2}\\/\\d{2}\\/\\d{4}\\s\\d{2}\\:\\d{2}\\:\\d{2}(\\.\\d+)?$"},
"integer": {"type":"string","pattern":"^[-+]?\\d+$"},
"number": {"type":"string","pattern":"^[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?$"},
"base64": {"type":"string","pattern":"^(?=(.{4})*$)[A-Za-z0-9+\\/]*={0,2}$"}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment