aipp 2.2.2 → 2.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +10 -0
- data/lib/aipp/downloader.rb +2 -8
- data/lib/aipp/regions/LS/helpers/base.rb +1 -0
- data/lib/aipp/regions/LS/notam/ENR.rb +1 -0
- data/lib/aipp/regions/LS/shoot/shooting_grounds.rb +31 -19
- data/lib/aipp/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +31 -18
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c73263a113844af94f58b40498803f74e8246e94e985dfa5a9cc373caeaa986
|
4
|
+
data.tar.gz: bfb14e188c4a0f7b9f532d63259283a25076e02fd893e5c7961350d5ee67fb8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31d356145fe57ba77a15d45472478c7cd8944fa3f92c2c6f7ed0553f09908120297c1d03bff37f126d940802cc2998c5703ebd59f8a83bb5d269aaacaa87af91
|
7
|
+
data.tar.gz: 6e92b3c7882168368cb22b3c0787f16c9e20c7aff587e37109a012d5819e9738492cebc0dea00901a45b8cc39f64c5a34850df9586c6c5ed8080db6fb499d706
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
data/lib/aipp/downloader.rb
CHANGED
@@ -28,7 +28,7 @@ module AIPP
|
|
28
28
|
# [.json] Deserialized JSON e.g. as response to a GraphQL query
|
29
29
|
# [.xlsx] Parsed by Roo returning an instance of {Roo::Excelx}[https://www.rubydoc.info/gems/roo/Roo/Excelx]
|
30
30
|
# [.ods] Parsed by Roo returning an instance of {Roo::OpenOffice}[https://www.rubydoc.info/gems/roo/Roo/OpenOffice]
|
31
|
-
# [.csv] Parsed by Roo returning an instance of {Roo::CSV}[https://www.rubydoc.info/gems/roo/Roo/CSV]
|
31
|
+
# [.csv] Parsed by Roo returning an instance of {Roo::CSV}[https://www.rubydoc.info/gems/roo/Roo/CSV] including the first header line
|
32
32
|
# [.txt] Instance of +String+
|
33
33
|
#
|
34
34
|
# @example
|
@@ -162,19 +162,13 @@ module AIPP
|
|
162
162
|
end
|
163
163
|
|
164
164
|
def convert(file)
|
165
|
-
# TODO: temporary workaround for broken CSV - see https://github.com/svoop/aipp/issues/28
|
166
|
-
if file.basename.to_s == 'schiessanzeigen.csv'
|
167
|
-
contents = file.read
|
168
|
-
contents.gsub!(';Blindgänger Sprengung, Aufräumaktion "SÄNTIS 23";', ';"Blindgänger Sprengung, Aufräumaktion SÄNTIS 23";')
|
169
|
-
file.write(contents)
|
170
|
-
end
|
171
165
|
case file.extname
|
172
166
|
when '.xml', '.ofmx' then Nokogiri.XML(::File.open(file), &:noblanks)
|
173
167
|
when '.html' then Nokogiri.HTML5(::File.open(file))
|
174
168
|
when '.json' then JSON.load_file(file, symbolize_names: true)
|
175
169
|
when '.pdf' then AIPP::PDF.new(file)
|
176
170
|
when '.xlsx', '.ods' then Roo::Spreadsheet.open(file.to_s)
|
177
|
-
when '.csv' then Roo::Spreadsheet.open(file.to_s, csv_options: { col_sep: separator(file) })
|
171
|
+
when '.csv' then Roo::Spreadsheet.open(file.to_s, csv_options: { encoding: 'bom|utf-8', headers: false, col_sep: separator(file) })
|
178
172
|
when '.txt' then ::File.read(file)
|
179
173
|
else fail(ArgumentError, "unrecognized file type")
|
180
174
|
end
|
@@ -11,6 +11,7 @@ module AIPP::LS::NOTAM
|
|
11
11
|
json = read
|
12
12
|
fail "malformed JSON received from API" unless json.has_key?(:queryNOTAMs)
|
13
13
|
added_notam_ids = []
|
14
|
+
aixm.sourced_at = Time.at(json[:latestUpdate])
|
14
15
|
json[:queryNOTAMs].each do |row|
|
15
16
|
next unless row[:notamRaw].match? /^Q\) LS/ # only parse national NOTAM
|
16
17
|
|
@@ -12,28 +12,40 @@ module AIPP::LS::SHOOT
|
|
12
12
|
effective_date = AIPP.options.local_effective_at.strftime('%Y%m%d')
|
13
13
|
airac_date = AIRAC::Cycle.new(aixm.effective_at).to_s('%Y-%m-%d')
|
14
14
|
shooting_grounds = {}
|
15
|
+
spl_rows = 0
|
15
16
|
read.each_with_index do |row, line|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
17
|
+
case row[0].strip
|
18
|
+
when 'TOT'
|
19
|
+
date, spl_count = row[1], row[2].to_i
|
20
|
+
fail "malformed CSV: #{spl_count} SPL records announced but #{spl_rows} SPL records found" unless spl_count == spl_rows
|
21
|
+
aixm.sourced_at = [date, TZInfo::Timezone.get('Europe/Zurich').abbr].join(' ')
|
22
|
+
next
|
23
|
+
when 'SPL'
|
24
|
+
spl_rows += 1
|
25
|
+
next
|
26
|
+
when 'BSZ'
|
27
|
+
id, date, no_shooting = row[1], row[2], (row[17] == "1")
|
28
|
+
next if no_shooting || date != effective_date
|
29
|
+
next if AIPP.options.id && AIPP.options.id != id
|
30
|
+
# TODO: Several BSZ lines may exist for the same shooting area with
|
31
|
+
# different location codes (aka: partial activations). The geometries
|
32
|
+
# of those location codes are not currently available, we therefore
|
33
|
+
# have to merge the data into one record. The geometries should become
|
34
|
+
# available by the end of 2023 which will make it possible to map
|
35
|
+
# each line to one geometry and remove the merging logic.
|
36
|
+
upper_z = row[15] ? AIXM.z(AIXM.d(row[15].to_i + SAFETY, :m).to_ft.dim.round, :qfe) : DEFAULT_Z
|
37
|
+
(shooting_grounds[id] ||= { schedules: [], upper_z: AIXM::GROUND }).then do |s|
|
38
|
+
s[:feature] ||= read("shooting_grounds-#{id}").fetch(:feature)
|
39
|
+
s[:csv_line] ||= line
|
40
|
+
s[:url] ||= row[10].blank_to_nil
|
41
|
+
s[:details] = [s[:details], row[6].blank_to_nil].compact.join("\n")
|
42
|
+
s[:dabs] ||= (row[16] == '1')
|
43
|
+
s[:upper_z] = upper_z if upper_z.alt > s[:upper_z].alt
|
44
|
+
s[:schedules] += schedules_for(row)
|
45
|
+
end
|
35
46
|
end
|
36
47
|
end
|
48
|
+
fail "malformed CSV: TOT record missing" unless aixm.sourced_at
|
37
49
|
shooting_grounds.each do |id, data|
|
38
50
|
data in csv_line:, details:, url:, upper_z:, schedules:, dabs:, feature: { geometry: polygons, properties: { bezeichnung: name, infobezeichnung: contact, infotelefonnr: phone, infoemail: email } }
|
39
51
|
schedules = consolidate(schedules)
|
data/lib/aipp/version.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,33 +1,34 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aipp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sven Schwyn
|
8
|
-
autorequire:
|
9
8
|
bindir: exe
|
10
9
|
cert_chain:
|
11
10
|
- |
|
12
11
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
MIIDODCCAiCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhydWJ5
|
13
|
+
L0RDPWJpdGNldGVyYS9EQz1jb20wHhcNMjQxMTIwMjExMDIwWhcNMjUxMTIwMjEx
|
14
|
+
MDIwWjAjMSEwHwYDVQQDDBhydWJ5L0RDPWJpdGNldGVyYS9EQz1jb20wggEiMA0G
|
16
15
|
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDcLg+IHjXYaUlTSU7R235lQKD8ZhEe
|
17
16
|
KMhoGlSUonZ/zo1OT3KXcqTCP1iMX743xYs6upEGALCWWwq+nxvlDdnWRjF3AAv7
|
18
17
|
ikC+Z2BEowjyeCCT/0gvn4ohKcR0JOzzRaIlFUVInlGSAHx2QHZ2N8ntf54lu7nd
|
19
18
|
L8CiDK8rClsY4JBNGOgH9UC81f+m61UUQuTLxyM2CXfAYkj/sGNTvFRJcNX+nfdC
|
20
19
|
hM9r2kH1+7wsa8yG7wJ2IkrzNACD8v84oE6qVusN8OLEMUI/NaEPVPbw2LUM149H
|
21
20
|
PVa0i729A4IhroNnFNmw4wOC93ARNbM1+LW36PLMmKjKudf5Exg8VmDVAgMBAAGj
|
22
|
-
|
23
|
-
yoX/
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
21
|
+
dzB1MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSfK8MtR62mQ6oN
|
22
|
+
yoX/VKJzFjLSVDAdBgNVHREEFjAUgRJydWJ5QGJpdGNldGVyYS5jb20wHQYDVR0S
|
23
|
+
BBYwFIEScnVieUBiaXRjZXRlcmEuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQDSeB1x
|
24
|
+
8QK8F/ML37isgvwGiQxovDUqu6Sq14cQ1qE9y5prUBmL2AsDuCBpXXctcvamFqNC
|
25
|
+
PgfJtj7ZZcXmY0SfKCog7T1btkr6zYxPXpxwUqB45n0I6v5qc0UCNvMEfBzxlak5
|
26
|
+
VW7UMNlKD9qukeN55hxuLF2F/sLldMcHUo/ATgdV4zk1t3sK6A9+02wz5K5qfWdM
|
27
|
+
Mi+XWXmGd57uojk3RcIXNwBRRP4DTKcKgVXhuyHb7q1vjTXrS6bw1Ortu0KmWOIk
|
28
|
+
jTyRsT1gymASS2KHe+BaCTwD74GqO8q4woYLZgXnJ/PvgcFgY2FEi2Kn/sXLp4JE
|
29
|
+
boIgxQCMT+nxBHCD
|
29
30
|
-----END CERTIFICATE-----
|
30
|
-
date: 2024-
|
31
|
+
date: 2024-12-27 00:00:00.000000000 Z
|
31
32
|
dependencies:
|
32
33
|
- !ruby/object:Gem::Dependency
|
33
34
|
name: airac
|
@@ -58,7 +59,7 @@ dependencies:
|
|
58
59
|
version: '1'
|
59
60
|
- - ">="
|
60
61
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.5.
|
62
|
+
version: 1.5.3
|
62
63
|
type: :runtime
|
63
64
|
prerelease: false
|
64
65
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -68,7 +69,7 @@ dependencies:
|
|
68
69
|
version: '1'
|
69
70
|
- - ">="
|
70
71
|
- !ruby/object:Gem::Version
|
71
|
-
version: 1.5.
|
72
|
+
version: 1.5.3
|
72
73
|
- !ruby/object:Gem::Dependency
|
73
74
|
name: notam
|
74
75
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,6 +90,20 @@ dependencies:
|
|
89
90
|
- - ">="
|
90
91
|
- !ruby/object:Gem::Version
|
91
92
|
version: 1.1.5
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: ostruct
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
type: :runtime
|
101
|
+
prerelease: false
|
102
|
+
version_requirements: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - "~>"
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
92
107
|
- !ruby/object:Gem::Dependency
|
93
108
|
name: activesupport
|
94
109
|
requirement: !ruby/object:Gem::Requirement
|
@@ -452,7 +467,6 @@ metadata:
|
|
452
467
|
source_code_uri: https://github.com/svoop/aipp
|
453
468
|
documentation_uri: https://www.rubydoc.info/gems/aipp
|
454
469
|
bug_tracker_uri: https://github.com/svoop/aipp/issues
|
455
|
-
post_install_message:
|
456
470
|
rdoc_options:
|
457
471
|
- "--title"
|
458
472
|
- AIP Parser and Converter
|
@@ -474,8 +488,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
474
488
|
- !ruby/object:Gem::Version
|
475
489
|
version: '0'
|
476
490
|
requirements: []
|
477
|
-
rubygems_version: 3.
|
478
|
-
signing_key:
|
491
|
+
rubygems_version: 3.6.2
|
479
492
|
specification_version: 4
|
480
493
|
summary: Parser for aeronautical information publications
|
481
494
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|