Skip to content

Commit cd4c328

Browse files
committed
[feat] 진행 관련 파일 추가
1 parent 2f5886c commit cd4c328

27 files changed

+7111
-149
lines changed

error_correction/data/error_data.txt

-144
Original file line numberDiff line numberDiff line change
@@ -1,145 +1 @@
1-
!AIVDM,1,1,,B,16Tp:4?000a3P=PEKsQ002jV04*45
2-
!AIVDM,1,1,,B,16S`PE000093OrJEKO=P9VJb
3-
!AIVDM,1,1,,A,23ku;dU00093bsBEMH`UdP0>
4-
!AIVDM,1,1,,B,16T5w;PP0193KwvEJH<iJOvu
5-
!AIVDM,1,1,,A,16SWPHPP00a3PIREK
6-
!AIVDM,1,1,,B,16SeJS0P0493NKnEIpUi5gw:
7-
!AIVDM,1,1,,B,16SWVNPP00a3P9@EKNi<6rS:
8-
!AIVDM,1,1,PqHELOg6KlUF0D3p,0*43
9-
!AIVDM,1,1,,A,16SWUv8000a3T8@ELEGqenAF2@
10-
!AIVDM,1,1,,A,16Sd2v001Ua2N7tEAIs1p1QV
11-
!AIVDM,1,1,
12-
!AIVDM,1,1,,A,16S`d5POh@a3R;2EJ
13-
!AIVDM,1,1,,A,16S`7@000
14-
!AIVDM,1,1,,A,16Sd9JP00093T20ELG8
15-
!AIVDM,1,1,
16-
!AIVDM,1,1,
17-
!AIVDM,1,1,,A
18-
!AIVDM,1,1,,B
19-
!AIVDM,2,1,9,B,56SWpE0000033O;O;L0@tj10PTr38Pt00000
20-
!AIVDM,1,1,,B,16S`9`P
21-
!AIVDM,1,1,,B,16SWheP
22-
!AIVDM,1,1,,A,16SqlmP000a3Tl`EKRG7sVGD
23-
!AIVDM,
24-
!AIVDM,1,1,,B,16SWW1P
25-
!AIVDM,1,1,,B,16S`WoPP02a3OiTEK
26-
!AIVDM,1,1,,B,16SeDO`P01a3SvdELH>bKOwb
27-
!AIVDM,1,1,,B,16S`Oe0006a3MjtEKi0eqFGj
28-
!AIVDM,1,1,,A,0*35
29-
!AIVDM,1,1,,A,16S`NpPP0<93@3:EH?
30-
!AIVDM,1,1,,A,16SWVNPP00a3P9@EKNi<6rR@
31-
!AIVDM,1,1,,B,16
32-
!AIVDM,1,1,,A,16S`1lP0h093mGbEGj:IBbhH
33-
!AIVDM,1,1,
34-
!AIVDM,1,1,,A,404<g>ivFj6iBa3
35-
!AIVDM,1,1,,A,16SWrm0P0093doDEM<C00?vep@=4,Arf21v@,0*72
36-
!AIVDM,2,2,0,B
37-
!AIVDM,1,1,
38-
!AIVDM,1,1,,A,
39-
!AIVDM,1,1,,A,16SWPHP
40-
!AIVDM,1,1,,B,16Sec28P0
41-
!AIVDM,1,1,
42-
!AIVDM,1
43-
!AIVDM,1,1,,B,36ScOiPt0193eDfEMIqQc0iB
44-
!AIVDM,1,1,,B,16S`=l000093m<FEGkch09;QpD3T,6;wwUp2u1,0*10
45-
!AIVDM,1,1,,B,16S`i:PP1>a3VT8
46-
!AIVDM,1,1,,B,16SqlmP000a3Tl0EKRIWsVGb
47-
!AIVDM,1,1,,B,16
48-
!AIVDM,2,2,3,A,8
49-
!AIVDM,1,1,,A,16SWOJ0P0G93JDjEK
50-
!AIVDM,2,1,6,B,56:Bh6T2CFHL8hHSB21PTr0HDpN0P4V3R2222216;h
51-
!AIVDM,1,1,
52-
!AIVDM,1,1,IVDM,1,1,,B,B6S`o@P0J2@pvF5Fl@dBOwVTCP06,0*03
53-
!AIVDM,1,1,,A,16SWS2PP0093Ld`ENfLDV?vL08
54-
!AIVDM,1,1,,A,16S`oR8P00a3T
55-
!AIVDM,1,1,
56-
!AIVDM,1,1,,B,16SeDO`P01
57-
!AIVDM,1
58-
!AIVDM,1,1,,A,16Sa=u0wh093MuLEOfJ9
59-
!AIVDM,1,1,,B,16SgCQPP009
60-
!AIVDM,1,1,,A,16SWT3Pt0j93Md6EL46j>Ie000RA
61-
!AIVDM,1,1,,B,26SWOgOP00a3NjhEOUnCkww82<
62-
!AIVDM,1,1,,B,16S`kI0P00a3T5BEL
63-
!AIVDM,1,1,
64-
!AIVDM,1,1,,B,16S`1lP0h093mGrEGj89BbiF,2,9,A,00000000000,2*2D
65-
!AIVDM,1,1,
66-
!AIVDM,1,1,,B,16SWOj@P00a3>;d
67-
!AIVDM,1,1,
68-
!AIVDM,1,1,
69-
!AIVDM,1,1,,B,19t6R2P00193Eh6EHlUbJnF<0
70-
!AIVDM,1,1,,B,16SWOJ0P0B93JJ4EK5iTvO
71-
!AIVDM,1,1,,B,,B,16SWVm000U93MG2EK9;7cEBR04kD,0*6C
72-
!AIVDM,1,1,,A,16SWT=P01U93bp`
73-
!AIVDM,1,1,*07
74-
!AIVDM,1,1,,A,36S`lmP50ka3MHH
75-
!AIVDM,1,1,
76-
!AIVDM,1,00,99.99,,,,,,*48
77-
!AIVDM,1,1,
78-
!AIVDM,1,
79-
!AIVDM,1,1,,A,35@`?FE0
80-
!AIVDM,1,2
81-
!AIVDM,1,1,,A,8>lEK500Bj90eSWgEQ7qP0000000000000000000000000
82-
!AIVDM,1,
83-
!AIVDM,1,1,,A,16SWS2PP0293Le@ENfLFhgvL0D3g
84-
!AIVDM,1,1,,B
85-
!AIVDM,1,1,,B,16SgWVPP0093U@
86-
!AIVDM,1,1,,A,404<g>ivFj6nVa3
87-
!AIVDM,1,1,,B,E>lEJvaabUb0W@0h47P00000000DQfvU:eQ7h10888p@20
88-
!AIVDM,1,1,,A,16Tp:4?000a3
89-
!AIVDM,1,1,
90-
!AIVDM,1,1,
91-
!AIVDM,1,1,,A,404<g>ivFj6nra3
92-
!AIVDM,1,1,
93-
!AIVDM,1,1,
94-
!AIVDM,1,1,6SsligP1Na1KG`EGMGbn?vD24kL,0*58
95-
!AIVDM,1,1,,A,16Tp:4?000a3P<vEKsM@02jB04
96-
!AIVDM,1,1,,A,16SWpE?001a3OfN
97-
!AIVDM,1,
98-
!AIVDM,1,1,,A,16SWheP0?w93ToT
99-
!AIVDM,1,1,,A,16SWRn0P00a3UNlEK
100-
!AIVDM,2,1,2,A,56SWT=P000033;;S3D0@4F0<P4pL00000000000l0`H45400052CP
101-
!AIVDM,1,1,*07
102-
!AIVDM,1,1,
103-
!AIVDM,1,1,,A,B6S
104-
!AIVDM,1,1,
1051
!AIVDM,1,1,,A,16Sg>1000093mK<EGjNDDq9Ep8Hp,LIMDP?wH24kH,0*7C
106-
!AIVDM,1,1,,B,16SWn40P0093U4DEKSvA
107-
!AIVDM,1,1,
108-
!AIVDM,1,1,
109-
!AIVDM,1,1,,A,16Sd7P?P0193UHREKTF
110-
!AIVDM,1,1,
111-
!AIVDM,1,1,,B,36S`Oe0Ohoa3MqlEKih8
112-
!AIVDM,1,1,,B,16SW
113-
!AIVDM,2,1,3,A,56SWOmH00003735
114-
!AIVDM,1,
115-
!AIVDM,1,1,,B,16S`=iP018a3cD@E
116-
!AIVDM,1,1,,A,16SWT3P2PS93OEFEL7c3L
117-
!AIVDM,1,
118-
!AIVDM,1,1,,B,16S
119-
!AIVDM,2,2,2,A,p88
120-
!AIVDM,1,1,,A,16SWUv8000a3T8dELEHqenAF2@J>,0*AIVDM,1,1,,B,16S`=l000093m<0EGkeP09;Op8Kq,0*78
121-
!AIVDM,1,1,
122-
!AIVDM,1,1,,B,16Se
123-
!AIVDM,2,1,
124-
!AIVDM,1,1,,B,16S
125-
!AIVDM,1,1,,A,16Sgn
126-
!AIVDM,1,1,,A,1815NCm00093ci@EGOl
127-
!AIVDM,1,
128-
!AIVDM,1,1,72
129-
!AIVDM,1,1,,0*27
130-
!AIVDM,1,1,,A,16S`PT0P0093e9JEH82h0
131-
!AIVDM,1,1,,A,160*23
132-
!AIVDM,1,1,,A,16ShDBgP01a3R>VEKdQd
133-
!AIVDM,1,
134-
!AIVDM,1,1,
135-
!AIVDM,1,1,
136-
!AIVDM,1,1,
137-
!AIVDM,1,1,,A,16S`QP0P00a3T:vEOM?27?v>
138-
!AIVDM,1,,1,1,,A,15AMuR000j93d6TEM@:RCQjJ0<2K,0*38
139-
!AIVDM,1,1,,B,16Se
140-
!AIVDM,1,
141-
!AIVDM,1,
142-
!AIVDM,1,1,,B,16Tp:4?000a3P<dEKs
143-
!AIVDM,1,1,
144-
!AIVDM,1,1,
145-
!AIVDM,1,1,

pyais/decode.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def _assemble_messages(*args: bytes) -> NMEAMessage:
1111
frag_cnt: int = 1
1212
for msg in args:
1313
nmea = NMEAMessage(msg)
14-
print("is_vaild result: ", nmea.is_valid, " ais_msg: ", msg)
14+
# print("is_vaild result: ", nmea.is_valid, " ais_msg: ", msg)
1515
temp.append(nmea)
1616
frags.append(nmea.frag_num)
1717
frag_cnt = nmea.fragment_count

requirements.txt

+8-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
# These requirements are not needed for using the module
33

44
# BASE
5-
bitarray
5+
bitarray~=2.3.0
66

77
# ENCODE
8-
attrs
8+
attrs~=21.2.0
99

1010
# TEST
1111
flake8
@@ -20,3 +20,9 @@ wheel
2020

2121
# DOCS
2222
sphinx
23+
24+
libais~=0.17
25+
configparser~=5.2.0
26+
lxml~=4.6.3
27+
setuptools~=58.0.4
28+
pyais~=2.1.4

temp/error_correction/README.md

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
## 기능 목록
2+
### NMEA 형식 확인
3+
- [ ] NMEA 포맷 검증
4+
- 쉼표가 7개인지 확인한다.
5+
- [ ] NMEA 포맷으로 복구하는 기능
6+
- 정상 포맷인 쉼표 7개 형태로 만들기
7+
- [ ] NMEA 메세지 통계값을 확인
8+
- 결측치, 민맥스, 형식, … 값 등을 확인
9+
- 통계값을 출력
10+
### 다중메세지 처리
11+
- [ ] 다중메시지인지 확인하기
12+
- [ ] 다중 메세지들을 처리할 queue 운영
13+
- 세트로 큐에 도달할 경우 list화 하여 디코딩 진행
14+
### Payload 제어
15+
- [ ] NMEA 메세지에서 Payload만 추출하기
16+
### Payload 디코딩
17+
- [ ] Payload 검증
18+
- [ ] MMSI 검증
19+
- [ ] 각 메세지 타입별 주요 데이터만 추출하기
20+
- [ ] 각 메세지 타입별 컬럼 저장
21+
- [ ] 각 메시지 타입별 중요도있는 컬럼 체크
22+
- [ ] 각 메세지 타입별 데이터 추출
23+
- [ ] 정제된 LIST를 반환하기
24+
25+
## 기타
26+
- [ ] RAW DATA 확보
27+
- [ ] 체크섬 복구여부 결정
28+
- [ ] 이후 기존 오픈소스와 융합

error_correction/ais_test.py temp/error_correction/ais_test.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@ def decode_ais_file(file):
2525
# print(decode(data))
2626
except Exception as e:
2727
print(e, data)
28-
if str(e) == "A NMEA message needs to have exactly 7 comma separated entries.": # 특정 예외만 처리
29-
error_list.append(data)
28+
# if str(e) == "A NMEA message needs to have exactly 7 comma separated entries.": # 특정 예외만 표출 처리
29+
# print(data)
3030
# traceback.print_exc()
3131
error_count[str(e)] += 1
32+
error_list.append(data)
3233
# print(f'[ERROR] Value {data} not in JSON/AIS format')
3334

3435

0 commit comments

Comments
 (0)