jmaxml/model/
generated.rs

1// Code generated by jmx_codegen; DO NOT EDIT.
2
3use serde::{Deserialize, Deserializer, Serialize};
4
5use super::{DateTime, Duration, NullableDateTime, StringList};
6
7fn trim_string<'de, D>(deserializer: D) -> Result<String, D::Error>
8where
9    D: Deserializer<'de>,
10{
11    let s = String::deserialize(deserializer)?;
12    Ok(s.trim_ascii_start().trim_end().to_string())
13}
14
15fn trim_opt_string<'de, D>(deserializer: D) -> Result<Option<String>, D::Error>
16where
17    D: Deserializer<'de>,
18{
19    let s = Option::<String>::deserialize(deserializer)?;
20    match s {
21        Some(s) => Ok(Some(s.trim_ascii_start().trim_end().to_string())),
22        None => Ok(None),
23    }
24}
25
26fn float_or_null<'de, D>(deserializer: D) -> Result<f64, D::Error>
27where
28    D: Deserializer<'de>,
29{
30    let v = Option::<f64>::deserialize(deserializer)?;
31    Ok(v.unwrap_or(f64::NAN))
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct Control {
36    /// 情報名称
37    ///
38    /// 電文の種別を示すための情報名称を示す。
39    #[serde(alias = "Title", rename = "title", deserialize_with = "trim_string")]
40    pub title: String,
41    /// 発表時刻
42    ///
43    /// 発表時刻。実発表時刻と異なってよいが、未来時刻にはならない。
44    #[serde(alias = "DateTime", rename = "dateTime")]
45    pub date_time: DateTime,
46    /// 運用種別
47    ///
48    /// 本情報の位置づけ。
49    #[serde(alias = "Status", rename = "status")]
50    pub status: String,
51    /// 編集官署名
52    ///
53    /// 実際に発表作業を行った「編集官署名」を示す。
54    #[serde(
55        alias = "EditorialOffice",
56        rename = "editorialOffice",
57        deserialize_with = "trim_string"
58    )]
59    pub editorial_office: String,
60    /// 発表官署名
61    ///
62    /// 本情報を業務的に発表した発表官署名を示す。xs:list型で複数表記される。
63    #[serde(alias = "PublishingOffice", rename = "publishingOffices")]
64    pub publishing_offices: StringList,
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize)]
68pub struct EbAreaClass {
69    #[serde(
70        alias = "$text",
71        rename = "value",
72        default,
73        deserialize_with = "trim_string"
74    )]
75    pub value: String,
76    /// 分類
77    #[serde(alias = "@type", rename = "type")]
78    pub ty: String,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
82pub struct EbAxes {
83    /// 軸
84    #[serde(
85        alias = "Axis",
86        rename = "axes",
87        skip_serializing_if = "Vec::is_empty",
88        default
89    )]
90    pub axes: Vec<EbAxis>,
91    /// 長軸
92    #[serde(
93        alias = "LongAxis",
94        rename = "longAxes",
95        skip_serializing_if = "Vec::is_empty",
96        default
97    )]
98    pub long_axes: Vec<EbAxis>,
99    /// 短軸
100    #[serde(
101        alias = "ShortAxis",
102        rename = "shortAxes",
103        skip_serializing_if = "Vec::is_empty",
104        default
105    )]
106    pub short_axes: Vec<EbAxis>,
107}
108
109#[derive(Debug, Clone, Serialize, Deserialize)]
110pub struct EbAxis {
111    /// 方向
112    ///
113    /// 軸の方向(8方位、16方位で利用)
114    #[serde(
115        alias = "Direction",
116        rename = "directions",
117        skip_serializing_if = "Vec::is_empty",
118        default
119    )]
120    pub directions: Vec<EbDirection>,
121    /// 方向
122    ///
123    /// 軸の方向(36方位で利用)
124    #[serde(
125        alias = "Bearings",
126        rename = "bearings",
127        skip_serializing_if = "Vec::is_empty",
128        default
129    )]
130    pub bearings: Vec<EbBearings>,
131    /// 半径
132    ///
133    /// 軸の半径
134    #[serde(alias = "Radius", rename = "radiuses")]
135    pub radiuses: Vec<EbRadius>,
136}
137
138#[derive(Debug, Clone, Serialize, Deserialize)]
139pub struct EbBearings {
140    #[serde(
141        alias = "$text",
142        rename = "value",
143        skip_serializing_if = "Option::is_none"
144    )]
145    pub value: Option<i64>,
146    /// 分類
147    #[serde(alias = "@type", rename = "type")]
148    pub ty: String,
149    /// 単位
150    #[serde(
151        alias = "@unit",
152        rename = "unit",
153        skip_serializing_if = "Option::is_none"
154    )]
155    pub unit: Option<String>,
156    /// 状態
157    ///
158    /// 値の状態(「不明」など)を示す。
159    #[serde(
160        alias = "@condition",
161        rename = "condition",
162        skip_serializing_if = "Option::is_none"
163    )]
164    pub condition: Option<String>,
165    /// 文字列表現
166    ///
167    /// 値を文字列で表示する場合の表記法を記述する。
168    #[serde(
169        alias = "@description",
170        rename = "description",
171        skip_serializing_if = "Option::is_none"
172    )]
173    pub description: Option<String>,
174}
175
176#[derive(Debug, Clone, Serialize, Deserialize)]
177pub struct EbCircle {
178    /// 分類
179    #[serde(
180        alias = "@type",
181        rename = "type",
182        skip_serializing_if = "Option::is_none"
183    )]
184    pub ty: Option<String>,
185    /// 基点
186    ///
187    /// 円の基点
188    #[serde(
189        alias = "BasePoint",
190        rename = "basePoints",
191        skip_serializing_if = "Vec::is_empty",
192        default
193    )]
194    pub base_points: Vec<EbCoordinate>,
195    /// 軸
196    ///
197    /// 基点からの軸群を示す
198    #[serde(
199        alias = "Axes",
200        rename = "axes",
201        skip_serializing_if = "Option::is_none"
202    )]
203    pub axes: Option<EbAxes>,
204}
205
206#[derive(Debug, Clone, Serialize, Deserialize)]
207pub struct EbClassThresholdOfAverage {
208    /// かなり低い(少ない)ときの最小値
209    #[serde(
210        alias = "ThresholdOfMinimum",
211        rename = "thresholdOfMinimum",
212        skip_serializing_if = "Option::is_none"
213    )]
214    pub threshold_of_minimum: Option<EbThreshold>,
215    /// 平年よりかなり低い(少ない)となる閾値
216    #[serde(
217        alias = "ThresholdOfSignificantlyBelowNormal",
218        rename = "thresholdOfSignificantlyBelowNormal",
219        skip_serializing_if = "Option::is_none"
220    )]
221    pub threshold_of_significantly_below_normal: Option<EbThreshold>,
222    /// 平年より低い(少ない)となる閾値
223    #[serde(
224        alias = "ThresholdOfBelowNormal",
225        rename = "thresholdOfBelowNormal",
226        skip_serializing_if = "Option::is_none"
227    )]
228    pub threshold_of_below_normal: Option<EbThreshold>,
229    /// 平年より高い(多い)となる閾値
230    #[serde(
231        alias = "ThresholdOfAboveNormal",
232        rename = "thresholdOfAboveNormal",
233        skip_serializing_if = "Option::is_none"
234    )]
235    pub threshold_of_above_normal: Option<EbThreshold>,
236    /// 平年よりかなり高い(多い)となる閾値
237    #[serde(
238        alias = "ThresholdOfSignificantlyAboveNormal",
239        rename = "thresholdOfSignificantlyAboveNormal",
240        skip_serializing_if = "Option::is_none"
241    )]
242    pub threshold_of_significantly_above_normal: Option<EbThreshold>,
243    /// かなり高い(多い)となるときの最大値
244    #[serde(
245        alias = "ThresholdOfMaximum",
246        rename = "thresholdOfMaximum",
247        skip_serializing_if = "Option::is_none"
248    )]
249    pub threshold_of_maximum: Option<EbThreshold>,
250}
251
252#[derive(Debug, Clone, Serialize, Deserialize)]
253pub struct EbClimateFeature {
254    /// 天候表現平文
255    ///
256    /// 出現の可能性が最も大きい天候
257    #[serde(
258        alias = "GeneralSituationText",
259        rename = "generalSituationTexts",
260        skip_serializing_if = "Vec::is_empty",
261        default
262    )]
263    pub general_situation_texts: Vec<EbReferableString>,
264    /// 特徴のある気温、降水量、日照時間等の確率
265    #[serde(
266        alias = "SignificantClimateElement",
267        rename = "significantClimateElements",
268        skip_serializing_if = "Vec::is_empty",
269        default
270    )]
271    pub significant_climate_elements: Vec<EbSignificantClimateElement>,
272}
273
274#[derive(Debug, Clone, Serialize, Deserialize)]
275pub struct EbClimateProbabilityValues {
276    /// 対象気象要素
277    #[serde(alias = "@kind", rename = "kind")]
278    pub kind: String,
279    /// 時系列での参照番号
280    ///
281    /// 時系列で表現する場合の参照番号を示す。
282    #[serde(
283        alias = "@refID",
284        rename = "refID",
285        skip_serializing_if = "Option::is_none"
286    )]
287    pub ref_id: Option<u8>,
288    /// 平年より低い(少ない)確率
289    #[serde(
290        alias = "ProbabilityOfBelowNormal",
291        rename = "probabilityOfBelowNormal"
292    )]
293    pub probability_of_below_normal: EbProbability,
294    /// 平年並の確率
295    #[serde(alias = "ProbabilityOfNormal", rename = "probabilityOfNormal")]
296    pub probability_of_normal: EbProbability,
297    /// 平年より高い(多い)確率
298    #[serde(
299        alias = "ProbabilityOfAboveNormal",
300        rename = "probabilityOfAboveNormal"
301    )]
302    pub probability_of_above_normal: EbProbability,
303}
304
305#[derive(Debug, Clone, Serialize, Deserialize)]
306pub struct EbComparison {
307    #[serde(
308        alias = "$text",
309        rename = "value",
310        skip_serializing_if = "Option::is_none"
311    )]
312    pub value: Option<f64>,
313    /// 分類
314    #[serde(alias = "@type", rename = "type")]
315    pub ty: String,
316    /// 単位
317    #[serde(
318        alias = "@unit",
319        rename = "unit",
320        skip_serializing_if = "Option::is_none"
321    )]
322    pub unit: Option<String>,
323    /// 時系列での参照番号
324    ///
325    /// 時系列で表現する場合の参照番号を示す。
326    #[serde(
327        alias = "@refID",
328        rename = "refID",
329        skip_serializing_if = "Option::is_none"
330    )]
331    pub ref_id: Option<u8>,
332    /// 状態
333    ///
334    /// 値の状態(「不明」など)を示す。
335    #[serde(
336        alias = "@condition",
337        rename = "condition",
338        skip_serializing_if = "Option::is_none"
339    )]
340    pub condition: Option<String>,
341    /// 文字列表現
342    ///
343    /// 値を文字列で表示する場合の表記法を記述する。
344    #[serde(
345        alias = "@description",
346        rename = "description",
347        skip_serializing_if = "Option::is_none"
348    )]
349    pub description: Option<String>,
350}
351
352#[derive(Debug, Clone, Serialize, Deserialize)]
353pub struct EbCoordinate {
354    #[serde(
355        alias = "$text",
356        rename = "value",
357        default,
358        deserialize_with = "trim_string"
359    )]
360    pub value: String,
361    /// 分類
362    ///
363    /// 地理空間情報の分類を示す。
364    #[serde(
365        alias = "@type",
366        rename = "type",
367        skip_serializing_if = "Option::is_none"
368    )]
369    pub ty: Option<String>,
370    /// 測地系
371    ///
372    /// 測地系を示す(日本測地系の場合のみ表現する)。
373    #[serde(
374        alias = "@datum",
375        rename = "datum",
376        skip_serializing_if = "Option::is_none"
377    )]
378    pub datum: Option<String>,
379    /// 状態
380    ///
381    /// 震源がごく浅い場合などで例外的な状態を示す。
382    #[serde(
383        alias = "@condition",
384        rename = "condition",
385        skip_serializing_if = "Option::is_none"
386    )]
387    pub condition: Option<String>,
388    /// 文字列表現
389    ///
390    /// 文字列で表示する場合の表記法を記述する。
391    #[serde(
392        alias = "@description",
393        rename = "description",
394        skip_serializing_if = "Option::is_none"
395    )]
396    pub description: Option<String>,
397}
398
399#[derive(Debug, Clone, Serialize, Deserialize)]
400pub struct EbDateTime {
401    #[serde(alias = "$text", rename = "value")]
402    pub value: DateTime,
403    /// 分類
404    ///
405    /// 時刻の分類を示す。
406    #[serde(
407        alias = "@type",
408        rename = "type",
409        skip_serializing_if = "Option::is_none"
410    )]
411    pub ty: Option<String>,
412    /// 有効桁
413    ///
414    /// 時刻の有効部分(「"年月日時"まで」など)を示す。
415    #[serde(
416        alias = "@significant",
417        rename = "significant",
418        skip_serializing_if = "Option::is_none"
419    )]
420    pub significant: Option<String>,
421    /// 正確さ
422    ///
423    /// 時刻の幅(「日頃」など)を示す。
424    #[serde(
425        alias = "@precision",
426        rename = "precision",
427        skip_serializing_if = "Option::is_none"
428    )]
429    pub precision: Option<String>,
430    /// あいまいさ
431    ///
432    /// 時刻のあいまいさ(時刻の幅で示せない場合)を示す。
433    #[serde(
434        alias = "@dubious",
435        rename = "dubious",
436        skip_serializing_if = "Option::is_none"
437    )]
438    pub dubious: Option<String>,
439    /// 文字列表現
440    ///
441    /// 値を文字列で表示する場合の表記法を記述する。
442    #[serde(
443        alias = "@description",
444        rename = "description",
445        skip_serializing_if = "Option::is_none"
446    )]
447    pub description: Option<String>,
448}
449
450#[derive(Debug, Clone, Serialize, Deserialize)]
451pub struct EbDirection {
452    #[serde(
453        alias = "$text",
454        rename = "value",
455        default,
456        deserialize_with = "trim_string"
457    )]
458    pub value: String,
459    /// 分類
460    #[serde(alias = "@type", rename = "type")]
461    pub ty: String,
462    /// 単位
463    #[serde(
464        alias = "@unit",
465        rename = "unit",
466        skip_serializing_if = "Option::is_none"
467    )]
468    pub unit: Option<String>,
469    /// 状態
470    ///
471    /// 値の状態(「不明」など)を示す。
472    #[serde(
473        alias = "@condition",
474        rename = "condition",
475        skip_serializing_if = "Option::is_none"
476    )]
477    pub condition: Option<String>,
478    /// 文字列表現
479    ///
480    /// 値を文字列で表示する場合の表記法を記述する。
481    #[serde(
482        alias = "@description",
483        rename = "description",
484        skip_serializing_if = "Option::is_none"
485    )]
486    pub description: Option<String>,
487}
488
489#[derive(Debug, Clone, Serialize, Deserialize)]
490pub struct EbDischarge {
491    #[serde(
492        alias = "$text",
493        rename = "value",
494        skip_serializing_if = "Option::is_none"
495    )]
496    pub value: Option<f64>,
497    /// 分類
498    #[serde(alias = "@type", rename = "type")]
499    pub ty: String,
500    /// 単位
501    #[serde(
502        alias = "@unit",
503        rename = "unit",
504        skip_serializing_if = "Option::is_none"
505    )]
506    pub unit: Option<String>,
507    /// 時系列での参照番号
508    ///
509    /// 時系列で表現する場合の参照番号を示す。
510    #[serde(
511        alias = "@refID",
512        rename = "refID",
513        skip_serializing_if = "Option::is_none"
514    )]
515    pub ref_id: Option<u8>,
516    /// 状態
517    ///
518    /// 値の状態(「正常」など)を示す。
519    #[serde(
520        alias = "@condition",
521        rename = "condition",
522        skip_serializing_if = "Option::is_none"
523    )]
524    pub condition: Option<String>,
525    /// 文字列表現
526    ///
527    /// 値を文字列で表示する場合の表記法を記述する。
528    #[serde(
529        alias = "@description",
530        rename = "description",
531        skip_serializing_if = "Option::is_none"
532    )]
533    pub description: Option<String>,
534}
535
536#[derive(Debug, Clone, Serialize, Deserialize)]
537pub struct EbFloodDepth {
538    #[serde(
539        alias = "$text",
540        rename = "value",
541        skip_serializing_if = "Option::is_none"
542    )]
543    pub value: Option<f64>,
544    /// 分類
545    #[serde(alias = "@type", rename = "type")]
546    pub ty: String,
547    /// 単位
548    #[serde(
549        alias = "@unit",
550        rename = "unit",
551        skip_serializing_if = "Option::is_none"
552    )]
553    pub unit: Option<String>,
554    /// 補足情報
555    ///
556    /// 補足する情報を示す
557    #[serde(
558        alias = "@bound",
559        rename = "bound",
560        skip_serializing_if = "Option::is_none"
561    )]
562    pub bound: Option<String>,
563    /// 時系列での参照番号
564    ///
565    /// 時系列で表現する場合の参照番号を示す。
566    #[serde(
567        alias = "@refID",
568        rename = "refID",
569        skip_serializing_if = "Option::is_none"
570    )]
571    pub ref_id: Option<u8>,
572    /// 状態
573    ///
574    /// 値の状態(「不明」など)を示す。
575    #[serde(
576        alias = "@condition",
577        rename = "condition",
578        skip_serializing_if = "Option::is_none"
579    )]
580    pub condition: Option<String>,
581    /// 文字列表現
582    ///
583    /// 値を文字列で表示する場合の表記法を記述する。
584    #[serde(
585        alias = "@description",
586        rename = "description",
587        skip_serializing_if = "Option::is_none"
588    )]
589    pub description: Option<String>,
590}
591
592#[derive(Debug, Clone, Serialize, Deserialize)]
593pub struct EbHumidity {
594    #[serde(
595        alias = "$text",
596        rename = "value",
597        skip_serializing_if = "Option::is_none"
598    )]
599    pub value: Option<f64>,
600    /// 分類
601    #[serde(alias = "@type", rename = "type")]
602    pub ty: String,
603    /// 単位
604    #[serde(
605        alias = "@unit",
606        rename = "unit",
607        skip_serializing_if = "Option::is_none"
608    )]
609    pub unit: Option<String>,
610    /// 時系列での参照番号
611    ///
612    /// 時系列で表現する場合の参照番号を示す。
613    #[serde(
614        alias = "@refID",
615        rename = "refID",
616        skip_serializing_if = "Option::is_none"
617    )]
618    pub ref_id: Option<u8>,
619    /// 状態
620    ///
621    /// 値の状態(「不明」など)を示す。
622    #[serde(
623        alias = "@condition",
624        rename = "condition",
625        skip_serializing_if = "Option::is_none"
626    )]
627    pub condition: Option<String>,
628    /// 文字列表現
629    ///
630    /// 値を文字列で表示する場合の表記法を記述する。
631    #[serde(
632        alias = "@description",
633        rename = "description",
634        skip_serializing_if = "Option::is_none"
635    )]
636    pub description: Option<String>,
637}
638
639#[derive(Debug, Clone, Serialize, Deserialize)]
640pub struct EbIcing {
641    #[serde(
642        alias = "$text",
643        rename = "value",
644        default,
645        deserialize_with = "trim_string"
646    )]
647    pub value: String,
648    /// 分類
649    #[serde(alias = "@type", rename = "type")]
650    pub ty: String,
651    /// 単位
652    #[serde(
653        alias = "@unit",
654        rename = "unit",
655        skip_serializing_if = "Option::is_none"
656    )]
657    pub unit: Option<String>,
658    /// 時系列での参照番号
659    ///
660    /// 時系列で表現する場合の参照番号を示す。
661    #[serde(
662        alias = "@refID",
663        rename = "refID",
664        skip_serializing_if = "Option::is_none"
665    )]
666    pub ref_id: Option<u8>,
667    /// 状態
668    ///
669    /// 値の状態(「不明」など)を示す。
670    #[serde(
671        alias = "@condition",
672        rename = "condition",
673        skip_serializing_if = "Option::is_none"
674    )]
675    pub condition: Option<String>,
676    /// 文字列表現
677    ///
678    /// 値を文字列で表示する場合の表記法を記述する。
679    #[serde(
680        alias = "@description",
681        rename = "description",
682        skip_serializing_if = "Option::is_none"
683    )]
684    pub description: Option<String>,
685}
686
687#[derive(Debug, Clone, Serialize, Deserialize)]
688pub struct EbIntensityClass {
689    #[serde(
690        alias = "$text",
691        rename = "value",
692        default,
693        deserialize_with = "trim_string"
694    )]
695    pub value: String,
696    /// 分類
697    #[serde(alias = "@type", rename = "type")]
698    pub ty: String,
699}
700
701#[derive(Debug, Clone, Serialize, Deserialize)]
702pub struct EbMagnitude {
703    #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
704    pub value: f64,
705    /// M種別
706    ///
707    /// 分類を示す。
708    #[serde(alias = "@type", rename = "type")]
709    pub ty: String,
710    /// 状態
711    ///
712    /// 値の状態(「不明」など)を示す。
713    #[serde(
714        alias = "@condition",
715        rename = "condition",
716        skip_serializing_if = "Option::is_none"
717    )]
718    pub condition: Option<String>,
719    /// 文字列表現
720    ///
721    /// 値を文字列で表示する場合の表記法を記述する。
722    #[serde(
723        alias = "@description",
724        rename = "description",
725        skip_serializing_if = "Option::is_none"
726    )]
727    pub description: Option<String>,
728}
729
730#[derive(Debug, Clone, Serialize, Deserialize)]
731pub struct EbPlumeDirection {
732    #[serde(
733        alias = "$text",
734        rename = "value",
735        default,
736        deserialize_with = "trim_string"
737    )]
738    pub value: String,
739    /// 分類
740    #[serde(
741        alias = "@type",
742        rename = "type",
743        skip_serializing_if = "Option::is_none"
744    )]
745    pub ty: Option<String>,
746    /// 単位
747    #[serde(
748        alias = "@unit",
749        rename = "unit",
750        skip_serializing_if = "Option::is_none"
751    )]
752    pub unit: Option<String>,
753    /// 状態
754    ///
755    /// 値の状態(「不明」など)を示す。
756    #[serde(
757        alias = "@condition",
758        rename = "condition",
759        skip_serializing_if = "Option::is_none"
760    )]
761    pub condition: Option<String>,
762    /// 文字列表現
763    ///
764    /// 値を文字列で表示する場合の表記法を記述する。
765    #[serde(
766        alias = "@description",
767        rename = "description",
768        skip_serializing_if = "Option::is_none"
769    )]
770    pub description: Option<String>,
771}
772
773#[derive(Debug, Clone, Serialize, Deserialize)]
774pub struct EbPlumeHeight {
775    #[serde(
776        alias = "$text",
777        rename = "value",
778        skip_serializing_if = "Option::is_none"
779    )]
780    pub value: Option<i64>,
781    /// 分類
782    #[serde(
783        alias = "@type",
784        rename = "type",
785        skip_serializing_if = "Option::is_none"
786    )]
787    pub ty: Option<String>,
788    /// 単位
789    #[serde(
790        alias = "@unit",
791        rename = "unit",
792        skip_serializing_if = "Option::is_none"
793    )]
794    pub unit: Option<String>,
795    /// 状態
796    ///
797    /// 値の状態(「不明」など)を示す。
798    #[serde(
799        alias = "@condition",
800        rename = "condition",
801        skip_serializing_if = "Option::is_none"
802    )]
803    pub condition: Option<String>,
804    /// 文字列表現
805    ///
806    /// 値を文字列で表示する場合の表記法を記述する。
807    #[serde(
808        alias = "@description",
809        rename = "description",
810        skip_serializing_if = "Option::is_none"
811    )]
812    pub description: Option<String>,
813}
814
815#[derive(Debug, Clone, Serialize, Deserialize)]
816pub struct EbPossibilityRankOfWarning {
817    #[serde(
818        alias = "$text",
819        rename = "value",
820        default,
821        deserialize_with = "trim_string"
822    )]
823    pub value: String,
824    /// 分類
825    #[serde(alias = "@type", rename = "type")]
826    pub ty: String,
827    /// 時系列での参照番号
828    ///
829    /// 時系列で表現する場合の参照番号を示す。
830    #[serde(
831        alias = "@refID",
832        rename = "refID",
833        skip_serializing_if = "Option::is_none"
834    )]
835    pub ref_id: Option<u8>,
836    /// 状態
837    ///
838    /// 値の状態(「提供なし」など)を示す。
839    #[serde(
840        alias = "@condition",
841        rename = "condition",
842        skip_serializing_if = "Option::is_none"
843    )]
844    pub condition: Option<String>,
845    /// 文字列表現
846    ///
847    /// 値を文字列で表示する場合の表記法を記述する。
848    #[serde(
849        alias = "@description",
850        rename = "description",
851        skip_serializing_if = "Option::is_none"
852    )]
853    pub description: Option<String>,
854}
855
856#[derive(Debug, Clone, Serialize, Deserialize)]
857pub struct EbPrecipitation {
858    #[serde(
859        alias = "$text",
860        rename = "value",
861        skip_serializing_if = "Option::is_none"
862    )]
863    pub value: Option<f64>,
864    /// 分類
865    #[serde(alias = "@type", rename = "type")]
866    pub ty: String,
867    /// 単位
868    #[serde(
869        alias = "@unit",
870        rename = "unit",
871        skip_serializing_if = "Option::is_none"
872    )]
873    pub unit: Option<String>,
874    /// 時系列での参照番号
875    ///
876    /// 時系列で表現する場合の参照番号を示す。
877    #[serde(
878        alias = "@refID",
879        rename = "refID",
880        skip_serializing_if = "Option::is_none"
881    )]
882    pub ref_id: Option<u8>,
883    /// 状態
884    ///
885    /// 値の状態(「不明」など)を示す。
886    #[serde(
887        alias = "@condition",
888        rename = "condition",
889        skip_serializing_if = "Option::is_none"
890    )]
891    pub condition: Option<String>,
892    /// 文字列表現
893    ///
894    /// 値を文字列で表示する場合の表記法を記述する。
895    #[serde(
896        alias = "@description",
897        rename = "description",
898        skip_serializing_if = "Option::is_none"
899    )]
900    pub description: Option<String>,
901}
902
903#[derive(Debug, Clone, Serialize, Deserialize)]
904pub struct EbPrecipitationBasedIndex {
905    #[serde(
906        alias = "$text",
907        rename = "value",
908        skip_serializing_if = "Option::is_none"
909    )]
910    pub value: Option<f64>,
911    /// 分類
912    #[serde(alias = "@type", rename = "type")]
913    pub ty: String,
914    /// 単位
915    #[serde(
916        alias = "@unit",
917        rename = "unit",
918        skip_serializing_if = "Option::is_none"
919    )]
920    pub unit: Option<String>,
921    /// 時系列での参照番号
922    ///
923    /// 時系列で表現する場合の参照番号を示す。
924    #[serde(
925        alias = "@refID",
926        rename = "refID",
927        skip_serializing_if = "Option::is_none"
928    )]
929    pub ref_id: Option<u8>,
930    /// 状態
931    ///
932    /// 値の状態(「不明」など)を示す。
933    #[serde(
934        alias = "@condition",
935        rename = "condition",
936        skip_serializing_if = "Option::is_none"
937    )]
938    pub condition: Option<String>,
939    /// 文字列表現
940    ///
941    /// 値を文字列で表示する場合の表記法を記述する。
942    #[serde(
943        alias = "@description",
944        rename = "description",
945        skip_serializing_if = "Option::is_none"
946    )]
947    pub description: Option<String>,
948}
949
950#[derive(Debug, Clone, Serialize, Deserialize)]
951pub struct EbPressure {
952    #[serde(
953        alias = "$text",
954        rename = "value",
955        skip_serializing_if = "Option::is_none"
956    )]
957    pub value: Option<f64>,
958    /// 分類
959    #[serde(alias = "@type", rename = "type")]
960    pub ty: String,
961    /// 単位
962    #[serde(
963        alias = "@unit",
964        rename = "unit",
965        skip_serializing_if = "Option::is_none"
966    )]
967    pub unit: Option<String>,
968    /// 時系列での参照番号
969    ///
970    /// 時系列で表現する場合の参照番号を示す。
971    #[serde(
972        alias = "@refID",
973        rename = "refID",
974        skip_serializing_if = "Option::is_none"
975    )]
976    pub ref_id: Option<u8>,
977    /// 状態
978    ///
979    /// 値の状態(「不明」など)を示す。
980    #[serde(
981        alias = "@condition",
982        rename = "condition",
983        skip_serializing_if = "Option::is_none"
984    )]
985    pub condition: Option<String>,
986    /// 文字列表現
987    ///
988    /// 値を文字列で表示する場合の表記法を記述する。
989    #[serde(
990        alias = "@description",
991        rename = "description",
992        skip_serializing_if = "Option::is_none"
993    )]
994    pub description: Option<String>,
995}
996
997#[derive(Debug, Clone, Serialize, Deserialize)]
998pub struct EbProbability {
999    #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
1000    pub value: f64,
1001    /// 単位
1002    #[serde(
1003        alias = "@unit",
1004        rename = "unit",
1005        skip_serializing_if = "Option::is_none"
1006    )]
1007    pub unit: Option<String>,
1008    /// 補足情報
1009    ///
1010    /// 確率を補足する情報を示す
1011    #[serde(
1012        alias = "@bound",
1013        rename = "bound",
1014        skip_serializing_if = "Option::is_none"
1015    )]
1016    pub bound: Option<String>,
1017    /// 特徴的か否か
1018    ///
1019    /// 天候を特徴づける確率の場合に true とする
1020    #[serde(
1021        alias = "@significant",
1022        rename = "significant",
1023        skip_serializing_if = "Option::is_none"
1024    )]
1025    pub significant: Option<bool>,
1026}
1027
1028#[derive(Debug, Clone, Serialize, Deserialize)]
1029pub struct EbProbabilityOfAftershock {
1030    #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
1031    pub value: f64,
1032    /// 分類
1033    #[serde(alias = "@type", rename = "type")]
1034    pub ty: String,
1035    /// 単位
1036    ///
1037    /// 単位を示す(%)
1038    #[serde(alias = "@unit", rename = "unit")]
1039    pub unit: String,
1040}
1041
1042#[derive(Debug, Clone, Serialize, Deserialize)]
1043pub struct EbProbabilityOfPrecipitation {
1044    #[serde(
1045        alias = "$text",
1046        rename = "value",
1047        skip_serializing_if = "Option::is_none"
1048    )]
1049    pub value: Option<i64>,
1050    /// 分類
1051    #[serde(alias = "@type", rename = "type")]
1052    pub ty: String,
1053    /// 単位
1054    #[serde(
1055        alias = "@unit",
1056        rename = "unit",
1057        skip_serializing_if = "Option::is_none"
1058    )]
1059    pub unit: Option<String>,
1060    /// 時系列での参照番号
1061    ///
1062    /// 時系列で表現する場合の参照番号を示す。
1063    #[serde(
1064        alias = "@refID",
1065        rename = "refID",
1066        skip_serializing_if = "Option::is_none"
1067    )]
1068    pub ref_id: Option<u8>,
1069    /// 状態
1070    ///
1071    /// 値の状態(「不明」など)を示す。
1072    #[serde(
1073        alias = "@condition",
1074        rename = "condition",
1075        skip_serializing_if = "Option::is_none"
1076    )]
1077    pub condition: Option<String>,
1078    /// 文字列表現
1079    ///
1080    /// 値を文字列で表示する場合の表記法を記述する。
1081    #[serde(
1082        alias = "@description",
1083        rename = "description",
1084        skip_serializing_if = "Option::is_none"
1085    )]
1086    pub description: Option<String>,
1087}
1088
1089#[derive(Debug, Clone, Serialize, Deserialize)]
1090pub struct EbRadius {
1091    #[serde(
1092        alias = "$text",
1093        rename = "value",
1094        skip_serializing_if = "Option::is_none"
1095    )]
1096    pub value: Option<f64>,
1097    /// 分類
1098    #[serde(alias = "@type", rename = "type")]
1099    pub ty: String,
1100    /// 単位
1101    #[serde(
1102        alias = "@unit",
1103        rename = "unit",
1104        skip_serializing_if = "Option::is_none"
1105    )]
1106    pub unit: Option<String>,
1107    /// 状態
1108    ///
1109    /// 値の状態(「不明」など)を示す。
1110    #[serde(
1111        alias = "@condition",
1112        rename = "condition",
1113        skip_serializing_if = "Option::is_none"
1114    )]
1115    pub condition: Option<String>,
1116    /// 文字列表現
1117    ///
1118    /// 値を文字列で表示する場合の表記法を記述する。
1119    #[serde(
1120        alias = "@description",
1121        rename = "description",
1122        skip_serializing_if = "Option::is_none"
1123    )]
1124    pub description: Option<String>,
1125}
1126
1127#[derive(Debug, Clone, Serialize, Deserialize)]
1128pub struct EbReferableString {
1129    #[serde(
1130        alias = "$text",
1131        rename = "value",
1132        default,
1133        deserialize_with = "trim_string"
1134    )]
1135    pub value: String,
1136    /// 文章の種類
1137    #[serde(
1138        alias = "@type",
1139        rename = "type",
1140        skip_serializing_if = "Option::is_none"
1141    )]
1142    pub ty: Option<String>,
1143    /// 時系列での参照番号
1144    ///
1145    /// 時系列で表現する場合の参照番号を示す。
1146    #[serde(
1147        alias = "@refID",
1148        rename = "refID",
1149        skip_serializing_if = "Option::is_none"
1150    )]
1151    pub ref_id: Option<u8>,
1152}
1153
1154#[derive(Debug, Clone, Serialize, Deserialize)]
1155pub struct EbReliabilityClass {
1156    #[serde(
1157        alias = "$text",
1158        rename = "value",
1159        default,
1160        deserialize_with = "trim_string"
1161    )]
1162    pub value: String,
1163    /// 分類
1164    #[serde(alias = "@type", rename = "type")]
1165    pub ty: String,
1166    /// 時系列での参照番号
1167    ///
1168    /// 時系列で表現する場合の参照番号を示す。
1169    #[serde(
1170        alias = "@refID",
1171        rename = "refID",
1172        skip_serializing_if = "Option::is_none"
1173    )]
1174    pub ref_id: Option<u8>,
1175    /// 状態
1176    ///
1177    /// 値の状態(「不明」など)を示す。
1178    #[serde(
1179        alias = "@condition",
1180        rename = "condition",
1181        skip_serializing_if = "Option::is_none"
1182    )]
1183    pub condition: Option<String>,
1184}
1185
1186#[derive(Debug, Clone, Serialize, Deserialize)]
1187pub struct EbReliabilityValue {
1188    #[serde(
1189        alias = "$text",
1190        rename = "value",
1191        default,
1192        deserialize_with = "trim_string"
1193    )]
1194    pub value: String,
1195    /// 分類
1196    #[serde(alias = "@type", rename = "type")]
1197    pub ty: String,
1198    /// 時系列での参照番号
1199    ///
1200    /// 時系列で表現する場合の参照番号を示す。
1201    #[serde(
1202        alias = "@refID",
1203        rename = "refID",
1204        skip_serializing_if = "Option::is_none"
1205    )]
1206    pub ref_id: Option<u8>,
1207    /// 状態
1208    ///
1209    /// 値の状態(「不明」など)を示す。
1210    #[serde(
1211        alias = "@condition",
1212        rename = "condition",
1213        skip_serializing_if = "Option::is_none"
1214    )]
1215    pub condition: Option<String>,
1216}
1217
1218#[derive(Debug, Clone, Serialize, Deserialize)]
1219pub struct EbSeaIce {
1220    #[serde(
1221        alias = "$text",
1222        rename = "value",
1223        default,
1224        deserialize_with = "trim_string"
1225    )]
1226    pub value: String,
1227    /// 分類
1228    #[serde(alias = "@type", rename = "type")]
1229    pub ty: String,
1230    /// 単位
1231    #[serde(
1232        alias = "@unit",
1233        rename = "unit",
1234        skip_serializing_if = "Option::is_none"
1235    )]
1236    pub unit: Option<String>,
1237    /// 時系列での参照番号
1238    ///
1239    /// 時系列で表現する場合の参照番号を示す。
1240    #[serde(
1241        alias = "@refID",
1242        rename = "refID",
1243        skip_serializing_if = "Option::is_none"
1244    )]
1245    pub ref_id: Option<u8>,
1246    /// 状態
1247    ///
1248    /// 値の状態(「不明」など)を示す。
1249    #[serde(
1250        alias = "@condition",
1251        rename = "condition",
1252        skip_serializing_if = "Option::is_none"
1253    )]
1254    pub condition: Option<String>,
1255    /// 文字列表現
1256    ///
1257    /// 値を文字列で表示する場合の表記法を記述する。
1258    #[serde(
1259        alias = "@description",
1260        rename = "description",
1261        skip_serializing_if = "Option::is_none"
1262    )]
1263    pub description: Option<String>,
1264}
1265
1266#[derive(Debug, Clone, Serialize, Deserialize)]
1267pub struct EbSignificantClimateElement {
1268    /// 対象気象要素
1269    ///
1270    /// 特徴のある気象の要素
1271    #[serde(alias = "@kind", rename = "kind")]
1272    pub kind: String,
1273    /// 確率平文表現
1274    ///
1275    /// 特徴のある気温、降水量、日照時間等の確率の平文表現
1276    #[serde(alias = "Text", rename = "texts")]
1277    pub texts: Vec<EbReferableString>,
1278    /// 平年より低い(少ない)確率
1279    ///
1280    /// 特徴のある確率
1281    #[serde(
1282        alias = "ProbabilityOfBelowNormal",
1283        rename = "probabilityOfBelowNormal",
1284        skip_serializing_if = "Option::is_none"
1285    )]
1286    pub probability_of_below_normal: Option<EbProbability>,
1287    /// 平年並の確率
1288    ///
1289    /// 特徴のある確率
1290    #[serde(
1291        alias = "ProbabilityOfNormal",
1292        rename = "probabilityOfNormal",
1293        skip_serializing_if = "Option::is_none"
1294    )]
1295    pub probability_of_normal: Option<EbProbability>,
1296    /// 平年より高い(多い)確率
1297    ///
1298    /// 特徴のある確率
1299    #[serde(
1300        alias = "ProbabilityOfAboveNormal",
1301        rename = "probabilityOfAboveNormal",
1302        skip_serializing_if = "Option::is_none"
1303    )]
1304    pub probability_of_above_normal: Option<EbProbability>,
1305    /// 平年よりかなり低い(少ない)確率
1306    ///
1307    /// 特徴のある確率
1308    #[serde(
1309        alias = "ProbabilityOfSignificantlyBelowNormal",
1310        rename = "probabilityOfSignificantlyBelowNormal",
1311        skip_serializing_if = "Option::is_none"
1312    )]
1313    pub probability_of_significantly_below_normal: Option<EbProbability>,
1314    /// 平年よりかなり高い(多い)確率
1315    ///
1316    /// 特徴のある確率
1317    #[serde(
1318        alias = "ProbabilityOfSignificantlyAboveNormal",
1319        rename = "probabilityOfSignificantlyAboveNormal",
1320        skip_serializing_if = "Option::is_none"
1321    )]
1322    pub probability_of_significantly_above_normal: Option<EbProbability>,
1323    /// 平年より低い(少ない)となる閾値
1324    #[serde(
1325        alias = "ThresholdOfBelowNormal",
1326        rename = "thresholdOfBelowNormal",
1327        skip_serializing_if = "Option::is_none"
1328    )]
1329    pub threshold_of_below_normal: Option<EbThreshold>,
1330    /// 平年より高い(多い)となる閾値
1331    #[serde(
1332        alias = "ThresholdOfAboveNormal",
1333        rename = "thresholdOfAboveNormal",
1334        skip_serializing_if = "Option::is_none"
1335    )]
1336    pub threshold_of_above_normal: Option<EbThreshold>,
1337    /// 平年よりかなり低い(少ない)となる閾値
1338    #[serde(
1339        alias = "ThresholdOfSignificantlyBelowNormal",
1340        rename = "thresholdOfSignificantlyBelowNormal",
1341        skip_serializing_if = "Option::is_none"
1342    )]
1343    pub threshold_of_significantly_below_normal: Option<EbThreshold>,
1344    /// 平年よりかなり高い(多い)となる閾値
1345    #[serde(
1346        alias = "ThresholdOfSignificantlyAboveNormal",
1347        rename = "thresholdOfSignificantlyAboveNormal",
1348        skip_serializing_if = "Option::is_none"
1349    )]
1350    pub threshold_of_significantly_above_normal: Option<EbThreshold>,
1351}
1352
1353#[derive(Debug, Clone, Serialize, Deserialize)]
1354pub struct EbSnowDepth {
1355    #[serde(
1356        alias = "$text",
1357        rename = "value",
1358        skip_serializing_if = "Option::is_none"
1359    )]
1360    pub value: Option<f64>,
1361    /// 分類
1362    #[serde(alias = "@type", rename = "type")]
1363    pub ty: String,
1364    /// 単位
1365    #[serde(
1366        alias = "@unit",
1367        rename = "unit",
1368        skip_serializing_if = "Option::is_none"
1369    )]
1370    pub unit: Option<String>,
1371    /// 時系列での参照番号
1372    ///
1373    /// 時系列で表現する場合の参照番号を示す。
1374    #[serde(
1375        alias = "@refID",
1376        rename = "refID",
1377        skip_serializing_if = "Option::is_none"
1378    )]
1379    pub ref_id: Option<u8>,
1380    /// 状態
1381    ///
1382    /// 値の状態(「不明」など)を示す。
1383    #[serde(
1384        alias = "@condition",
1385        rename = "condition",
1386        skip_serializing_if = "Option::is_none"
1387    )]
1388    pub condition: Option<String>,
1389    /// 文字列表現
1390    ///
1391    /// 値を文字列で表示する場合の表記法を記述する。
1392    #[serde(
1393        alias = "@description",
1394        rename = "description",
1395        skip_serializing_if = "Option::is_none"
1396    )]
1397    pub description: Option<String>,
1398}
1399
1400#[derive(Debug, Clone, Serialize, Deserialize)]
1401pub struct EbSnowfallDepth {
1402    #[serde(
1403        alias = "$text",
1404        rename = "value",
1405        skip_serializing_if = "Option::is_none"
1406    )]
1407    pub value: Option<f64>,
1408    /// 分類
1409    #[serde(alias = "@type", rename = "type")]
1410    pub ty: String,
1411    /// 単位
1412    #[serde(
1413        alias = "@unit",
1414        rename = "unit",
1415        skip_serializing_if = "Option::is_none"
1416    )]
1417    pub unit: Option<String>,
1418    /// 時系列での参照番号
1419    ///
1420    /// 時系列で表現する場合の参照番号を示す。
1421    #[serde(
1422        alias = "@refID",
1423        rename = "refID",
1424        skip_serializing_if = "Option::is_none"
1425    )]
1426    pub ref_id: Option<u8>,
1427    /// 状態
1428    ///
1429    /// 値の状態(「不明」など)を示す。
1430    #[serde(
1431        alias = "@condition",
1432        rename = "condition",
1433        skip_serializing_if = "Option::is_none"
1434    )]
1435    pub condition: Option<String>,
1436    /// 文字列表現
1437    ///
1438    /// 値を文字列で表示する場合の表記法を記述する。
1439    #[serde(
1440        alias = "@description",
1441        rename = "description",
1442        skip_serializing_if = "Option::is_none"
1443    )]
1444    pub description: Option<String>,
1445}
1446
1447#[derive(Debug, Clone, Serialize, Deserialize)]
1448pub struct EbSolarZenithAngle {
1449    #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
1450    pub value: f64,
1451    /// 単位
1452    #[serde(
1453        alias = "@unit",
1454        rename = "unit",
1455        skip_serializing_if = "Option::is_none"
1456    )]
1457    pub unit: Option<String>,
1458    /// 時系列での参照番号
1459    ///
1460    /// 時系列で表現する場合の参照番号を示す。
1461    #[serde(
1462        alias = "@refID",
1463        rename = "refID",
1464        skip_serializing_if = "Option::is_none"
1465    )]
1466    pub ref_id: Option<u8>,
1467    /// 状態
1468    ///
1469    /// 値の状態(「不明」など)を示す。
1470    #[serde(
1471        alias = "@condition",
1472        rename = "condition",
1473        skip_serializing_if = "Option::is_none"
1474    )]
1475    pub condition: Option<String>,
1476}
1477
1478#[derive(Debug, Clone, Serialize, Deserialize)]
1479pub struct EbSpeed {
1480    #[serde(
1481        alias = "$text",
1482        rename = "value",
1483        skip_serializing_if = "Option::is_none"
1484    )]
1485    pub value: Option<f64>,
1486    /// 分類
1487    #[serde(alias = "@type", rename = "type")]
1488    pub ty: String,
1489    /// 単位
1490    #[serde(
1491        alias = "@unit",
1492        rename = "unit",
1493        skip_serializing_if = "Option::is_none"
1494    )]
1495    pub unit: Option<String>,
1496    /// 状態
1497    ///
1498    /// 値の状態(「不明」など)を示す。
1499    #[serde(
1500        alias = "@condition",
1501        rename = "condition",
1502        skip_serializing_if = "Option::is_none"
1503    )]
1504    pub condition: Option<String>,
1505    /// 文字列表現
1506    ///
1507    /// 値を文字列で表示する場合の表記法を記述する。
1508    #[serde(
1509        alias = "@description",
1510        rename = "description",
1511        skip_serializing_if = "Option::is_none"
1512    )]
1513    pub description: Option<String>,
1514}
1515
1516#[derive(Debug, Clone, Serialize, Deserialize)]
1517pub struct EbSunshine {
1518    #[serde(
1519        alias = "$text",
1520        rename = "value",
1521        skip_serializing_if = "Option::is_none"
1522    )]
1523    pub value: Option<f64>,
1524    /// 分類
1525    #[serde(alias = "@type", rename = "type")]
1526    pub ty: String,
1527    /// 単位
1528    #[serde(
1529        alias = "@unit",
1530        rename = "unit",
1531        skip_serializing_if = "Option::is_none"
1532    )]
1533    pub unit: Option<String>,
1534    /// 時系列での参照番号
1535    ///
1536    /// 時系列で表現する場合の参照番号を示す。
1537    #[serde(
1538        alias = "@refID",
1539        rename = "refID",
1540        skip_serializing_if = "Option::is_none"
1541    )]
1542    pub ref_id: Option<u8>,
1543    /// 状態
1544    ///
1545    /// 値の状態(「不明」など)を示す。
1546    #[serde(
1547        alias = "@condition",
1548        rename = "condition",
1549        skip_serializing_if = "Option::is_none"
1550    )]
1551    pub condition: Option<String>,
1552    /// 文字列表現
1553    ///
1554    /// 値を文字列で表示する場合の表記法を記述する。
1555    #[serde(
1556        alias = "@description",
1557        rename = "description",
1558        skip_serializing_if = "Option::is_none"
1559    )]
1560    pub description: Option<String>,
1561}
1562
1563#[derive(Debug, Clone, Serialize, Deserialize)]
1564pub struct EbSynopsis {
1565    #[serde(
1566        alias = "$text",
1567        rename = "value",
1568        default,
1569        deserialize_with = "trim_string"
1570    )]
1571    pub value: String,
1572    /// 分類
1573    #[serde(alias = "@type", rename = "type")]
1574    pub ty: String,
1575}
1576
1577#[derive(Debug, Clone, Serialize, Deserialize)]
1578pub struct EbTemperature {
1579    #[serde(
1580        alias = "$text",
1581        rename = "value",
1582        skip_serializing_if = "Option::is_none"
1583    )]
1584    pub value: Option<f64>,
1585    /// 分類
1586    #[serde(alias = "@type", rename = "type")]
1587    pub ty: String,
1588    /// 単位
1589    #[serde(
1590        alias = "@unit",
1591        rename = "unit",
1592        skip_serializing_if = "Option::is_none"
1593    )]
1594    pub unit: Option<String>,
1595    /// 時系列での参照番号
1596    ///
1597    /// 時系列で表現する場合の参照番号を示す。
1598    #[serde(
1599        alias = "@refID",
1600        rename = "refID",
1601        skip_serializing_if = "Option::is_none"
1602    )]
1603    pub ref_id: Option<u8>,
1604    /// 状態
1605    ///
1606    /// 値の状態(「不明」など)を示す。
1607    #[serde(
1608        alias = "@condition",
1609        rename = "condition",
1610        skip_serializing_if = "Option::is_none"
1611    )]
1612    pub condition: Option<String>,
1613    /// 文字列表現
1614    ///
1615    /// 値を文字列で表示する場合の表記法を記述する。
1616    #[serde(
1617        alias = "@description",
1618        rename = "description",
1619        skip_serializing_if = "Option::is_none"
1620    )]
1621    pub description: Option<String>,
1622}
1623
1624#[derive(Debug, Clone, Serialize, Deserialize)]
1625pub struct EbThreshold {
1626    #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
1627    pub value: f64,
1628    /// 分類
1629    #[serde(
1630        alias = "@type",
1631        rename = "type",
1632        skip_serializing_if = "Option::is_none"
1633    )]
1634    pub ty: Option<String>,
1635    /// 単位
1636    #[serde(
1637        alias = "@unit",
1638        rename = "unit",
1639        skip_serializing_if = "Option::is_none"
1640    )]
1641    pub unit: Option<String>,
1642    /// 代替文字列
1643    ///
1644    /// 値を文字列で表示する場合の表記法を記述する。
1645    #[serde(
1646        alias = "@description",
1647        rename = "description",
1648        skip_serializing_if = "Option::is_none"
1649    )]
1650    pub description: Option<String>,
1651    /// 補足情報
1652    ///
1653    /// 階級区分閾値を補足する情報を示す
1654    #[serde(
1655        alias = "@bound",
1656        rename = "bound",
1657        skip_serializing_if = "Option::is_none"
1658    )]
1659    pub bound: Option<String>,
1660}
1661
1662#[derive(Debug, Clone, Serialize, Deserialize)]
1663pub struct EbTidalLevel {
1664    #[serde(
1665        alias = "$text",
1666        rename = "value",
1667        skip_serializing_if = "Option::is_none"
1668    )]
1669    pub value: Option<f64>,
1670    /// 分類
1671    #[serde(alias = "@type", rename = "type")]
1672    pub ty: String,
1673    /// 単位
1674    #[serde(
1675        alias = "@unit",
1676        rename = "unit",
1677        skip_serializing_if = "Option::is_none"
1678    )]
1679    pub unit: Option<String>,
1680    /// 時系列での参照番号
1681    ///
1682    /// 時系列で表現する場合の参照番号を示す。
1683    #[serde(
1684        alias = "@refID",
1685        rename = "refID",
1686        skip_serializing_if = "Option::is_none"
1687    )]
1688    pub ref_id: Option<u8>,
1689    /// 状態
1690    ///
1691    /// 値の状態(「不明」など)を示す。
1692    #[serde(
1693        alias = "@condition",
1694        rename = "condition",
1695        skip_serializing_if = "Option::is_none"
1696    )]
1697    pub condition: Option<String>,
1698    /// 文字列表現
1699    ///
1700    /// 値を文字列で表示する場合の表記法を記述する。
1701    #[serde(
1702        alias = "@description",
1703        rename = "description",
1704        skip_serializing_if = "Option::is_none"
1705    )]
1706    pub description: Option<String>,
1707}
1708
1709#[derive(Debug, Clone, Serialize, Deserialize)]
1710pub struct EbTidalPeriod {
1711    #[serde(
1712        alias = "$text",
1713        rename = "value",
1714        skip_serializing_if = "Option::is_none"
1715    )]
1716    pub value: Option<f64>,
1717    /// 分類
1718    #[serde(alias = "@type", rename = "type")]
1719    pub ty: String,
1720    /// 単位
1721    #[serde(
1722        alias = "@unit",
1723        rename = "unit",
1724        skip_serializing_if = "Option::is_none"
1725    )]
1726    pub unit: Option<String>,
1727    /// 時系列での参照番号
1728    ///
1729    /// 時系列で表現する場合の参照番号を示す。
1730    #[serde(
1731        alias = "@refID",
1732        rename = "refID",
1733        skip_serializing_if = "Option::is_none"
1734    )]
1735    pub ref_id: Option<u8>,
1736    /// 状態
1737    ///
1738    /// 値の状態(「不明」など)を示す。
1739    #[serde(
1740        alias = "@condition",
1741        rename = "condition",
1742        skip_serializing_if = "Option::is_none"
1743    )]
1744    pub condition: Option<String>,
1745    /// 文字列表現
1746    ///
1747    /// 値を文字列で表示する場合の表記法を記述する。
1748    #[serde(
1749        alias = "@description",
1750        rename = "description",
1751        skip_serializing_if = "Option::is_none"
1752    )]
1753    pub description: Option<String>,
1754}
1755
1756#[derive(Debug, Clone, Serialize, Deserialize)]
1757pub struct EbTsunamiHeight {
1758    #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
1759    pub value: f64,
1760    /// 分類
1761    #[serde(alias = "@type", rename = "type")]
1762    pub ty: String,
1763    /// 単位
1764    #[serde(alias = "@unit", rename = "unit")]
1765    pub unit: String,
1766    /// 状態
1767    ///
1768    /// 値の状態(「不明」など)を示す。
1769    #[serde(
1770        alias = "@condition",
1771        rename = "condition",
1772        skip_serializing_if = "Option::is_none"
1773    )]
1774    pub condition: Option<String>,
1775    /// 文字列表現
1776    ///
1777    /// 値を文字列で表示する場合の表記法を記述する。
1778    #[serde(
1779        alias = "@description",
1780        rename = "description",
1781        skip_serializing_if = "Option::is_none"
1782    )]
1783    pub description: Option<String>,
1784}
1785
1786#[derive(Debug, Clone, Serialize, Deserialize)]
1787pub struct EbTyphoonClass {
1788    #[serde(
1789        alias = "$text",
1790        rename = "value",
1791        default,
1792        deserialize_with = "trim_string"
1793    )]
1794    pub value: String,
1795    /// 分類
1796    #[serde(alias = "@type", rename = "type")]
1797    pub ty: String,
1798}
1799
1800#[derive(Debug, Clone, Serialize, Deserialize)]
1801pub struct EbUvIndex {
1802    #[serde(
1803        alias = "$text",
1804        rename = "value",
1805        skip_serializing_if = "Option::is_none"
1806    )]
1807    pub value: Option<f64>,
1808    /// 分類
1809    #[serde(
1810        alias = "@type",
1811        rename = "type",
1812        skip_serializing_if = "Option::is_none"
1813    )]
1814    pub ty: Option<String>,
1815    /// 時系列での参照番号
1816    ///
1817    /// 時系列で表現する場合の参照番号を示す。
1818    #[serde(
1819        alias = "@refID",
1820        rename = "refID",
1821        skip_serializing_if = "Option::is_none"
1822    )]
1823    pub ref_id: Option<u8>,
1824    /// 状態
1825    ///
1826    /// 値の状態(「不明」など)を示す。
1827    #[serde(
1828        alias = "@condition",
1829        rename = "condition",
1830        skip_serializing_if = "Option::is_none"
1831    )]
1832    pub condition: Option<String>,
1833    /// 文字列表現
1834    ///
1835    /// 値を文字列で表示する場合の表記法を記述する。
1836    #[serde(
1837        alias = "@description",
1838        rename = "description",
1839        skip_serializing_if = "Option::is_none"
1840    )]
1841    pub description: Option<String>,
1842}
1843
1844#[derive(Debug, Clone, Serialize, Deserialize)]
1845pub struct EbVisibility {
1846    #[serde(
1847        alias = "$text",
1848        rename = "value",
1849        skip_serializing_if = "Option::is_none"
1850    )]
1851    pub value: Option<f64>,
1852    /// 分類
1853    #[serde(alias = "@type", rename = "type")]
1854    pub ty: String,
1855    /// 単位
1856    #[serde(
1857        alias = "@unit",
1858        rename = "unit",
1859        skip_serializing_if = "Option::is_none"
1860    )]
1861    pub unit: Option<String>,
1862    /// 時系列での参照番号
1863    ///
1864    /// 時系列で表現する場合の参照番号を示す。
1865    #[serde(
1866        alias = "@refID",
1867        rename = "refID",
1868        skip_serializing_if = "Option::is_none"
1869    )]
1870    pub ref_id: Option<u8>,
1871    /// 状態
1872    ///
1873    /// 値の状態(「不明」など)を示す。
1874    #[serde(
1875        alias = "@condition",
1876        rename = "condition",
1877        skip_serializing_if = "Option::is_none"
1878    )]
1879    pub condition: Option<String>,
1880    /// 文字列表現
1881    ///
1882    /// 値を文字列で表示する場合の表記法を記述する。
1883    #[serde(
1884        alias = "@description",
1885        rename = "description",
1886        skip_serializing_if = "Option::is_none"
1887    )]
1888    pub description: Option<String>,
1889}
1890
1891#[derive(Debug, Clone, Serialize, Deserialize)]
1892pub struct EbWaterLevel {
1893    #[serde(
1894        alias = "$text",
1895        rename = "value",
1896        skip_serializing_if = "Option::is_none"
1897    )]
1898    pub value: Option<f64>,
1899    /// 分類
1900    #[serde(alias = "@type", rename = "type")]
1901    pub ty: String,
1902    /// 単位
1903    #[serde(
1904        alias = "@unit",
1905        rename = "unit",
1906        skip_serializing_if = "Option::is_none"
1907    )]
1908    pub unit: Option<String>,
1909    /// 時系列での参照番号
1910    ///
1911    /// 時系列で表現する場合の参照番号を示す。
1912    #[serde(
1913        alias = "@refID",
1914        rename = "refID",
1915        skip_serializing_if = "Option::is_none"
1916    )]
1917    pub ref_id: Option<u8>,
1918    /// 状態
1919    ///
1920    /// 値の状態(「正常」など)を示す。
1921    #[serde(
1922        alias = "@condition",
1923        rename = "condition",
1924        skip_serializing_if = "Option::is_none"
1925    )]
1926    pub condition: Option<String>,
1927    /// 文字列表現
1928    ///
1929    /// 値を文字列で表示する場合の表記法を記述する。
1930    #[serde(
1931        alias = "@description",
1932        rename = "description",
1933        skip_serializing_if = "Option::is_none"
1934    )]
1935    pub description: Option<String>,
1936}
1937
1938#[derive(Debug, Clone, Serialize, Deserialize)]
1939pub struct EbWaveHeight {
1940    #[serde(
1941        alias = "$text",
1942        rename = "value",
1943        skip_serializing_if = "Option::is_none"
1944    )]
1945    pub value: Option<f64>,
1946    /// 分類
1947    #[serde(alias = "@type", rename = "type")]
1948    pub ty: String,
1949    /// 単位
1950    #[serde(
1951        alias = "@unit",
1952        rename = "unit",
1953        skip_serializing_if = "Option::is_none"
1954    )]
1955    pub unit: Option<String>,
1956    /// 時系列での参照番号
1957    ///
1958    /// 時系列で表現する場合の参照番号を示す。
1959    #[serde(
1960        alias = "@refID",
1961        rename = "refID",
1962        skip_serializing_if = "Option::is_none"
1963    )]
1964    pub ref_id: Option<u8>,
1965    /// 状態
1966    ///
1967    /// 値の状態(「不明」など)を示す。
1968    #[serde(
1969        alias = "@condition",
1970        rename = "condition",
1971        skip_serializing_if = "Option::is_none"
1972    )]
1973    pub condition: Option<String>,
1974    /// 文字列表現
1975    ///
1976    /// 値を文字列で表示する場合の表記法を記述する。
1977    #[serde(
1978        alias = "@description",
1979        rename = "description",
1980        skip_serializing_if = "Option::is_none"
1981    )]
1982    pub description: Option<String>,
1983}
1984
1985#[derive(Debug, Clone, Serialize, Deserialize)]
1986pub struct EbWeather {
1987    #[serde(
1988        alias = "$text",
1989        rename = "value",
1990        default,
1991        deserialize_with = "trim_string"
1992    )]
1993    pub value: String,
1994    /// 分類
1995    #[serde(alias = "@type", rename = "type")]
1996    pub ty: String,
1997    /// 時系列での参照番号
1998    ///
1999    /// 時系列で表現する場合の参照番号を示す。
2000    #[serde(
2001        alias = "@refID",
2002        rename = "refID",
2003        skip_serializing_if = "Option::is_none"
2004    )]
2005    pub ref_id: Option<u8>,
2006    /// 状態
2007    ///
2008    /// 値の状態(「不明」など)を示す。
2009    #[serde(
2010        alias = "@condition",
2011        rename = "condition",
2012        skip_serializing_if = "Option::is_none"
2013    )]
2014    pub condition: Option<String>,
2015    /// 文字列表現
2016    ///
2017    /// 値を文字列で表示する場合の表記法を記述する。
2018    #[serde(
2019        alias = "@description",
2020        rename = "description",
2021        skip_serializing_if = "Option::is_none"
2022    )]
2023    pub description: Option<String>,
2024}
2025
2026#[derive(Debug, Clone, Serialize, Deserialize)]
2027pub struct EbWeatherCode {
2028    #[serde(
2029        alias = "$text",
2030        rename = "value",
2031        skip_serializing_if = "Option::is_none"
2032    )]
2033    pub value: Option<i64>,
2034    /// 分類
2035    #[serde(alias = "@type", rename = "type")]
2036    pub ty: String,
2037    /// 時系列での参照番号
2038    ///
2039    /// 時系列で表現する場合の参照番号を示す。
2040    #[serde(
2041        alias = "@refID",
2042        rename = "refID",
2043        skip_serializing_if = "Option::is_none"
2044    )]
2045    pub ref_id: Option<u8>,
2046    /// 状態
2047    ///
2048    /// 値の状態(「不明」など)を示す。
2049    #[serde(
2050        alias = "@condition",
2051        rename = "condition",
2052        skip_serializing_if = "Option::is_none"
2053    )]
2054    pub condition: Option<String>,
2055    /// 文字列表現
2056    ///
2057    /// 値を文字列で表示する場合の表記法を記述する。
2058    #[serde(
2059        alias = "@description",
2060        rename = "description",
2061        skip_serializing_if = "Option::is_none"
2062    )]
2063    pub description: Option<String>,
2064}
2065
2066#[derive(Debug, Clone, Serialize, Deserialize)]
2067pub struct EbWeatherForecastProbability {
2068    #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
2069    pub value: f64,
2070    /// 時系列での参照番号
2071    ///
2072    /// 天気予報を時系列で表現する場合の参照番号
2073    #[serde(
2074        alias = "@refID",
2075        rename = "refID",
2076        skip_serializing_if = "Option::is_none"
2077    )]
2078    pub ref_id: Option<u8>,
2079    /// 単位
2080    #[serde(
2081        alias = "@unit",
2082        rename = "unit",
2083        skip_serializing_if = "Option::is_none"
2084    )]
2085    pub unit: Option<String>,
2086}
2087
2088#[derive(Debug, Clone, Serialize, Deserialize)]
2089pub struct EbWindDegree {
2090    #[serde(
2091        alias = "$text",
2092        rename = "value",
2093        skip_serializing_if = "Option::is_none"
2094    )]
2095    pub value: Option<f64>,
2096    /// 分類
2097    #[serde(alias = "@type", rename = "type")]
2098    pub ty: String,
2099    /// 単位
2100    #[serde(
2101        alias = "@unit",
2102        rename = "unit",
2103        skip_serializing_if = "Option::is_none"
2104    )]
2105    pub unit: Option<String>,
2106    /// 時系列での参照番号
2107    ///
2108    /// 時系列で表現する場合の参照番号を示す。
2109    #[serde(
2110        alias = "@refID",
2111        rename = "refID",
2112        skip_serializing_if = "Option::is_none"
2113    )]
2114    pub ref_id: Option<u8>,
2115    /// 状態
2116    ///
2117    /// 値の状態(「不明」など)を示す。
2118    #[serde(
2119        alias = "@condition",
2120        rename = "condition",
2121        skip_serializing_if = "Option::is_none"
2122    )]
2123    pub condition: Option<String>,
2124    /// 文字列表現
2125    ///
2126    /// 値を文字列で表示する場合の表記法を記述する。
2127    #[serde(
2128        alias = "@description",
2129        rename = "description",
2130        skip_serializing_if = "Option::is_none"
2131    )]
2132    pub description: Option<String>,
2133}
2134
2135#[derive(Debug, Clone, Serialize, Deserialize)]
2136pub struct EbWindDirection {
2137    #[serde(
2138        alias = "$text",
2139        rename = "value",
2140        default,
2141        deserialize_with = "trim_string"
2142    )]
2143    pub value: String,
2144    /// 分類
2145    #[serde(alias = "@type", rename = "type")]
2146    pub ty: String,
2147    /// 単位
2148    #[serde(
2149        alias = "@unit",
2150        rename = "unit",
2151        skip_serializing_if = "Option::is_none"
2152    )]
2153    pub unit: Option<String>,
2154    /// 時系列での参照番号
2155    ///
2156    /// 時系列で表現する場合の参照番号を示す。
2157    #[serde(
2158        alias = "@refID",
2159        rename = "refID",
2160        skip_serializing_if = "Option::is_none"
2161    )]
2162    pub ref_id: Option<u8>,
2163    /// 状態
2164    ///
2165    /// 値の状態(「不明」など)を示す。
2166    #[serde(
2167        alias = "@condition",
2168        rename = "condition",
2169        skip_serializing_if = "Option::is_none"
2170    )]
2171    pub condition: Option<String>,
2172    /// 文字列表現
2173    ///
2174    /// 値を文字列で表示する場合の表記法を記述する。
2175    #[serde(
2176        alias = "@description",
2177        rename = "description",
2178        skip_serializing_if = "Option::is_none"
2179    )]
2180    pub description: Option<String>,
2181}
2182
2183#[derive(Debug, Clone, Serialize, Deserialize)]
2184pub struct EbWindScale {
2185    #[serde(
2186        alias = "$text",
2187        rename = "value",
2188        skip_serializing_if = "Option::is_none"
2189    )]
2190    pub value: Option<i64>,
2191    /// 分類
2192    #[serde(alias = "@type", rename = "type")]
2193    pub ty: String,
2194    /// 単位
2195    #[serde(
2196        alias = "@unit",
2197        rename = "unit",
2198        skip_serializing_if = "Option::is_none"
2199    )]
2200    pub unit: Option<String>,
2201    /// 時系列での参照番号
2202    ///
2203    /// 時系列で表現する場合の参照番号を示す。
2204    #[serde(
2205        alias = "@refID",
2206        rename = "refID",
2207        skip_serializing_if = "Option::is_none"
2208    )]
2209    pub ref_id: Option<u8>,
2210    /// 状態
2211    ///
2212    /// 値の状態(「不明」など)を示す。
2213    #[serde(
2214        alias = "@condition",
2215        rename = "condition",
2216        skip_serializing_if = "Option::is_none"
2217    )]
2218    pub condition: Option<String>,
2219    /// 文字列表現
2220    ///
2221    /// 値を文字列で表示する場合の表記法を記述する。
2222    #[serde(
2223        alias = "@description",
2224        rename = "description",
2225        skip_serializing_if = "Option::is_none"
2226    )]
2227    pub description: Option<String>,
2228}
2229
2230#[derive(Debug, Clone, Serialize, Deserialize)]
2231pub struct EbWindSpeed {
2232    #[serde(
2233        alias = "$text",
2234        rename = "value",
2235        skip_serializing_if = "Option::is_none"
2236    )]
2237    pub value: Option<f64>,
2238    /// 分類
2239    #[serde(alias = "@type", rename = "type")]
2240    pub ty: String,
2241    /// 単位
2242    #[serde(
2243        alias = "@unit",
2244        rename = "unit",
2245        skip_serializing_if = "Option::is_none"
2246    )]
2247    pub unit: Option<String>,
2248    /// 時系列での参照番号
2249    ///
2250    /// 時系列で表現する場合の参照番号を示す。
2251    #[serde(
2252        alias = "@refID",
2253        rename = "refID",
2254        skip_serializing_if = "Option::is_none"
2255    )]
2256    pub ref_id: Option<u8>,
2257    /// 状態
2258    ///
2259    /// 値の状態(「不明」など)を示す。
2260    #[serde(
2261        alias = "@condition",
2262        rename = "condition",
2263        skip_serializing_if = "Option::is_none"
2264    )]
2265    pub condition: Option<String>,
2266    /// 文字列表現
2267    ///
2268    /// 値を文字列で表示する場合の表記法を記述する。
2269    #[serde(
2270        alias = "@description",
2271        rename = "description",
2272        skip_serializing_if = "Option::is_none"
2273    )]
2274    pub description: Option<String>,
2275}
2276
2277#[derive(Debug, Clone, Serialize, Deserialize)]
2278pub struct IbInformation {
2279    /// 防災気象情報事項の種別
2280    ///
2281    /// この要素が示す防災気象情報事項の種別を示す。個々の種別間は独立している。
2282    #[serde(alias = "@type", rename = "type")]
2283    pub ty: String,
2284    /// 個々の防災気象情報要素
2285    ///
2286    /// 防災気象情報事項について、防災気象情報要素と地点等の一組の防災気象情報要素を示す。
2287    #[serde(alias = "Item", rename = "items")]
2288    pub items: Vec<IbItem>,
2289}
2290
2291#[derive(Debug, Clone, Serialize, Deserialize)]
2292pub struct IbArea {
2293    /// 対象地域・地点名称
2294    ///
2295    /// 対象地域・地点名を示す。
2296    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
2297    pub name: String,
2298    /// 対象地域・地点コード
2299    ///
2300    /// 対象地域・地点コードを示す(コード辞書参照)。
2301    #[serde(
2302        alias = "Code",
2303        rename = "code",
2304        skip_serializing_if = "Option::is_none",
2305        deserialize_with = "trim_opt_string",
2306        default
2307    )]
2308    pub code: Option<String>,
2309    /// 対象地域(円)
2310    ///
2311    /// 台風と低気圧の対象地域(円)を示す。
2312    #[serde(
2313        alias = "Circle",
2314        rename = "circles",
2315        skip_serializing_if = "Vec::is_empty",
2316        default
2317    )]
2318    pub circles: Vec<EbCircle>,
2319    /// 対象地域(点)の座標
2320    #[serde(
2321        alias = "Coordinate",
2322        rename = "coordinates",
2323        skip_serializing_if = "Vec::is_empty",
2324        default
2325    )]
2326    pub coordinates: Vec<EbCoordinate>,
2327    /// 対象地域(線)の座標
2328    ///
2329    /// 対象地域(線)の座標を示す。
2330    #[serde(
2331        alias = "Line",
2332        rename = "lines",
2333        skip_serializing_if = "Vec::is_empty",
2334        default
2335    )]
2336    pub lines: Vec<EbCoordinate>,
2337    /// 対象地域(多角形)の座標
2338    #[serde(
2339        alias = "Polygon",
2340        rename = "polygons",
2341        skip_serializing_if = "Vec::is_empty",
2342        default
2343    )]
2344    pub polygons: Vec<EbCoordinate>,
2345}
2346
2347#[derive(Debug, Clone, Serialize, Deserialize)]
2348pub struct IbAreas {
2349    /// 対象地域・地点コード種別
2350    ///
2351    /// この要素下に存在するcodeの種別を示す。
2352    #[serde(alias = "@codeType", rename = "codeType")]
2353    pub code_type: String,
2354    /// 対象地域・地点
2355    ///
2356    /// 個々の対象地域・地点を示す。
2357    #[serde(alias = "Area", rename = "areas")]
2358    pub areas: Vec<IbArea>,
2359}
2360
2361#[derive(Debug, Clone, Serialize, Deserialize)]
2362pub struct IbHead {
2363    /// 標題
2364    ///
2365    /// 情報を示す標題。具体的な内容が判別できる名称であり、可視化を目的として利用する。
2366    #[serde(alias = "Title", rename = "title", deserialize_with = "trim_string")]
2367    pub title: String,
2368    /// 発表時刻
2369    ///
2370    /// 本情報の公式な発表時刻を示す。
2371    #[serde(alias = "ReportDateTime", rename = "reportDateTime")]
2372    pub report_date_time: DateTime,
2373    /// 基点時刻
2374    ///
2375    /// 本情報の対象となる時刻・時間帯の基点時刻を示す。
2376    #[serde(alias = "TargetDateTime", rename = "targetDateTime")]
2377    pub target_date_time: NullableDateTime,
2378    /// 基点時刻のあいまいさ
2379    #[serde(
2380        alias = "TargetDTDubious",
2381        rename = "targetDTDubious",
2382        skip_serializing_if = "Option::is_none",
2383        deserialize_with = "trim_opt_string",
2384        default
2385    )]
2386    pub target_dt_dubious: Option<String>,
2387    /// 基点時刻からの取りうる時間
2388    ///
2389    /// 本情報の対象が時間幅を持つ場合、targetDateTimeを基点とした時間の幅を示す。有効期間を示す場合が多い。
2390    #[serde(
2391        alias = "TargetDuration",
2392        rename = "targetDuration",
2393        skip_serializing_if = "Option::is_none"
2394    )]
2395    pub target_duration: Option<Duration>,
2396    /// 失効時刻
2397    ///
2398    /// 本情報の失効時刻がある場合、これを示す。
2399    #[serde(
2400        alias = "ValidDateTime",
2401        rename = "validDateTime",
2402        skip_serializing_if = "Option::is_none"
2403    )]
2404    pub valid_date_time: Option<DateTime>,
2405    /// 識別情報
2406    ///
2407    /// 本情報の識別情報を示し、本要素が同じものについては、一連の情報であることを示す。
2408    #[serde(
2409        alias = "EventID",
2410        rename = "eventID",
2411        deserialize_with = "trim_string"
2412    )]
2413    pub event_id: String,
2414    /// 情報形態
2415    ///
2416    /// 本情報の形態を示す。
2417    #[serde(
2418        alias = "InfoType",
2419        rename = "infoType",
2420        deserialize_with = "trim_string"
2421    )]
2422    pub info_type: String,
2423    /// 情報番号
2424    ///
2425    /// 情報の番号。
2426    #[serde(alias = "Serial", rename = "serial", deserialize_with = "trim_string")]
2427    pub serial: String,
2428    /// スキーマの運用種別情報
2429    ///
2430    /// 同一スキーマ上における情報分類に応じた運用を示す種別情報である。
2431    #[serde(
2432        alias = "InfoKind",
2433        rename = "infoKind",
2434        deserialize_with = "trim_string"
2435    )]
2436    pub info_kind: String,
2437    /// スキーマの運用種別情報のバージョン番号
2438    ///
2439    /// スキーマの運用種別情報におけるバージョン番号を示す。
2440    #[serde(
2441        alias = "InfoKindVersion",
2442        rename = "infoKindVersion",
2443        deserialize_with = "trim_string"
2444    )]
2445    pub info_kind_version: String,
2446    /// 見出し要素
2447    ///
2448    /// 防災気象情報事項となる見出し要素を示す。
2449    #[serde(alias = "Headline", rename = "headline")]
2450    pub headline: IbHeadline,
2451}
2452
2453#[derive(Debug, Clone, Serialize, Deserialize)]
2454pub struct IbHeadline {
2455    /// 見出し文
2456    ///
2457    /// 防災気象情報事項である見出し文のテキスト情報を示す。
2458    #[serde(alias = "Text", rename = "text", deserialize_with = "trim_string")]
2459    pub text: String,
2460    /// 見出し防災気象情報事項
2461    ///
2462    /// 防災気象情報事項である見出し要素を示す。
2463    #[serde(
2464        alias = "Information",
2465        rename = "informations",
2466        skip_serializing_if = "Vec::is_empty",
2467        default
2468    )]
2469    pub informations: Vec<IbInformation>,
2470}
2471
2472#[derive(Debug, Clone, Serialize, Deserialize)]
2473pub struct IbItem {
2474    /// 防災気象情報要素
2475    #[serde(alias = "Kind", rename = "kinds")]
2476    pub kinds: Vec<IbKind>,
2477    /// 直前の防災気象情報要素
2478    ///
2479    /// 直前の防災気象情報要素の状況を示す。
2480    #[serde(
2481        alias = "LastKind",
2482        rename = "lastKinds",
2483        skip_serializing_if = "Vec::is_empty",
2484        default
2485    )]
2486    pub last_kinds: Vec<IbKind>,
2487    /// 対象地域・地点全体
2488    ///
2489    /// 対象となる地域・地点群を示す。
2490    #[serde(alias = "Areas", rename = "areas")]
2491    pub areas: IbAreas,
2492}
2493
2494#[derive(Debug, Clone, Serialize, Deserialize)]
2495pub struct IbKind {
2496    /// 防災気象情報要素名
2497    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
2498    pub name: String,
2499    /// 防災気象情報要素コード
2500    #[serde(
2501        alias = "Code",
2502        rename = "code",
2503        skip_serializing_if = "Option::is_none",
2504        deserialize_with = "trim_opt_string",
2505        default
2506    )]
2507    pub code: Option<String>,
2508    /// 状況
2509    ///
2510    /// 防災気象情報要素やこの防災気象情報事項について状況を示す。
2511    #[serde(
2512        alias = "Condition",
2513        rename = "condition",
2514        skip_serializing_if = "Option::is_none",
2515        deserialize_with = "trim_opt_string",
2516        default
2517    )]
2518    pub condition: Option<String>,
2519}
2520
2521#[derive(Debug, Clone, Serialize, Deserialize)]
2522pub struct MeteAddition {
2523    /// 付加事項の内容
2524    ///
2525    /// 付加事項の内容を文字列で示す
2526    #[serde(alias = "Note", rename = "notes")]
2527    pub notes: Vec<String>,
2528}
2529
2530#[derive(Debug, Clone, Serialize, Deserialize)]
2531pub struct MeteAdditionalInfo {
2532    /// 観測の付加事項
2533    ///
2534    /// 生物季節観測、特殊観測で利用する付加事項
2535    #[serde(
2536        alias = "ObservationAddition",
2537        rename = "observationAddition",
2538        skip_serializing_if = "Option::is_none"
2539    )]
2540    pub observation_addition: Option<MeteObservationAddition>,
2541    /// 季節予報の付加事項
2542    ///
2543    /// 季節予報で利用する付加事項
2544    #[serde(
2545        alias = "ClimateForecastAddition",
2546        rename = "climateForecastAddition",
2547        skip_serializing_if = "Option::is_none"
2548    )]
2549    pub climate_forecast_addition: Option<MeteClimateForecastAddition>,
2550    /// 指定河川洪水予報の付加事項
2551    ///
2552    /// 指定河川洪水予報で利用する付加事項
2553    #[serde(
2554        alias = "FloodForecastAddition",
2555        rename = "floodForecastAddition",
2556        skip_serializing_if = "Option::is_none"
2557    )]
2558    pub flood_forecast_addition: Option<MeteFloodForecastAddition>,
2559    /// 高潮警報の付加事項
2560    ///
2561    /// 高潮警報で利用する付加事項
2562    #[serde(
2563        alias = "TidalWarningAddition",
2564        rename = "tidalWarningAdditions",
2565        skip_serializing_if = "Vec::is_empty",
2566        default
2567    )]
2568    pub tidal_warning_additions: Vec<MeteTidalWarningAddition>,
2569}
2570
2571#[derive(Debug, Clone, Serialize, Deserialize)]
2572pub struct MeteArea {
2573    /// 地域コード種別
2574    ///
2575    /// この要素の子要素であるCode要素のコード種別を示す
2576    #[serde(
2577        alias = "@codeType",
2578        rename = "codeType",
2579        skip_serializing_if = "Option::is_none"
2580    )]
2581    pub code_type: Option<String>,
2582    /// 対象地域・地点名称
2583    ///
2584    /// 対象地域・地点名を示す
2585    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
2586    pub name: String,
2587    /// 対象地域・地点コード
2588    ///
2589    /// 対象地域・地点コードを示す(コード辞書参照)
2590    #[serde(
2591        alias = "Code",
2592        rename = "code",
2593        skip_serializing_if = "Option::is_none",
2594        deserialize_with = "trim_opt_string",
2595        default
2596    )]
2597    pub code: Option<String>,
2598    /// 都道府県
2599    #[serde(
2600        alias = "Prefecture",
2601        rename = "prefecture",
2602        skip_serializing_if = "Option::is_none"
2603    )]
2604    pub prefecture: Option<MetePrefectureCity>,
2605    /// 都道府県コード
2606    ///
2607    /// 5桁の都道府県コード
2608    #[serde(
2609        alias = "PrefectureCode",
2610        rename = "prefectureCode",
2611        skip_serializing_if = "Option::is_none",
2612        deserialize_with = "trim_opt_string",
2613        default
2614    )]
2615    pub prefecture_code: Option<String>,
2616    /// 都道府県のリスト
2617    ///
2618    /// xs:list型で記述
2619    #[serde(
2620        alias = "PrefectureList",
2621        rename = "prefectureList",
2622        skip_serializing_if = "Option::is_none"
2623    )]
2624    pub prefecture_list: Option<StringList>,
2625    /// 都道府県コードのリスト
2626    ///
2627    /// 5桁の市町村コードをxs:list型で記述
2628    #[serde(
2629        alias = "PrefectureCodeList",
2630        rename = "prefectureCodeList",
2631        skip_serializing_if = "Option::is_none"
2632    )]
2633    pub prefecture_code_list: Option<StringList>,
2634    /// 支庁
2635    #[serde(
2636        alias = "SubPrefecture",
2637        rename = "subPrefecture",
2638        skip_serializing_if = "Option::is_none",
2639        deserialize_with = "trim_opt_string",
2640        default
2641    )]
2642    pub sub_prefecture: Option<String>,
2643    /// 支庁コード
2644    ///
2645    /// 5桁の市町村コード
2646    #[serde(
2647        alias = "SubPrefectureCode",
2648        rename = "subPrefectureCode",
2649        skip_serializing_if = "Option::is_none",
2650        deserialize_with = "trim_opt_string",
2651        default
2652    )]
2653    pub sub_prefecture_code: Option<String>,
2654    /// 支庁のリスト
2655    ///
2656    /// xs:list型で記述
2657    #[serde(
2658        alias = "SubPrefectureList",
2659        rename = "subPrefectureList",
2660        skip_serializing_if = "Option::is_none"
2661    )]
2662    pub sub_prefecture_list: Option<StringList>,
2663    /// 支庁コードのリスト
2664    ///
2665    /// 5桁の市町村コードをxs:list型で記述
2666    #[serde(
2667        alias = "SubPrefectureCodeList",
2668        rename = "subPrefectureCodeList",
2669        skip_serializing_if = "Option::is_none"
2670    )]
2671    pub sub_prefecture_code_list: Option<StringList>,
2672    /// 市町村
2673    #[serde(
2674        alias = "City",
2675        rename = "city",
2676        skip_serializing_if = "Option::is_none"
2677    )]
2678    pub city: Option<MetePrefectureCity>,
2679    /// 市町村コード
2680    ///
2681    /// 5桁の市町村コード又は末尾に'00'をつけた7桁のコード
2682    #[serde(
2683        alias = "CityCode",
2684        rename = "cityCode",
2685        skip_serializing_if = "Option::is_none",
2686        deserialize_with = "trim_opt_string",
2687        default
2688    )]
2689    pub city_code: Option<String>,
2690    /// 市町村のリスト
2691    ///
2692    /// xs:list型で記述
2693    #[serde(
2694        alias = "CityList",
2695        rename = "cityList",
2696        skip_serializing_if = "Option::is_none"
2697    )]
2698    pub city_list: Option<StringList>,
2699    /// 市町村コードのリスト
2700    ///
2701    /// 5桁の市町村コード又は末尾に'00'をつけた7桁のコードをxs:list型で記述
2702    #[serde(
2703        alias = "CityCodeList",
2704        rename = "cityCodeList",
2705        skip_serializing_if = "Option::is_none"
2706    )]
2707    pub city_code_list: Option<StringList>,
2708    /// 市町村を細分する領域
2709    #[serde(
2710        alias = "SubCity",
2711        rename = "subCity",
2712        skip_serializing_if = "Option::is_none",
2713        deserialize_with = "trim_opt_string",
2714        default
2715    )]
2716    pub sub_city: Option<String>,
2717    /// 市町村を細分する領域のコード
2718    ///
2719    /// 気象庁で拡張した7桁の市町村コード
2720    #[serde(
2721        alias = "SubCityCode",
2722        rename = "subCityCode",
2723        skip_serializing_if = "Option::is_none",
2724        deserialize_with = "trim_opt_string",
2725        default
2726    )]
2727    pub sub_city_code: Option<String>,
2728    /// 市町村を細分する領域のリスト
2729    ///
2730    /// xs:list型で記述。ただし、指定河川洪水予報では既存の細分区によらず浸水想定地区を記述し、SubCityCodeListは使用しない。
2731    #[serde(
2732        alias = "SubCityList",
2733        rename = "subCityList",
2734        skip_serializing_if = "Option::is_none"
2735    )]
2736    pub sub_city_list: Option<StringList>,
2737    /// 市町村を細分する領域のコードのリスト
2738    ///
2739    /// 気象庁で拡張した7桁の市町村コードをxs:list型で記述
2740    #[serde(
2741        alias = "SubCityCodeList",
2742        rename = "subCityCodeList",
2743        skip_serializing_if = "Option::is_none"
2744    )]
2745    pub sub_city_code_list: Option<StringList>,
2746    /// 対象地域・地点コードのリスト
2747    ///
2748    /// 対象地域・地点名が複数の対象地域・地点コードにより示される場合にxs:list型で記述
2749    #[serde(
2750        alias = "CodeList",
2751        rename = "codeList",
2752        skip_serializing_if = "Option::is_none"
2753    )]
2754    pub code_list: Option<StringList>,
2755    /// 対象地域(円)
2756    ///
2757    /// 台風と低気圧の対象地域(円)を示す。
2758    #[serde(
2759        alias = "Circle",
2760        rename = "circles",
2761        skip_serializing_if = "Vec::is_empty",
2762        default
2763    )]
2764    pub circles: Vec<EbCircle>,
2765    /// 対象地域(点)の座標
2766    #[serde(
2767        alias = "Coordinate",
2768        rename = "coordinates",
2769        skip_serializing_if = "Vec::is_empty",
2770        default
2771    )]
2772    pub coordinates: Vec<EbCoordinate>,
2773    /// 対象地域(線)の座標
2774    ///
2775    /// 対象地域(線)の座標を示す。
2776    #[serde(
2777        alias = "Line",
2778        rename = "lines",
2779        skip_serializing_if = "Vec::is_empty",
2780        default
2781    )]
2782    pub lines: Vec<EbCoordinate>,
2783    /// 対象地域(多角形)の座標
2784    #[serde(
2785        alias = "Polygon",
2786        rename = "polygons",
2787        skip_serializing_if = "Vec::is_empty",
2788        default
2789    )]
2790    pub polygons: Vec<EbCoordinate>,
2791    /// 領域の存在域
2792    #[serde(
2793        alias = "Location",
2794        rename = "location",
2795        skip_serializing_if = "Option::is_none",
2796        deserialize_with = "trim_opt_string",
2797        default
2798    )]
2799    pub location: Option<String>,
2800    /// 領域表現の状況
2801    ///
2802    /// 領域表現の状況について補足が必要な場合その内容を示す
2803    #[serde(
2804        alias = "Status",
2805        rename = "status",
2806        skip_serializing_if = "Option::is_none"
2807    )]
2808    pub status: Option<String>,
2809}
2810
2811#[derive(Debug, Clone, Serialize, Deserialize)]
2812pub struct MeteAreas {
2813    /// コード種別
2814    ///
2815    /// この要素の子要素であるArea要素のCode要素のコード種別を示す
2816    #[serde(
2817        alias = "@codeType",
2818        rename = "codeType",
2819        skip_serializing_if = "Option::is_none"
2820    )]
2821    pub code_type: Option<String>,
2822    /// 対象地域
2823    ///
2824    /// 個々の対象地域を示す。
2825    #[serde(alias = "Area", rename = "areas")]
2826    pub areas: Vec<MeteArea>,
2827}
2828
2829#[derive(Debug, Clone, Serialize, Deserialize)]
2830pub struct MeteAttention {
2831    /// 特記事項の内容
2832    ///
2833    /// 特記事項の内容を文字列で示す
2834    #[serde(alias = "Note", rename = "notes")]
2835    pub notes: Vec<String>,
2836}
2837
2838#[derive(Debug, Clone, Serialize, Deserialize)]
2839pub struct MeteBaseCriteria {
2840    /// 文章形式の表現
2841    ///
2842    /// 基準到達に係る内容を文章形式で示す
2843    #[serde(
2844        alias = "Sentence",
2845        rename = "sentence",
2846        skip_serializing_if = "Option::is_none"
2847    )]
2848    pub sentence: Option<MeteSentence>,
2849    /// 基準のクラス・レベル
2850    ///
2851    /// 基準が示すクラス・レベルの内容を示す。
2852    #[serde(
2853        alias = "CriteriaClass",
2854        rename = "criteriaClass",
2855        skip_serializing_if = "Option::is_none"
2856    )]
2857    pub criteria_class: Option<MeteCriteriaClass>,
2858    /// 地域
2859    ///
2860    /// 領域の一部の区域の内容を示す
2861    #[serde(
2862        alias = "Local",
2863        rename = "locals",
2864        skip_serializing_if = "Vec::is_empty",
2865        default
2866    )]
2867    pub locals: Vec<MeteLocalCriteria>,
2868    /// 基準到達時刻
2869    ///
2870    /// 基準値に到達する時刻
2871    #[serde(
2872        alias = "Time",
2873        rename = "time",
2874        skip_serializing_if = "Option::is_none"
2875    )]
2876    pub time: Option<DateTime>,
2877    /// 期間の長さ
2878    #[serde(
2879        alias = "Duration",
2880        rename = "duration",
2881        skip_serializing_if = "Option::is_none"
2882    )]
2883    pub duration: Option<Duration>,
2884    /// 注意事項・付加事項
2885    ///
2886    /// 注意事項・付加事項を示す(注意警戒事項を示す)
2887    #[serde(
2888        alias = "Remark",
2889        rename = "remark",
2890        skip_serializing_if = "Option::is_none",
2891        deserialize_with = "trim_opt_string",
2892        default
2893    )]
2894    pub remark: Option<String>,
2895}
2896
2897#[derive(Debug, Clone, Serialize, Deserialize)]
2898pub struct MeteBaseEvent {
2899    /// 変化を表す時要素
2900    ///
2901    /// 変化を表す時間表現を示す
2902    #[serde(
2903        alias = "TimeModifier",
2904        rename = "timeModifier",
2905        skip_serializing_if = "Option::is_none",
2906        deserialize_with = "trim_opt_string",
2907        default
2908    )]
2909    pub time_modifier: Option<String>,
2910    /// 文章形式の表現
2911    ///
2912    /// 事象の内容を文章形式で示す
2913    #[serde(
2914        alias = "Sentence",
2915        rename = "sentence",
2916        skip_serializing_if = "Option::is_none"
2917    )]
2918    pub sentence: Option<MeteSentence>,
2919    /// 地域
2920    ///
2921    /// 領域の一部の区域の内容を示す
2922    #[serde(
2923        alias = "Local",
2924        rename = "locals",
2925        skip_serializing_if = "Vec::is_empty",
2926        default
2927    )]
2928    pub locals: Vec<MeteLocalEvent>,
2929    /// 領域の存在域
2930    #[serde(
2931        alias = "Coordinate",
2932        rename = "coordinate",
2933        skip_serializing_if = "Option::is_none"
2934    )]
2935    pub coordinate: Option<MeteCoordinatePart>,
2936    /// 領域の存在域
2937    #[serde(
2938        alias = "Location",
2939        rename = "location",
2940        skip_serializing_if = "Option::is_none",
2941        deserialize_with = "trim_opt_string",
2942        default
2943    )]
2944    pub location: Option<String>,
2945    /// 事象名
2946    ///
2947    /// 事象を示す
2948    #[serde(
2949        alias = "Event",
2950        rename = "events",
2951        skip_serializing_if = "Vec::is_empty",
2952        default
2953    )]
2954    pub events: Vec<MeteEvent>,
2955    /// 注意事項・付加事項
2956    #[serde(
2957        alias = "Remark",
2958        rename = "remark",
2959        skip_serializing_if = "Option::is_none",
2960        deserialize_with = "trim_opt_string",
2961        default
2962    )]
2963    pub remark: Option<String>,
2964}
2965
2966#[derive(Debug, Clone, Serialize, Deserialize)]
2967pub struct MeteBaseHumidity {
2968    /// 変化を表す時要素
2969    ///
2970    /// 変化を表す時間表現を示す
2971    #[serde(
2972        alias = "TimeModifier",
2973        rename = "timeModifier",
2974        skip_serializing_if = "Option::is_none",
2975        deserialize_with = "trim_opt_string",
2976        default
2977    )]
2978    pub time_modifier: Option<String>,
2979    /// 湿度
2980    #[serde(
2981        alias = "Humidity",
2982        rename = "humidities",
2983        skip_serializing_if = "Vec::is_empty",
2984        default
2985    )]
2986    pub humidities: Vec<EbHumidity>,
2987    /// 地域
2988    ///
2989    /// 領域の一部の区域の内容を示す
2990    #[serde(
2991        alias = "Local",
2992        rename = "locals",
2993        skip_serializing_if = "Vec::is_empty",
2994        default
2995    )]
2996    pub locals: Vec<MeteLocalHumidity>,
2997    /// 起時
2998    ///
2999    /// 発生時刻を示す
3000    #[serde(
3001        alias = "Time",
3002        rename = "time",
3003        skip_serializing_if = "Option::is_none"
3004    )]
3005    pub time: Option<DateTime>,
3006    /// 注意事項・付加事項
3007    #[serde(
3008        alias = "Remark",
3009        rename = "remark",
3010        skip_serializing_if = "Option::is_none",
3011        deserialize_with = "trim_opt_string",
3012        default
3013    )]
3014    pub remark: Option<String>,
3015}
3016
3017#[derive(Debug, Clone, Serialize, Deserialize)]
3018pub struct MeteBaseIcing {
3019    /// 変化を表す時要素
3020    ///
3021    /// 変化を表す時間表現を示す
3022    #[serde(
3023        alias = "TimeModifier",
3024        rename = "timeModifier",
3025        skip_serializing_if = "Option::is_none",
3026        deserialize_with = "trim_opt_string",
3027        default
3028    )]
3029    pub time_modifier: Option<String>,
3030    /// 着氷
3031    #[serde(
3032        alias = "Icing",
3033        rename = "icings",
3034        skip_serializing_if = "Vec::is_empty",
3035        default
3036    )]
3037    pub icings: Vec<EbIcing>,
3038    /// 地域
3039    ///
3040    /// 領域の一部の区域の内容を示す
3041    #[serde(
3042        alias = "Local",
3043        rename = "locals",
3044        skip_serializing_if = "Vec::is_empty",
3045        default
3046    )]
3047    pub locals: Vec<MeteLocalIcing>,
3048    /// 起時
3049    ///
3050    /// 発生時刻を示す
3051    #[serde(
3052        alias = "Time",
3053        rename = "time",
3054        skip_serializing_if = "Option::is_none"
3055    )]
3056    pub time: Option<DateTime>,
3057    /// 注意事項・付加事項
3058    #[serde(
3059        alias = "Remark",
3060        rename = "remark",
3061        skip_serializing_if = "Option::is_none",
3062        deserialize_with = "trim_opt_string",
3063        default
3064    )]
3065    pub remark: Option<String>,
3066}
3067
3068#[derive(Debug, Clone, Serialize, Deserialize)]
3069pub struct MeteBasePrecipitation {
3070    /// 変化を表す時要素
3071    ///
3072    /// 変化を表す時間表現を示す
3073    #[serde(
3074        alias = "TimeModifier",
3075        rename = "timeModifier",
3076        skip_serializing_if = "Option::is_none",
3077        deserialize_with = "trim_opt_string",
3078        default
3079    )]
3080    pub time_modifier: Option<String>,
3081    /// 降水量
3082    #[serde(
3083        alias = "Precipitation",
3084        rename = "precipitations",
3085        skip_serializing_if = "Vec::is_empty",
3086        default
3087    )]
3088    pub precipitations: Vec<EbPrecipitation>,
3089    /// 地域
3090    ///
3091    /// 領域の一部の区域の内容を示す
3092    #[serde(
3093        alias = "Local",
3094        rename = "locals",
3095        skip_serializing_if = "Vec::is_empty",
3096        default
3097    )]
3098    pub locals: Vec<MeteLocalPrecipitation>,
3099    /// 起時
3100    ///
3101    /// 発生時刻を示す
3102    #[serde(
3103        alias = "Time",
3104        rename = "time",
3105        skip_serializing_if = "Option::is_none"
3106    )]
3107    pub time: Option<DateTime>,
3108    /// 注意事項・付加事項
3109    #[serde(
3110        alias = "Remark",
3111        rename = "remark",
3112        skip_serializing_if = "Option::is_none",
3113        deserialize_with = "trim_opt_string",
3114        default
3115    )]
3116    pub remark: Option<String>,
3117}
3118
3119#[derive(Debug, Clone, Serialize, Deserialize)]
3120pub struct MeteBasePrecipitationBasedIndex {
3121    /// 変化を表す時要素
3122    ///
3123    /// 変化を表す時間表現を示す
3124    #[serde(
3125        alias = "TimeModifier",
3126        rename = "timeModifier",
3127        skip_serializing_if = "Option::is_none",
3128        deserialize_with = "trim_opt_string",
3129        default
3130    )]
3131    pub time_modifier: Option<String>,
3132    /// 雨量関連指数
3133    #[serde(
3134        alias = "PrecipitationBasedIndex",
3135        rename = "precipitationBasedIndexes",
3136        skip_serializing_if = "Vec::is_empty",
3137        default
3138    )]
3139    pub precipitation_based_indexes: Vec<EbPrecipitationBasedIndex>,
3140    /// 地域
3141    ///
3142    /// 領域の一部の区域の内容を示す
3143    #[serde(
3144        alias = "Local",
3145        rename = "locals",
3146        skip_serializing_if = "Vec::is_empty",
3147        default
3148    )]
3149    pub locals: Vec<MeteLocalPrecipitationBasedIndex>,
3150    /// 起時
3151    ///
3152    /// 発生時刻を示す
3153    #[serde(
3154        alias = "Time",
3155        rename = "time",
3156        skip_serializing_if = "Option::is_none"
3157    )]
3158    pub time: Option<DateTime>,
3159    /// 注意事項・付加事項
3160    #[serde(
3161        alias = "Remark",
3162        rename = "remark",
3163        skip_serializing_if = "Option::is_none",
3164        deserialize_with = "trim_opt_string",
3165        default
3166    )]
3167    pub remark: Option<String>,
3168}
3169
3170#[derive(Debug, Clone, Serialize, Deserialize)]
3171pub struct MeteBasePressure {
3172    /// 変化を表す時要素
3173    ///
3174    /// 変化を表す時間表現を示す
3175    #[serde(
3176        alias = "TimeModifier",
3177        rename = "timeModifier",
3178        skip_serializing_if = "Option::is_none",
3179        deserialize_with = "trim_opt_string",
3180        default
3181    )]
3182    pub time_modifier: Option<String>,
3183    /// 気圧
3184    #[serde(
3185        alias = "Pressure",
3186        rename = "pressures",
3187        skip_serializing_if = "Vec::is_empty",
3188        default
3189    )]
3190    pub pressures: Vec<EbPressure>,
3191    /// 地域
3192    ///
3193    /// 領域の一部の区域の内容を示す
3194    #[serde(
3195        alias = "Local",
3196        rename = "locals",
3197        skip_serializing_if = "Vec::is_empty",
3198        default
3199    )]
3200    pub locals: Vec<MeteLocalPressure>,
3201    /// 起時
3202    ///
3203    /// 発生時刻を示す
3204    #[serde(
3205        alias = "Time",
3206        rename = "time",
3207        skip_serializing_if = "Option::is_none"
3208    )]
3209    pub time: Option<DateTime>,
3210    /// 注意事項・付加事項
3211    #[serde(
3212        alias = "Remark",
3213        rename = "remark",
3214        skip_serializing_if = "Option::is_none",
3215        deserialize_with = "trim_opt_string",
3216        default
3217    )]
3218    pub remark: Option<String>,
3219}
3220
3221#[derive(Debug, Clone, Serialize, Deserialize)]
3222pub struct MeteBaseSeaIce {
3223    /// 変化を表す時要素
3224    ///
3225    /// 変化を表す時間表現を示す
3226    #[serde(
3227        alias = "TimeModifier",
3228        rename = "timeModifier",
3229        skip_serializing_if = "Option::is_none",
3230        deserialize_with = "trim_opt_string",
3231        default
3232    )]
3233    pub time_modifier: Option<String>,
3234    /// 海氷
3235    #[serde(
3236        alias = "SeaIce",
3237        rename = "seaIces",
3238        skip_serializing_if = "Vec::is_empty",
3239        default
3240    )]
3241    pub sea_ices: Vec<EbSeaIce>,
3242    /// 地域
3243    ///
3244    /// 領域の一部の区域の内容を示す
3245    #[serde(
3246        alias = "Local",
3247        rename = "locals",
3248        skip_serializing_if = "Vec::is_empty",
3249        default
3250    )]
3251    pub locals: Vec<MeteLocalSeaIce>,
3252    /// 起時
3253    ///
3254    /// 発生時刻を示す
3255    #[serde(
3256        alias = "Time",
3257        rename = "time",
3258        skip_serializing_if = "Option::is_none"
3259    )]
3260    pub time: Option<DateTime>,
3261    /// 注意事項・付加事項
3262    #[serde(
3263        alias = "Remark",
3264        rename = "remark",
3265        skip_serializing_if = "Option::is_none",
3266        deserialize_with = "trim_opt_string",
3267        default
3268    )]
3269    pub remark: Option<String>,
3270}
3271
3272#[derive(Debug, Clone, Serialize, Deserialize)]
3273pub struct MeteBaseSignificancy {
3274    /// 危険度
3275    ///
3276    /// 危険度又は警戒レベルを示す
3277    #[serde(
3278        alias = "Significancy",
3279        rename = "significancies",
3280        skip_serializing_if = "Vec::is_empty",
3281        default
3282    )]
3283    pub significancies: Vec<MeteSignificancy>,
3284    /// 文章形式の表現
3285    ///
3286    /// 予報期間を超えて危険度又は警戒レベルが継続することを文章形式で示す
3287    #[serde(
3288        alias = "Sentence",
3289        rename = "sentence",
3290        skip_serializing_if = "Option::is_none"
3291    )]
3292    pub sentence: Option<MeteSentence>,
3293    /// ピーク時刻
3294    ///
3295    /// 時系列では表現できないピーク時刻を記述する
3296    #[serde(
3297        alias = "PeakTime",
3298        rename = "peakTime",
3299        skip_serializing_if = "Option::is_none"
3300    )]
3301    pub peak_time: Option<MeteForecastTerm>,
3302    /// 特記事項
3303    #[serde(
3304        alias = "Attention",
3305        rename = "attention",
3306        skip_serializing_if = "Option::is_none"
3307    )]
3308    pub attention: Option<MeteAttention>,
3309    /// 付加事項
3310    #[serde(
3311        alias = "Addition",
3312        rename = "addition",
3313        skip_serializing_if = "Option::is_none"
3314    )]
3315    pub addition: Option<MeteAddition>,
3316    /// 地域
3317    ///
3318    /// 三次細分を用いた表現をする場合
3319    #[serde(
3320        alias = "Local",
3321        rename = "locals",
3322        skip_serializing_if = "Vec::is_empty",
3323        default
3324    )]
3325    pub locals: Vec<MeteLocalSignificancy>,
3326}
3327
3328#[derive(Debug, Clone, Serialize, Deserialize)]
3329pub struct MeteBaseSnowDepth {
3330    /// 積雪深
3331    #[serde(
3332        alias = "SnowDepth",
3333        rename = "snowDepths",
3334        skip_serializing_if = "Vec::is_empty",
3335        default
3336    )]
3337    pub snow_depths: Vec<EbSnowDepth>,
3338    /// 地域
3339    ///
3340    /// 領域の一部の区域の内容を示す
3341    #[serde(
3342        alias = "Local",
3343        rename = "locals",
3344        skip_serializing_if = "Vec::is_empty",
3345        default
3346    )]
3347    pub locals: Vec<MeteLocalSnowDepth>,
3348    /// 起時
3349    ///
3350    /// 発生時刻を示す
3351    #[serde(
3352        alias = "Time",
3353        rename = "time",
3354        skip_serializing_if = "Option::is_none"
3355    )]
3356    pub time: Option<DateTime>,
3357    /// 注意事項・付加事項
3358    #[serde(
3359        alias = "Remark",
3360        rename = "remark",
3361        skip_serializing_if = "Option::is_none",
3362        deserialize_with = "trim_opt_string",
3363        default
3364    )]
3365    pub remark: Option<String>,
3366}
3367
3368#[derive(Debug, Clone, Serialize, Deserialize)]
3369pub struct MeteBaseSnowfallDepth {
3370    /// 変化を表す時要素
3371    ///
3372    /// 変化を表す時間表現を示す
3373    #[serde(
3374        alias = "TimeModifier",
3375        rename = "timeModifier",
3376        skip_serializing_if = "Option::is_none",
3377        deserialize_with = "trim_opt_string",
3378        default
3379    )]
3380    pub time_modifier: Option<String>,
3381    /// 降雪量
3382    #[serde(
3383        alias = "SnowfallDepth",
3384        rename = "snowfallDepths",
3385        skip_serializing_if = "Vec::is_empty",
3386        default
3387    )]
3388    pub snowfall_depths: Vec<EbSnowfallDepth>,
3389    /// 地域
3390    ///
3391    /// 領域の一部の区域の内容を示す
3392    #[serde(
3393        alias = "Local",
3394        rename = "locals",
3395        skip_serializing_if = "Vec::is_empty",
3396        default
3397    )]
3398    pub locals: Vec<MeteLocalSnowfallDepth>,
3399    /// 起時
3400    ///
3401    /// 発生時刻を示す
3402    #[serde(
3403        alias = "Time",
3404        rename = "time",
3405        skip_serializing_if = "Option::is_none"
3406    )]
3407    pub time: Option<DateTime>,
3408    /// 注意事項・付加事項
3409    #[serde(
3410        alias = "Remark",
3411        rename = "remark",
3412        skip_serializing_if = "Option::is_none",
3413        deserialize_with = "trim_opt_string",
3414        default
3415    )]
3416    pub remark: Option<String>,
3417}
3418
3419#[derive(Debug, Clone, Serialize, Deserialize)]
3420pub struct MeteBaseSunshine {
3421    /// 日照
3422    #[serde(
3423        alias = "Sunshine",
3424        rename = "sunshines",
3425        skip_serializing_if = "Vec::is_empty",
3426        default
3427    )]
3428    pub sunshines: Vec<EbSunshine>,
3429    /// 起時
3430    ///
3431    /// 発生時刻を示す
3432    #[serde(
3433        alias = "Time",
3434        rename = "time",
3435        skip_serializing_if = "Option::is_none"
3436    )]
3437    pub time: Option<DateTime>,
3438    /// 注意事項・付加事項
3439    #[serde(
3440        alias = "Remark",
3441        rename = "remark",
3442        skip_serializing_if = "Option::is_none",
3443        deserialize_with = "trim_opt_string",
3444        default
3445    )]
3446    pub remark: Option<String>,
3447}
3448
3449#[derive(Debug, Clone, Serialize, Deserialize)]
3450pub struct MeteBaseTemperature {
3451    /// 変化を表す時要素
3452    ///
3453    /// 変化を表す時間表現を示す
3454    #[serde(
3455        alias = "TimeModifier",
3456        rename = "timeModifier",
3457        skip_serializing_if = "Option::is_none",
3458        deserialize_with = "trim_opt_string",
3459        default
3460    )]
3461    pub time_modifier: Option<String>,
3462    /// 気温
3463    #[serde(
3464        alias = "Temperature",
3465        rename = "temperatures",
3466        skip_serializing_if = "Vec::is_empty",
3467        default
3468    )]
3469    pub temperatures: Vec<EbTemperature>,
3470    /// 地域
3471    ///
3472    /// 領域の一部の区域の内容を示す
3473    #[serde(
3474        alias = "Local",
3475        rename = "locals",
3476        skip_serializing_if = "Vec::is_empty",
3477        default
3478    )]
3479    pub locals: Vec<MeteLocalTemperature>,
3480    /// 起時
3481    ///
3482    /// 発生時刻を示す
3483    #[serde(
3484        alias = "Time",
3485        rename = "time",
3486        skip_serializing_if = "Option::is_none"
3487    )]
3488    pub time: Option<DateTime>,
3489    /// 注意事項・付加事項
3490    #[serde(
3491        alias = "Remark",
3492        rename = "remark",
3493        skip_serializing_if = "Option::is_none",
3494        deserialize_with = "trim_opt_string",
3495        default
3496    )]
3497    pub remark: Option<String>,
3498}
3499
3500#[derive(Debug, Clone, Serialize, Deserialize)]
3501pub struct MeteBaseTidalLevel {
3502    /// 変化を表す時要素
3503    ///
3504    /// 変化を表す時間表現を示す
3505    #[serde(
3506        alias = "TimeModifier",
3507        rename = "timeModifier",
3508        skip_serializing_if = "Option::is_none",
3509        deserialize_with = "trim_opt_string",
3510        default
3511    )]
3512    pub time_modifier: Option<String>,
3513    /// 潮位
3514    #[serde(
3515        alias = "TidalLevel",
3516        rename = "tidalLevels",
3517        skip_serializing_if = "Vec::is_empty",
3518        default
3519    )]
3520    pub tidal_levels: Vec<EbTidalLevel>,
3521    /// 周期
3522    ///
3523    /// 潮位変動の周期を示す
3524    #[serde(
3525        alias = "TidalPeriod",
3526        rename = "tidalPeriods",
3527        skip_serializing_if = "Vec::is_empty",
3528        default
3529    )]
3530    pub tidal_periods: Vec<EbTidalPeriod>,
3531    /// 地域
3532    ///
3533    /// 領域の一部の区域の内容を示す
3534    #[serde(
3535        alias = "Local",
3536        rename = "locals",
3537        skip_serializing_if = "Vec::is_empty",
3538        default
3539    )]
3540    pub locals: Vec<MeteLocalTidalLevel>,
3541    /// 起時
3542    ///
3543    /// 発生時刻を示す
3544    #[serde(
3545        alias = "Time",
3546        rename = "time",
3547        skip_serializing_if = "Option::is_none"
3548    )]
3549    pub time: Option<DateTime>,
3550    /// 連続
3551    ///
3552    /// 連続した内容を示す
3553    #[serde(
3554        alias = "Sequence",
3555        rename = "sequences",
3556        skip_serializing_if = "Vec::is_empty",
3557        default
3558    )]
3559    pub sequences: Vec<MeteSequenceTidalLevel>,
3560    /// 注意事項・付加事項
3561    #[serde(
3562        alias = "Remark",
3563        rename = "remark",
3564        skip_serializing_if = "Option::is_none",
3565        deserialize_with = "trim_opt_string",
3566        default
3567    )]
3568    pub remark: Option<String>,
3569}
3570
3571#[derive(Debug, Clone, Serialize, Deserialize)]
3572pub struct MeteBaseVisibility {
3573    /// 変化を表す時要素
3574    ///
3575    /// 変化を表す時間表現を示す
3576    #[serde(
3577        alias = "TimeModifier",
3578        rename = "timeModifier",
3579        skip_serializing_if = "Option::is_none",
3580        deserialize_with = "trim_opt_string",
3581        default
3582    )]
3583    pub time_modifier: Option<String>,
3584    /// 視程
3585    #[serde(
3586        alias = "Visibility",
3587        rename = "visibilities",
3588        skip_serializing_if = "Vec::is_empty",
3589        default
3590    )]
3591    pub visibilities: Vec<EbVisibility>,
3592    /// 地域
3593    ///
3594    /// 領域の一部の区域の内容を示す
3595    #[serde(
3596        alias = "Local",
3597        rename = "locals",
3598        skip_serializing_if = "Vec::is_empty",
3599        default
3600    )]
3601    pub locals: Vec<MeteLocalVisibility>,
3602    /// 起時
3603    ///
3604    /// 発生時刻を示す
3605    #[serde(
3606        alias = "Time",
3607        rename = "time",
3608        skip_serializing_if = "Option::is_none"
3609    )]
3610    pub time: Option<DateTime>,
3611    /// 注意事項・付加事項
3612    #[serde(
3613        alias = "Remark",
3614        rename = "remark",
3615        skip_serializing_if = "Option::is_none",
3616        deserialize_with = "trim_opt_string",
3617        default
3618    )]
3619    pub remark: Option<String>,
3620}
3621
3622#[derive(Debug, Clone, Serialize, Deserialize)]
3623pub struct MeteBaseWaveHeight {
3624    /// 変化を表す時要素
3625    ///
3626    /// 変化を表す時間表現を示す
3627    #[serde(
3628        alias = "TimeModifier",
3629        rename = "timeModifier",
3630        skip_serializing_if = "Option::is_none",
3631        deserialize_with = "trim_opt_string",
3632        default
3633    )]
3634    pub time_modifier: Option<String>,
3635    /// 波高
3636    #[serde(
3637        alias = "WaveHeight",
3638        rename = "waveHeights",
3639        skip_serializing_if = "Vec::is_empty",
3640        default
3641    )]
3642    pub wave_heights: Vec<EbWaveHeight>,
3643    /// 地域
3644    ///
3645    /// 領域の一部の区域の内容を示す
3646    #[serde(
3647        alias = "Local",
3648        rename = "locals",
3649        skip_serializing_if = "Vec::is_empty",
3650        default
3651    )]
3652    pub locals: Vec<MeteLocalWaveHeight>,
3653    /// 起時
3654    ///
3655    /// 発生時刻を示す
3656    #[serde(
3657        alias = "Time",
3658        rename = "time",
3659        skip_serializing_if = "Option::is_none"
3660    )]
3661    pub time: Option<DateTime>,
3662    /// 注意事項・付加事項
3663    #[serde(
3664        alias = "Remark",
3665        rename = "remark",
3666        skip_serializing_if = "Option::is_none",
3667        deserialize_with = "trim_opt_string",
3668        default
3669    )]
3670    pub remark: Option<String>,
3671}
3672
3673#[derive(Debug, Clone, Serialize, Deserialize)]
3674pub struct MeteBaseWeather {
3675    /// 変化を表す時要素
3676    ///
3677    /// 変化を表す時間表現を示す
3678    #[serde(
3679        alias = "TimeModifier",
3680        rename = "timeModifier",
3681        skip_serializing_if = "Option::is_none",
3682        deserialize_with = "trim_opt_string",
3683        default
3684    )]
3685    pub time_modifier: Option<String>,
3686    /// 天気
3687    #[serde(
3688        alias = "Weather",
3689        rename = "weathers",
3690        skip_serializing_if = "Vec::is_empty",
3691        default
3692    )]
3693    pub weathers: Vec<EbWeather>,
3694    /// 地域
3695    ///
3696    /// 領域の一部の区域の内容を示す
3697    #[serde(
3698        alias = "Local",
3699        rename = "locals",
3700        skip_serializing_if = "Vec::is_empty",
3701        default
3702    )]
3703    pub locals: Vec<MeteLocalWeather>,
3704    /// 起時
3705    ///
3706    /// 発生時刻を示す
3707    #[serde(
3708        alias = "Time",
3709        rename = "time",
3710        skip_serializing_if = "Option::is_none"
3711    )]
3712    pub time: Option<DateTime>,
3713    /// 注意事項・付加事項
3714    #[serde(
3715        alias = "Remark",
3716        rename = "remark",
3717        skip_serializing_if = "Option::is_none",
3718        deserialize_with = "trim_opt_string",
3719        default
3720    )]
3721    pub remark: Option<String>,
3722}
3723
3724#[derive(Debug, Clone, Serialize, Deserialize)]
3725pub struct MeteBaseWind {
3726    /// 変化を表す時要素
3727    ///
3728    /// 変化を表す時間表現を示す
3729    #[serde(
3730        alias = "TimeModifier",
3731        rename = "timeModifier",
3732        skip_serializing_if = "Option::is_none",
3733        deserialize_with = "trim_opt_string",
3734        default
3735    )]
3736    pub time_modifier: Option<String>,
3737    /// 風向
3738    #[serde(
3739        alias = "WindDirection",
3740        rename = "windDirections",
3741        skip_serializing_if = "Vec::is_empty",
3742        default
3743    )]
3744    pub wind_directions: Vec<EbWindDirection>,
3745    /// 風向(数値)
3746    ///
3747    /// 風向の数値表現を示す
3748    #[serde(
3749        alias = "WindDegree",
3750        rename = "windDegrees",
3751        skip_serializing_if = "Vec::is_empty",
3752        default
3753    )]
3754    pub wind_degrees: Vec<EbWindDegree>,
3755    /// 風速
3756    #[serde(
3757        alias = "WindSpeed",
3758        rename = "windSpeeds",
3759        skip_serializing_if = "Vec::is_empty",
3760        default
3761    )]
3762    pub wind_speeds: Vec<EbWindSpeed>,
3763    /// 風力
3764    #[serde(
3765        alias = "WindScale",
3766        rename = "windScales",
3767        skip_serializing_if = "Vec::is_empty",
3768        default
3769    )]
3770    pub wind_scales: Vec<EbWindScale>,
3771    /// 地域
3772    ///
3773    /// 領域の一部の区域の内容を示す
3774    #[serde(
3775        alias = "Local",
3776        rename = "locals",
3777        skip_serializing_if = "Vec::is_empty",
3778        default
3779    )]
3780    pub locals: Vec<MeteLocalWind>,
3781    /// 起時
3782    ///
3783    /// 発生時刻を示す
3784    #[serde(
3785        alias = "Time",
3786        rename = "time",
3787        skip_serializing_if = "Option::is_none"
3788    )]
3789    pub time: Option<DateTime>,
3790    /// 注意事項・付加事項
3791    #[serde(
3792        alias = "Remark",
3793        rename = "remark",
3794        skip_serializing_if = "Option::is_none",
3795        deserialize_with = "trim_opt_string",
3796        default
3797    )]
3798    pub remark: Option<String>,
3799}
3800
3801#[derive(Debug, Clone, Serialize, Deserialize)]
3802pub struct MeteBaseWindDirection {
3803    /// 変化を表す時要素
3804    ///
3805    /// 変化を表す時間表現を示す
3806    #[serde(
3807        alias = "TimeModifier",
3808        rename = "timeModifier",
3809        skip_serializing_if = "Option::is_none",
3810        deserialize_with = "trim_opt_string",
3811        default
3812    )]
3813    pub time_modifier: Option<String>,
3814    /// 風向
3815    #[serde(
3816        alias = "WindDirection",
3817        rename = "windDirections",
3818        skip_serializing_if = "Vec::is_empty",
3819        default
3820    )]
3821    pub wind_directions: Vec<EbWindDirection>,
3822    /// 地域
3823    ///
3824    /// 領域の一部の区域の内容を示す
3825    #[serde(
3826        alias = "Local",
3827        rename = "locals",
3828        skip_serializing_if = "Vec::is_empty",
3829        default
3830    )]
3831    pub locals: Vec<MeteLocalWindDirection>,
3832    /// 起時
3833    ///
3834    /// 発生時刻を示す
3835    #[serde(
3836        alias = "Time",
3837        rename = "time",
3838        skip_serializing_if = "Option::is_none"
3839    )]
3840    pub time: Option<DateTime>,
3841    /// 注意事項・付加事項
3842    #[serde(
3843        alias = "Remark",
3844        rename = "remark",
3845        skip_serializing_if = "Option::is_none",
3846        deserialize_with = "trim_opt_string",
3847        default
3848    )]
3849    pub remark: Option<String>,
3850}
3851
3852#[derive(Debug, Clone, Serialize, Deserialize)]
3853pub struct MeteBaseWindSpeed {
3854    /// 変化を表す時要素
3855    ///
3856    /// 変化を表す時間表現を示す
3857    #[serde(
3858        alias = "TimeModifier",
3859        rename = "timeModifier",
3860        skip_serializing_if = "Option::is_none",
3861        deserialize_with = "trim_opt_string",
3862        default
3863    )]
3864    pub time_modifier: Option<String>,
3865    /// 風速
3866    #[serde(
3867        alias = "WindSpeed",
3868        rename = "windSpeeds",
3869        skip_serializing_if = "Vec::is_empty",
3870        default
3871    )]
3872    pub wind_speeds: Vec<EbWindSpeed>,
3873    /// 地域
3874    ///
3875    /// 領域の一部の区域の内容を示す
3876    #[serde(
3877        alias = "Local",
3878        rename = "locals",
3879        skip_serializing_if = "Vec::is_empty",
3880        default
3881    )]
3882    pub locals: Vec<MeteLocalWindSpeed>,
3883    /// 起時
3884    ///
3885    /// 発生時刻を示す
3886    #[serde(
3887        alias = "Time",
3888        rename = "time",
3889        skip_serializing_if = "Option::is_none"
3890    )]
3891    pub time: Option<DateTime>,
3892    /// 注意事項・付加事項
3893    #[serde(
3894        alias = "Remark",
3895        rename = "remark",
3896        skip_serializing_if = "Option::is_none",
3897        deserialize_with = "trim_opt_string",
3898        default
3899    )]
3900    pub remark: Option<String>,
3901}
3902
3903#[derive(Debug, Clone, Serialize, Deserialize)]
3904pub struct MeteBody {
3905    /// 対象地域
3906    #[serde(
3907        alias = "TargetArea",
3908        rename = "targetArea",
3909        skip_serializing_if = "Option::is_none"
3910    )]
3911    pub target_area: Option<MeteArea>,
3912    /// お知らせ
3913    ///
3914    /// お知らせの文章を示す
3915    #[serde(
3916        alias = "Notice",
3917        rename = "notices",
3918        skip_serializing_if = "Vec::is_empty",
3919        default
3920    )]
3921    pub notices: Vec<String>,
3922    /// 警報
3923    ///
3924    /// 警報・注意報等の注意・警戒を要する事項の内容を示す
3925    #[serde(
3926        alias = "Warning",
3927        rename = "warnings",
3928        skip_serializing_if = "Vec::is_empty",
3929        default
3930    )]
3931    pub warnings: Vec<MeteWarning>,
3932    /// 気象情報
3933    ///
3934    /// 予報や観測等に関する事項を示す
3935    #[serde(
3936        alias = "MeteorologicalInfos",
3937        rename = "meteorologicalInfos",
3938        skip_serializing_if = "Vec::is_empty",
3939        default
3940    )]
3941    pub meteorological_infos: Vec<MeteMeteorologicalInfos>,
3942    /// 文章
3943    #[serde(
3944        alias = "Comment",
3945        rename = "comment",
3946        skip_serializing_if = "Option::is_none"
3947    )]
3948    pub comment: Option<MeteComment>,
3949    /// 担当部署
3950    ///
3951    /// 担当部署に関する事項を示す
3952    #[serde(
3953        alias = "OfficeInfo",
3954        rename = "officeInfo",
3955        skip_serializing_if = "Option::is_none"
3956    )]
3957    pub office_info: Option<MeteOfficeInfo>,
3958    /// 付加事項
3959    ///
3960    /// 共通要素で記述できない要素がある電文の個別付加事項を記述する
3961    #[serde(
3962        alias = "AdditionalInfo",
3963        rename = "additionalInfo",
3964        skip_serializing_if = "Option::is_none"
3965    )]
3966    pub additional_info: Option<MeteAdditionalInfo>,
3967}
3968
3969#[derive(Debug, Clone, Serialize, Deserialize)]
3970pub struct MeteCenterPart {
3971    /// 中心位置
3972    ///
3973    /// 熱帯擾乱や低気圧、高気圧の中心位置を示す
3974    #[serde(
3975        alias = "Coordinate",
3976        rename = "coordinates",
3977        skip_serializing_if = "Vec::is_empty",
3978        default
3979    )]
3980    pub coordinates: Vec<EbCoordinate>,
3981    /// 予報円
3982    ///
3983    /// 予報円の諸要素を示す
3984    #[serde(
3985        alias = "ProbabilityCircle",
3986        rename = "probabilityCircles",
3987        skip_serializing_if = "Vec::is_empty",
3988        default
3989    )]
3990    pub probability_circles: Vec<EbCircle>,
3991    /// 存在域
3992    ///
3993    /// 台風や低気圧の存在域を示す
3994    #[serde(
3995        alias = "Location",
3996        rename = "location",
3997        skip_serializing_if = "Option::is_none",
3998        deserialize_with = "trim_opt_string",
3999        default
4000    )]
4001    pub location: Option<String>,
4002    /// 移動方向
4003    ///
4004    /// 熱帯擾乱や低気圧、高気圧の移動方向を示す
4005    #[serde(
4006        alias = "Direction",
4007        rename = "directions",
4008        skip_serializing_if = "Vec::is_empty",
4009        default
4010    )]
4011    pub directions: Vec<EbDirection>,
4012    /// 移動速度
4013    ///
4014    /// 熱帯擾乱や低気圧、高気圧の移動速度を示す
4015    #[serde(
4016        alias = "Speed",
4017        rename = "speeds",
4018        skip_serializing_if = "Vec::is_empty",
4019        default
4020    )]
4021    pub speeds: Vec<EbSpeed>,
4022    /// 中心気圧
4023    ///
4024    /// 熱帯擾乱や低気圧、高気圧の中心気圧を示す
4025    #[serde(
4026        alias = "Pressure",
4027        rename = "pressure",
4028        skip_serializing_if = "Option::is_none"
4029    )]
4030    pub pressure: Option<EbPressure>,
4031    /// 予報円半径
4032    ///
4033    /// 熱帯擾乱や低気圧の予報円半径を示す
4034    #[serde(
4035        alias = "Radius",
4036        rename = "radiuses",
4037        skip_serializing_if = "Vec::is_empty",
4038        default
4039    )]
4040    pub radiuses: Vec<EbRadius>,
4041    /// 起時
4042    ///
4043    /// 発生時刻を示す
4044    #[serde(
4045        alias = "Time",
4046        rename = "time",
4047        skip_serializing_if = "Option::is_none"
4048    )]
4049    pub time: Option<DateTime>,
4050    /// 注意事項・付加事項
4051    #[serde(
4052        alias = "Remark",
4053        rename = "remark",
4054        skip_serializing_if = "Option::is_none",
4055        deserialize_with = "trim_opt_string",
4056        default
4057    )]
4058    pub remark: Option<String>,
4059}
4060
4061#[derive(Debug, Clone, Serialize, Deserialize)]
4062pub struct MeteClassPart {
4063    /// 熱帯擾乱種類
4064    ///
4065    /// 熱帯擾乱の種類を示す
4066    #[serde(
4067        alias = "TyphoonClass",
4068        rename = "typhoonClass",
4069        skip_serializing_if = "Option::is_none"
4070    )]
4071    pub typhoon_class: Option<EbTyphoonClass>,
4072    /// 大きさ階級
4073    ///
4074    /// 台風の大きさ階級を示す
4075    #[serde(
4076        alias = "AreaClass",
4077        rename = "areaClass",
4078        skip_serializing_if = "Option::is_none"
4079    )]
4080    pub area_class: Option<EbAreaClass>,
4081    /// 強さ階級
4082    ///
4083    /// 台風の強さ階級を示す
4084    #[serde(
4085        alias = "IntensityClass",
4086        rename = "intensityClass",
4087        skip_serializing_if = "Option::is_none"
4088    )]
4089    pub intensity_class: Option<EbIntensityClass>,
4090    /// 起時
4091    ///
4092    /// 発生時刻を示す
4093    #[serde(
4094        alias = "Time",
4095        rename = "time",
4096        skip_serializing_if = "Option::is_none"
4097    )]
4098    pub time: Option<DateTime>,
4099    /// 注意事項・付加事項
4100    #[serde(
4101        alias = "Remark",
4102        rename = "remark",
4103        skip_serializing_if = "Option::is_none",
4104        deserialize_with = "trim_opt_string",
4105        default
4106    )]
4107    pub remark: Option<String>,
4108}
4109
4110#[derive(Debug, Clone, Serialize, Deserialize)]
4111pub struct MeteClimateForecastAddition {
4112    /// 予報対象期間に関する説明
4113    #[serde(
4114        alias = "TargetDateTimeNotice",
4115        rename = "targetDateTimeNotice",
4116        skip_serializing_if = "Option::is_none",
4117        deserialize_with = "trim_opt_string",
4118        default
4119    )]
4120    pub target_date_time_notice: Option<String>,
4121    /// 季節予報の次回発表予定
4122    ///
4123    /// 季節予報の次回発表予定日
4124    #[serde(
4125        alias = "NextForecastSchedule",
4126        rename = "nextForecastSchedules",
4127        skip_serializing_if = "Vec::is_empty",
4128        default
4129    )]
4130    pub next_forecast_schedules: Vec<MeteForecastSchedule>,
4131    /// 最新資料利用の注意喚起等
4132    #[serde(
4133        alias = "NoticeOfSchedule",
4134        rename = "noticeOfSchedule",
4135        skip_serializing_if = "Option::is_none",
4136        deserialize_with = "trim_opt_string",
4137        default
4138    )]
4139    pub notice_of_schedule: Option<String>,
4140    /// その他のお知らせ
4141    ///
4142    /// 暖・寒候期予報の見直し結果等
4143    #[serde(
4144        alias = "AdditionalNotice",
4145        rename = "additionalNotice",
4146        skip_serializing_if = "Option::is_none",
4147        deserialize_with = "trim_opt_string",
4148        default
4149    )]
4150    pub additional_notice: Option<String>,
4151}
4152
4153#[derive(Debug, Clone, Serialize, Deserialize)]
4154pub struct MeteClimateProbabilityValuesPart {
4155    /// 気温、降水量、日照時間等の確率
4156    #[serde(
4157        alias = "ClimateProbabilityValues",
4158        rename = "climateProbabilityValues"
4159    )]
4160    pub climate_probability_values: Vec<EbClimateProbabilityValues>,
4161}
4162
4163#[derive(Debug, Clone, Serialize, Deserialize)]
4164pub struct MeteClimateValuesPart {
4165    /// 気候要素の種類
4166    #[serde(alias = "@type", rename = "type")]
4167    pub ty: String,
4168    /// 気温の値
4169    ///
4170    /// 平均気温、最高気温又は最低気温
4171    #[serde(
4172        alias = "Temperature",
4173        rename = "temperatures",
4174        skip_serializing_if = "Vec::is_empty",
4175        default
4176    )]
4177    pub temperatures: Vec<EbTemperature>,
4178    /// 降水量
4179    #[serde(
4180        alias = "Precipitation",
4181        rename = "precipitations",
4182        skip_serializing_if = "Vec::is_empty",
4183        default
4184    )]
4185    pub precipitations: Vec<EbPrecipitation>,
4186    /// 日照時間
4187    #[serde(
4188        alias = "Sunshine",
4189        rename = "sunshines",
4190        skip_serializing_if = "Vec::is_empty",
4191        default
4192    )]
4193    pub sunshines: Vec<EbSunshine>,
4194    /// 降雪量
4195    #[serde(
4196        alias = "SnowfallDepth",
4197        rename = "snowfallDepths",
4198        skip_serializing_if = "Vec::is_empty",
4199        default
4200    )]
4201    pub snowfall_depths: Vec<EbSnowfallDepth>,
4202    /// 積雪の深さ
4203    #[serde(
4204        alias = "SnowDepth",
4205        rename = "snowDepths",
4206        skip_serializing_if = "Vec::is_empty",
4207        default
4208    )]
4209    pub snow_depths: Vec<EbSnowDepth>,
4210    /// 平年や前年等との差(比)
4211    #[serde(
4212        alias = "Comparison",
4213        rename = "comparisons",
4214        skip_serializing_if = "Vec::is_empty",
4215        default
4216    )]
4217    pub comparisons: Vec<EbComparison>,
4218    /// 注意事項・付加事項
4219    #[serde(
4220        alias = "Remark",
4221        rename = "remark",
4222        skip_serializing_if = "Option::is_none",
4223        deserialize_with = "trim_opt_string",
4224        default
4225    )]
4226    pub remark: Option<String>,
4227}
4228
4229#[derive(Debug, Clone, Serialize, Deserialize)]
4230pub struct MeteComment {
4231    /// 文章の領域
4232    #[serde(alias = "Text", rename = "texts")]
4233    pub texts: Vec<MeteText>,
4234    /// 付加文コード
4235    ///
4236    /// 付加文コードを示す。複数表記の場合はxs:list型を用いること。
4237    #[serde(
4238        alias = "Code",
4239        rename = "codes",
4240        skip_serializing_if = "Option::is_none"
4241    )]
4242    pub codes: Option<StringList>,
4243}
4244
4245#[derive(Debug, Clone, Serialize, Deserialize)]
4246pub struct MeteCoordinatePart {
4247    /// 対象地域(点)の座標
4248    #[serde(
4249        alias = "Coordinate",
4250        rename = "coordinates",
4251        skip_serializing_if = "Vec::is_empty",
4252        default
4253    )]
4254    pub coordinates: Vec<EbCoordinate>,
4255    /// 対象地域(線)の座標
4256    #[serde(
4257        alias = "Line",
4258        rename = "lines",
4259        skip_serializing_if = "Vec::is_empty",
4260        default
4261    )]
4262    pub lines: Vec<EbCoordinate>,
4263    /// 対象地域(多角形)の座標
4264    #[serde(
4265        alias = "Polygon",
4266        rename = "polygons",
4267        skip_serializing_if = "Vec::is_empty",
4268        default
4269    )]
4270    pub polygons: Vec<EbCoordinate>,
4271    /// 起時
4272    ///
4273    /// 発生時刻を示す
4274    #[serde(
4275        alias = "Time",
4276        rename = "time",
4277        skip_serializing_if = "Option::is_none"
4278    )]
4279    pub time: Option<DateTime>,
4280    /// 注意事項・付加事項
4281    #[serde(
4282        alias = "Remark",
4283        rename = "remark",
4284        skip_serializing_if = "Option::is_none",
4285        deserialize_with = "trim_opt_string",
4286        default
4287    )]
4288    pub remark: Option<String>,
4289}
4290
4291#[derive(Debug, Clone, Serialize, Deserialize)]
4292pub struct MeteCriteriaClass {
4293    /// クラスの種別名
4294    ///
4295    /// 基準が示すクラス・レベルの種別を示す。
4296    #[serde(
4297        alias = "@type",
4298        rename = "type",
4299        skip_serializing_if = "Option::is_none"
4300    )]
4301    pub ty: Option<String>,
4302    /// 時系列での参照番号
4303    ///
4304    /// 時系列で表現する場合の参照番号を示す。
4305    #[serde(
4306        alias = "@refID",
4307        rename = "refID",
4308        skip_serializing_if = "Option::is_none"
4309    )]
4310    pub ref_id: Option<u8>,
4311    /// クラス・レベルの名前
4312    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
4313    pub name: String,
4314    /// クラス・レベルのコード
4315    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
4316    pub code: String,
4317    /// 状況の補足説明
4318    ///
4319    /// クラス・レベルの状況を記述する
4320    #[serde(
4321        alias = "Condition",
4322        rename = "condition",
4323        skip_serializing_if = "Option::is_none",
4324        deserialize_with = "trim_opt_string",
4325        default
4326    )]
4327    pub condition: Option<String>,
4328    /// 注意事項・付加事項
4329    ///
4330    /// 注意事項・付加事項等を示す
4331    #[serde(
4332        alias = "Remark",
4333        rename = "remark",
4334        skip_serializing_if = "Option::is_none",
4335        deserialize_with = "trim_opt_string",
4336        default
4337    )]
4338    pub remark: Option<String>,
4339}
4340
4341#[derive(Debug, Clone, Serialize, Deserialize)]
4342pub struct MeteCriteriaPeriod {
4343    /// 文章形式の表現
4344    ///
4345    /// 基準到達期間部分の内容を文章形式で示す
4346    #[serde(
4347        alias = "Sentence",
4348        rename = "sentence",
4349        skip_serializing_if = "Option::is_none"
4350    )]
4351    pub sentence: Option<MeteSentence>,
4352    /// 卓越もしくは変化前
4353    ///
4354    /// 卓越する内容、もしくは変化前の内容を示す
4355    #[serde(
4356        alias = "Base",
4357        rename = "base",
4358        skip_serializing_if = "Option::is_none"
4359    )]
4360    pub base: Option<MeteBaseCriteria>,
4361    /// 断続現象
4362    ///
4363    /// 断続的に発生する現象の内容を示す
4364    #[serde(
4365        alias = "Temporary",
4366        rename = "temporaries",
4367        skip_serializing_if = "Vec::is_empty",
4368        default
4369    )]
4370    pub temporaries: Vec<MeteBaseCriteria>,
4371    /// 変化後
4372    ///
4373    /// 変化後の内容を示す
4374    #[serde(
4375        alias = "Becoming",
4376        rename = "becomings",
4377        skip_serializing_if = "Vec::is_empty",
4378        default
4379    )]
4380    pub becomings: Vec<MeteBaseCriteria>,
4381    /// 地域
4382    ///
4383    /// 領域の一部の区域の内容を示す
4384    #[serde(
4385        alias = "Local",
4386        rename = "locals",
4387        skip_serializing_if = "Vec::is_empty",
4388        default
4389    )]
4390    pub locals: Vec<MeteLocalCriteria>,
4391    /// 基準のクラス・レベル
4392    ///
4393    /// 基準が示すクラス・レベルの内容を示す。
4394    #[serde(
4395        alias = "CriteriaClass",
4396        rename = "criteriaClass",
4397        skip_serializing_if = "Option::is_none"
4398    )]
4399    pub criteria_class: Option<MeteCriteriaClass>,
4400    /// 基準到達時刻
4401    ///
4402    /// 基準値に到達する時刻
4403    #[serde(
4404        alias = "Time",
4405        rename = "time",
4406        skip_serializing_if = "Option::is_none"
4407    )]
4408    pub time: Option<DateTime>,
4409    /// 期間の長さ
4410    #[serde(
4411        alias = "Duration",
4412        rename = "duration",
4413        skip_serializing_if = "Option::is_none"
4414    )]
4415    pub duration: Option<Duration>,
4416    /// 注意事項・付加事項
4417    ///
4418    /// 注意事項・付加事項を示す(注意警戒事項を示す)
4419    #[serde(
4420        alias = "Remark",
4421        rename = "remark",
4422        skip_serializing_if = "Option::is_none",
4423        deserialize_with = "trim_opt_string",
4424        default
4425    )]
4426    pub remark: Option<String>,
4427}
4428
4429#[derive(Debug, Clone, Serialize, Deserialize)]
4430pub struct MeteDetailForecast {
4431    /// 詳細天気部分
4432    ///
4433    /// 天気予報の詳細
4434    #[serde(
4435        alias = "WeatherForecastPart",
4436        rename = "weatherForecastParts",
4437        skip_serializing_if = "Vec::is_empty",
4438        default
4439    )]
4440    pub weather_forecast_parts: Vec<MeteWeatherForecastPart>,
4441    /// 雨量の詳細部分
4442    ///
4443    /// 雨量予報の詳細
4444    #[serde(
4445        alias = "PrecipitationForecastPart",
4446        rename = "precipitationForecastParts",
4447        skip_serializing_if = "Vec::is_empty",
4448        default
4449    )]
4450    pub precipitation_forecast_parts: Vec<MetePrecipitationPart>,
4451    /// 降雪量の詳細部分
4452    ///
4453    /// 降雪量予報の詳細
4454    #[serde(
4455        alias = "SnowfallDepthForecastPart",
4456        rename = "snowfallDepthForecastParts",
4457        skip_serializing_if = "Vec::is_empty",
4458        default
4459    )]
4460    pub snowfall_depth_forecast_parts: Vec<MeteSnowfallDepthPart>,
4461    /// 詳細風部分
4462    ///
4463    /// 風予報の詳細
4464    #[serde(
4465        alias = "WindForecastPart",
4466        rename = "windForecastParts",
4467        skip_serializing_if = "Vec::is_empty",
4468        default
4469    )]
4470    pub wind_forecast_parts: Vec<MeteWindForecastPart>,
4471    /// 詳細波部分
4472    ///
4473    /// 波予報の詳細
4474    #[serde(
4475        alias = "WaveHeightForecastPart",
4476        rename = "waveHeightForecastParts",
4477        skip_serializing_if = "Vec::is_empty",
4478        default
4479    )]
4480    pub wave_height_forecast_parts: Vec<MeteWaveHeightForecastPart>,
4481}
4482
4483#[derive(Debug, Clone, Serialize, Deserialize)]
4484pub struct MeteDischargePart {
4485    /// 流量
4486    #[serde(
4487        alias = "Discharge",
4488        rename = "discharges",
4489        skip_serializing_if = "Vec::is_empty",
4490        default
4491    )]
4492    pub discharges: Vec<EbDischarge>,
4493}
4494
4495#[derive(Debug, Clone, Serialize, Deserialize)]
4496pub struct MeteEvent {
4497    /// 事象の種別名
4498    ///
4499    /// 事象の種別を示す。
4500    #[serde(
4501        alias = "@type",
4502        rename = "type",
4503        skip_serializing_if = "Option::is_none"
4504    )]
4505    pub ty: Option<String>,
4506    /// 時系列での参照番号
4507    ///
4508    /// 時系列で表現する場合の参照番号を示す。
4509    #[serde(
4510        alias = "@refID",
4511        rename = "refID",
4512        skip_serializing_if = "Option::is_none"
4513    )]
4514    pub ref_id: Option<u8>,
4515    /// 文章形式の表現
4516    ///
4517    /// 事象の内容を文章形式で示す
4518    #[serde(
4519        alias = "Sentence",
4520        rename = "sentence",
4521        skip_serializing_if = "Option::is_none"
4522    )]
4523    pub sentence: Option<MeteSentence>,
4524    /// 事象名
4525    ///
4526    /// 事象の名称を示す
4527    #[serde(
4528        alias = "EventName",
4529        rename = "eventNames",
4530        skip_serializing_if = "Vec::is_empty",
4531        default
4532    )]
4533    pub event_names: Vec<String>,
4534    /// 事象のクラス・レベル
4535    ///
4536    /// 事象が示すクラス・レベルの内容を示す。
4537    #[serde(
4538        alias = "EventClass",
4539        rename = "eventClasses",
4540        skip_serializing_if = "Vec::is_empty",
4541        default
4542    )]
4543    pub event_classes: Vec<String>,
4544    /// 事象発生時刻
4545    ///
4546    /// 事象が発生したまたは発生しうる時刻
4547    #[serde(
4548        alias = "Time",
4549        rename = "times",
4550        skip_serializing_if = "Vec::is_empty",
4551        default
4552    )]
4553    pub times: Vec<MeteEventTime>,
4554    /// 期間の長さ
4555    ///
4556    /// 事象の発生している期間の長さを示す
4557    #[serde(
4558        alias = "Duration",
4559        rename = "durations",
4560        skip_serializing_if = "Vec::is_empty",
4561        default
4562    )]
4563    pub durations: Vec<MeteEventDuration>,
4564    /// 注意事項・付加事項
4565    #[serde(
4566        alias = "Remark",
4567        rename = "remark",
4568        skip_serializing_if = "Option::is_none",
4569        deserialize_with = "trim_opt_string",
4570        default
4571    )]
4572    pub remark: Option<String>,
4573}
4574
4575#[derive(Debug, Clone, Serialize, Deserialize)]
4576pub struct MeteEventDate {
4577    #[serde(alias = "$text", rename = "value")]
4578    pub value: String,
4579    #[serde(
4580        alias = "@description",
4581        rename = "description",
4582        skip_serializing_if = "Option::is_none"
4583    )]
4584    pub description: Option<String>,
4585    #[serde(
4586        alias = "@dubious",
4587        rename = "dubious",
4588        skip_serializing_if = "Option::is_none"
4589    )]
4590    pub dubious: Option<String>,
4591}
4592
4593#[derive(Debug, Clone, Serialize, Deserialize)]
4594pub struct MeteEventDatePart {
4595    /// 事象の月日
4596    #[serde(
4597        alias = "Date",
4598        rename = "dates",
4599        skip_serializing_if = "Vec::is_empty",
4600        default
4601    )]
4602    pub dates: Vec<MeteEventDate>,
4603    /// 平年の月日
4604    ///
4605    /// 事象の平年の月日を示す
4606    #[serde(
4607        alias = "Normal",
4608        rename = "normals",
4609        skip_serializing_if = "Vec::is_empty",
4610        default
4611    )]
4612    pub normals: Vec<MeteEventDate>,
4613    /// 昨年の月日
4614    ///
4615    /// 事象の昨年の月日を示す
4616    #[serde(
4617        alias = "LastYear",
4618        rename = "lastYears",
4619        skip_serializing_if = "Vec::is_empty",
4620        default
4621    )]
4622    pub last_years: Vec<MeteEventDate>,
4623    /// 注意事項・付加事項
4624    #[serde(
4625        alias = "Remark",
4626        rename = "remark",
4627        skip_serializing_if = "Option::is_none",
4628        deserialize_with = "trim_opt_string",
4629        default
4630    )]
4631    pub remark: Option<String>,
4632}
4633
4634#[derive(Debug, Clone, Serialize, Deserialize)]
4635pub struct MeteEventDuration {
4636    #[serde(alias = "$text", rename = "value")]
4637    pub value: Duration,
4638    /// クラスの種別名
4639    ///
4640    /// 事象が示すクラス・レベルの種別を示す。
4641    #[serde(
4642        alias = "@type",
4643        rename = "type",
4644        skip_serializing_if = "Option::is_none"
4645    )]
4646    pub ty: Option<String>,
4647}
4648
4649#[derive(Debug, Clone, Serialize, Deserialize)]
4650pub struct MeteEventPart {
4651    /// 文章形式の表現
4652    ///
4653    /// 事象の内容を文章形式で示す
4654    #[serde(
4655        alias = "Sentence",
4656        rename = "sentence",
4657        skip_serializing_if = "Option::is_none"
4658    )]
4659    pub sentence: Option<MeteSentence>,
4660    /// 卓越もしくは変化前
4661    ///
4662    /// 卓越する内容、もしくは変化前の内容を示す
4663    #[serde(
4664        alias = "Base",
4665        rename = "base",
4666        skip_serializing_if = "Option::is_none"
4667    )]
4668    pub base: Option<MeteBaseEvent>,
4669    /// 断続現象
4670    ///
4671    /// 断続的に発生する現象の内容を示す
4672    #[serde(
4673        alias = "Temporary",
4674        rename = "temporaries",
4675        skip_serializing_if = "Vec::is_empty",
4676        default
4677    )]
4678    pub temporaries: Vec<MeteBaseEvent>,
4679    /// 変化後
4680    ///
4681    /// 変化後の内容を示す
4682    #[serde(
4683        alias = "Becoming",
4684        rename = "becomings",
4685        skip_serializing_if = "Vec::is_empty",
4686        default
4687    )]
4688    pub becomings: Vec<MeteBaseEvent>,
4689    /// 地域
4690    ///
4691    /// 領域の一部の区域の内容を示す
4692    #[serde(
4693        alias = "Local",
4694        rename = "locals",
4695        skip_serializing_if = "Vec::is_empty",
4696        default
4697    )]
4698    pub locals: Vec<MeteLocalEvent>,
4699    /// 領域の存在域
4700    #[serde(
4701        alias = "Coordinate",
4702        rename = "coordinate",
4703        skip_serializing_if = "Option::is_none"
4704    )]
4705    pub coordinate: Option<MeteCoordinatePart>,
4706    /// 領域の名称
4707    ///
4708    /// 領域の存在域を示す
4709    #[serde(
4710        alias = "Location",
4711        rename = "location",
4712        skip_serializing_if = "Option::is_none",
4713        deserialize_with = "trim_opt_string",
4714        default
4715    )]
4716    pub location: Option<String>,
4717    /// 事象名
4718    ///
4719    /// 事象を示す
4720    #[serde(
4721        alias = "Event",
4722        rename = "events",
4723        skip_serializing_if = "Vec::is_empty",
4724        default
4725    )]
4726    pub events: Vec<MeteEvent>,
4727    /// 注意事項・付加事項
4728    #[serde(
4729        alias = "Remark",
4730        rename = "remark",
4731        skip_serializing_if = "Option::is_none",
4732        deserialize_with = "trim_opt_string",
4733        default
4734    )]
4735    pub remark: Option<String>,
4736}
4737
4738#[derive(Debug, Clone, Serialize, Deserialize)]
4739pub struct MeteEventTime {
4740    #[serde(alias = "$text", rename = "value")]
4741    pub value: DateTime,
4742    /// 事象の種別名
4743    ///
4744    /// 事象の種別を示す。
4745    #[serde(
4746        alias = "@type",
4747        rename = "type",
4748        skip_serializing_if = "Option::is_none"
4749    )]
4750    pub ty: Option<String>,
4751}
4752
4753#[derive(Debug, Clone, Serialize, Deserialize)]
4754pub struct MeteFiftyKtWindProbabilityPart {
4755    /// 暴風域に入る確率
4756    #[serde(alias = "FiftyKtWindProbability", rename = "fiftyKtWindProbabilities")]
4757    pub fifty_kt_wind_probabilities: Vec<EbWeatherForecastProbability>,
4758}
4759
4760#[derive(Debug, Clone, Serialize, Deserialize)]
4761pub struct MeteFloodAssumptionPart {
4762    /// 浸水区域
4763    #[serde(
4764        alias = "FloodAssumptionArea",
4765        rename = "floodAssumptionArea",
4766        skip_serializing_if = "Option::is_none",
4767        deserialize_with = "trim_opt_string",
4768        default
4769    )]
4770    pub flood_assumption_area: Option<String>,
4771    /// 氾濫水到達時刻
4772    #[serde(
4773        alias = "AttainmentTime",
4774        rename = "attainmentTime",
4775        skip_serializing_if = "Option::is_none"
4776    )]
4777    pub attainment_time: Option<EbDateTime>,
4778    /// 浸水深
4779    #[serde(
4780        alias = "FloodDepth",
4781        rename = "floodDepths",
4782        skip_serializing_if = "Vec::is_empty",
4783        default
4784    )]
4785    pub flood_depths: Vec<EbFloodDepth>,
4786    /// 氾濫水最深時刻
4787    #[serde(
4788        alias = "AttainmentDeepestTime",
4789        rename = "attainmentDeepestTime",
4790        skip_serializing_if = "Option::is_none"
4791    )]
4792    pub attainment_deepest_time: Option<EbDateTime>,
4793}
4794
4795#[derive(Debug, Clone, Serialize, Deserialize)]
4796pub struct MeteFloodAssumptionTable {
4797    /// 対象地域河川
4798    ///
4799    /// 個々の対象地域河川を示す。
4800    #[serde(alias = "Area", rename = "area")]
4801    pub area: MeteArea,
4802    /// 浸水対象
4803    ///
4804    /// 浸水対象地域や時刻を示す。
4805    #[serde(
4806        alias = "FloodAssumptionPart",
4807        rename = "floodAssumptionParts",
4808        skip_serializing_if = "Vec::is_empty",
4809        default
4810    )]
4811    pub flood_assumption_parts: Vec<MeteFloodAssumptionPart>,
4812    /// 注意事項・付加事項
4813    #[serde(
4814        alias = "Remark",
4815        rename = "remark",
4816        skip_serializing_if = "Option::is_none",
4817        deserialize_with = "trim_opt_string",
4818        default
4819    )]
4820    pub remark: Option<String>,
4821}
4822
4823#[derive(Debug, Clone, Serialize, Deserialize)]
4824pub struct MeteFloodForecastAddition {
4825    /// 水位・流量観測所付加情報
4826    ///
4827    /// 水位観測所の受け持ち区間と基準の諸要素を示す
4828    #[serde(alias = "HydrometricStationPart", rename = "hydrometricStationParts")]
4829    pub hydrometric_station_parts: Vec<MeteHydrometricStationPart>,
4830}
4831
4832#[derive(Debug, Clone, Serialize, Deserialize)]
4833pub struct MeteForecastSchedule {
4834    #[serde(alias = "@target", rename = "target")]
4835    pub target: String,
4836    /// 季節予報発表予定日平文
4837    ///
4838    /// 季節予報発表予定日
4839    #[serde(
4840        alias = "Text",
4841        rename = "text",
4842        skip_serializing_if = "Option::is_none",
4843        deserialize_with = "trim_opt_string",
4844        default
4845    )]
4846    pub text: Option<String>,
4847    /// 季節予報発表予定日
4848    #[serde(
4849        alias = "DateTime",
4850        rename = "dateTime",
4851        skip_serializing_if = "Option::is_none"
4852    )]
4853    pub date_time: Option<DateTime>,
4854}
4855
4856#[derive(Debug, Clone, Serialize, Deserialize)]
4857pub struct MeteForecastTerm {
4858    /// 日付
4859    ///
4860    /// 日付を文字列で示す
4861    #[serde(
4862        alias = "Date",
4863        rename = "date",
4864        skip_serializing_if = "Option::is_none",
4865        deserialize_with = "trim_opt_string",
4866        default
4867    )]
4868    pub date: Option<String>,
4869    /// 時間
4870    ///
4871    /// 時間表現を文字列で示す
4872    #[serde(
4873        alias = "Term",
4874        rename = "term",
4875        skip_serializing_if = "Option::is_none",
4876        deserialize_with = "trim_opt_string",
4877        default
4878    )]
4879    pub term: Option<String>,
4880}
4881
4882#[derive(Debug, Clone, Serialize, Deserialize)]
4883pub struct MeteHumidityPart {
4884    /// 文章形式の表現
4885    ///
4886    /// 湿度部分の内容を文章形式で示す
4887    #[serde(
4888        alias = "Sentence",
4889        rename = "sentence",
4890        skip_serializing_if = "Option::is_none"
4891    )]
4892    pub sentence: Option<MeteSentence>,
4893    /// 卓越もしくは変化前
4894    ///
4895    /// 卓越する内容、もしくは変化前の内容を示す
4896    #[serde(
4897        alias = "Base",
4898        rename = "base",
4899        skip_serializing_if = "Option::is_none"
4900    )]
4901    pub base: Option<MeteBaseHumidity>,
4902    /// 断続現象
4903    ///
4904    /// 断続的に発生する現象の内容を示す
4905    #[serde(
4906        alias = "Temporary",
4907        rename = "temporaries",
4908        skip_serializing_if = "Vec::is_empty",
4909        default
4910    )]
4911    pub temporaries: Vec<MeteBaseHumidity>,
4912    /// 変化後
4913    ///
4914    /// 変化後の内容を示す
4915    #[serde(
4916        alias = "Becoming",
4917        rename = "becomings",
4918        skip_serializing_if = "Vec::is_empty",
4919        default
4920    )]
4921    pub becomings: Vec<MeteBaseHumidity>,
4922    /// 地域
4923    ///
4924    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
4925    #[serde(
4926        alias = "SubArea",
4927        rename = "subAreas",
4928        skip_serializing_if = "Vec::is_empty",
4929        default
4930    )]
4931    pub sub_areas: Vec<MeteSubAreaHumidity>,
4932    /// 湿度
4933    #[serde(
4934        alias = "Humidity",
4935        rename = "humidities",
4936        skip_serializing_if = "Vec::is_empty",
4937        default
4938    )]
4939    pub humidities: Vec<EbHumidity>,
4940    /// 起時
4941    ///
4942    /// 発生時刻を示す
4943    #[serde(
4944        alias = "Time",
4945        rename = "time",
4946        skip_serializing_if = "Option::is_none"
4947    )]
4948    pub time: Option<DateTime>,
4949    /// 注意事項・付加事項
4950    #[serde(
4951        alias = "Remark",
4952        rename = "remark",
4953        skip_serializing_if = "Option::is_none",
4954        deserialize_with = "trim_opt_string",
4955        default
4956    )]
4957    pub remark: Option<String>,
4958}
4959
4960#[derive(Debug, Clone, Serialize, Deserialize)]
4961pub struct MeteHydrometricStationCriteria {
4962    /// 水位基準
4963    #[serde(
4964        alias = "WaterLevel",
4965        rename = "waterLevels",
4966        skip_serializing_if = "Vec::is_empty",
4967        default
4968    )]
4969    pub water_levels: Vec<EbWaterLevel>,
4970    /// 流量基準
4971    #[serde(
4972        alias = "Discharge",
4973        rename = "discharges",
4974        skip_serializing_if = "Vec::is_empty",
4975        default
4976    )]
4977    pub discharges: Vec<EbDischarge>,
4978}
4979
4980#[derive(Debug, Clone, Serialize, Deserialize)]
4981pub struct MeteHydrometricStationPart {
4982    /// 対象水位観測所
4983    #[serde(alias = "Area", rename = "area")]
4984    pub area: MeteArea,
4985    /// 受け持ち区間
4986    ///
4987    /// 水位・流量観測所の受け持ち区間を示す
4988    #[serde(
4989        alias = "ChargeSection",
4990        rename = "chargeSections",
4991        skip_serializing_if = "Vec::is_empty",
4992        default
4993    )]
4994    pub charge_sections: Vec<String>,
4995    /// 水位・流量基準
4996    ///
4997    /// 水位・流量観測所の水位・流量基準の諸要素を示す
4998    #[serde(
4999        alias = "Criteria",
5000        rename = "criterias",
5001        skip_serializing_if = "Vec::is_empty",
5002        default
5003    )]
5004    pub criterias: Vec<MeteHydrometricStationCriteria>,
5005    /// 注意事項・付加事項
5006    #[serde(
5007        alias = "Remark",
5008        rename = "remark",
5009        skip_serializing_if = "Option::is_none",
5010        deserialize_with = "trim_opt_string",
5011        default
5012    )]
5013    pub remark: Option<String>,
5014}
5015
5016#[derive(Debug, Clone, Serialize, Deserialize)]
5017pub struct MeteIcingPart {
5018    /// 文章形式の表現
5019    ///
5020    /// 着氷の状態を文章形式で示す
5021    #[serde(
5022        alias = "Sentence",
5023        rename = "sentence",
5024        skip_serializing_if = "Option::is_none"
5025    )]
5026    pub sentence: Option<MeteSentence>,
5027    /// 卓越もしくは変化前
5028    ///
5029    /// 卓越する内容、もしくは変化前の内容を示す
5030    #[serde(
5031        alias = "Base",
5032        rename = "base",
5033        skip_serializing_if = "Option::is_none"
5034    )]
5035    pub base: Option<MeteBaseIcing>,
5036    /// 断続現象
5037    ///
5038    /// 断続的に発生する現象の内容を示す
5039    #[serde(
5040        alias = "Temporary",
5041        rename = "temporaries",
5042        skip_serializing_if = "Vec::is_empty",
5043        default
5044    )]
5045    pub temporaries: Vec<MeteBaseIcing>,
5046    /// 変化後
5047    ///
5048    /// 変化後の内容を示す
5049    #[serde(
5050        alias = "Becoming",
5051        rename = "becomings",
5052        skip_serializing_if = "Vec::is_empty",
5053        default
5054    )]
5055    pub becomings: Vec<MeteBaseIcing>,
5056    /// 地域
5057    ///
5058    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
5059    #[serde(
5060        alias = "SubArea",
5061        rename = "subAreas",
5062        skip_serializing_if = "Vec::is_empty",
5063        default
5064    )]
5065    pub sub_areas: Vec<MeteSubAreaIcing>,
5066    /// 着氷
5067    #[serde(
5068        alias = "Icing",
5069        rename = "icings",
5070        skip_serializing_if = "Vec::is_empty",
5071        default
5072    )]
5073    pub icings: Vec<EbIcing>,
5074    /// 起時
5075    ///
5076    /// 発生時刻を示す
5077    #[serde(
5078        alias = "Time",
5079        rename = "time",
5080        skip_serializing_if = "Option::is_none"
5081    )]
5082    pub time: Option<DateTime>,
5083    /// 注意事項・付加事項
5084    #[serde(
5085        alias = "Remark",
5086        rename = "remark",
5087        skip_serializing_if = "Option::is_none",
5088        deserialize_with = "trim_opt_string",
5089        default
5090    )]
5091    pub remark: Option<String>,
5092}
5093
5094#[derive(Debug, Clone, Serialize, Deserialize)]
5095pub struct MeteIsobarPart {
5096    /// 気圧
5097    ///
5098    /// 等圧線の気圧を示す
5099    #[serde(alias = "Pressure", rename = "pressure")]
5100    pub pressure: EbPressure,
5101    /// 線
5102    ///
5103    /// 等圧線の座標を示す(閉じていない場合)
5104    #[serde(
5105        alias = "Line",
5106        rename = "line",
5107        skip_serializing_if = "Option::is_none"
5108    )]
5109    pub line: Option<EbCoordinate>,
5110    /// 多角形
5111    ///
5112    /// 等圧線の座標を示す(閉じている場合)
5113    #[serde(
5114        alias = "Polygon",
5115        rename = "polygon",
5116        skip_serializing_if = "Option::is_none"
5117    )]
5118    pub polygon: Option<EbCoordinate>,
5119}
5120
5121#[derive(Debug, Clone, Serialize, Deserialize)]
5122pub struct MeteItem {
5123    /// 特別警報・警報・注意報、観測情報
5124    ///
5125    /// 特別警報・警報・注意報、観測の個々の要素を示す
5126    #[serde(alias = "Kind", rename = "kinds")]
5127    pub kinds: Vec<MeteKind>,
5128    /// 地域名要素全体
5129    ///
5130    /// 複数の対象地域がある場合、この要素の子要素に記述する(将来の拡張用)
5131    #[serde(
5132        alias = "Areas",
5133        rename = "areas",
5134        skip_serializing_if = "Option::is_none"
5135    )]
5136    pub areas: Option<MeteAreas>,
5137    /// 地点要素全体
5138    ///
5139    /// 複数の対象地点がある場合、この要素の子要素に記述する(将来の拡張用)
5140    #[serde(
5141        alias = "Stations",
5142        rename = "stations",
5143        skip_serializing_if = "Option::is_none"
5144    )]
5145    pub stations: Option<MeteStations>,
5146    /// 地域名要素
5147    ///
5148    /// 個々の対象地域・地点を示す
5149    #[serde(
5150        alias = "Area",
5151        rename = "area",
5152        skip_serializing_if = "Option::is_none"
5153    )]
5154    pub area: Option<MeteArea>,
5155    /// 地点要素
5156    ///
5157    /// 対象地点を示す
5158    #[serde(
5159        alias = "Station",
5160        rename = "station",
5161        skip_serializing_if = "Option::is_none"
5162    )]
5163    pub station: Option<MeteStation>,
5164    /// 内容の変更点の有無
5165    ///
5166    /// 対象地域・地点毎の内容の変更点の有無を示す
5167    #[serde(
5168        alias = "ChangeStatus",
5169        rename = "changeStatus",
5170        skip_serializing_if = "Option::is_none"
5171    )]
5172    pub change_status: Option<String>,
5173    /// 域内全域又は一部を示す
5174    ///
5175    /// 発表対象が領域の全域または一部であるかを示す
5176    #[serde(
5177        alias = "FullStatus",
5178        rename = "fullStatus",
5179        skip_serializing_if = "Option::is_none"
5180    )]
5181    pub full_status: Option<String>,
5182    /// 編集識別子
5183    ///
5184    /// 複数の領域をまとめるときの識別として利用する
5185    #[serde(
5186        alias = "EditingMark",
5187        rename = "editingMark",
5188        skip_serializing_if = "Option::is_none"
5189    )]
5190    pub editing_mark: Option<String>,
5191    /// 他情報参照
5192    ///
5193    /// 土砂災害警戒情報などの発表状況を記載する
5194    #[serde(
5195        alias = "OtherReport",
5196        rename = "otherReports",
5197        skip_serializing_if = "Vec::is_empty",
5198        default
5199    )]
5200    pub other_reports: Vec<String>,
5201}
5202
5203#[derive(Debug, Clone, Serialize, Deserialize)]
5204pub struct MeteKind {
5205    /// 項目名
5206    ///
5207    /// 特別警報・警報・注意報名、警戒レベル等を示す
5208    #[serde(
5209        alias = "Name",
5210        rename = "name",
5211        skip_serializing_if = "Option::is_none",
5212        deserialize_with = "trim_opt_string",
5213        default
5214    )]
5215    pub name: Option<String>,
5216    /// 警報等情報要素コード
5217    ///
5218    /// 特別警報・警報・注意報、警戒レベル、生物季節現象等のコードを示す(コード辞書参照)
5219    #[serde(
5220        alias = "Code",
5221        rename = "code",
5222        skip_serializing_if = "Option::is_none",
5223        deserialize_with = "trim_opt_string",
5224        default
5225    )]
5226    pub code: Option<String>,
5227    /// 情報の状況
5228    ///
5229    /// 警報・注意報等の切り替え、発表、解除などの状況を示す
5230    #[serde(
5231        alias = "Status",
5232        rename = "status",
5233        skip_serializing_if = "Option::is_none",
5234        deserialize_with = "trim_opt_string",
5235        default
5236    )]
5237    pub status: Option<String>,
5238    /// 観測対象の品種または総称
5239    #[serde(
5240        alias = "ClassName",
5241        rename = "className",
5242        skip_serializing_if = "Option::is_none",
5243        deserialize_with = "trim_opt_string",
5244        default
5245    )]
5246    pub class_name: Option<String>,
5247    /// 種別の補足説明
5248    ///
5249    /// "土砂災害"など大雨警報などを説明する、観測の補足説明をする文字列等を示す
5250    #[serde(
5251        alias = "Condition",
5252        rename = "condition",
5253        skip_serializing_if = "Option::is_none",
5254        deserialize_with = "trim_opt_string",
5255        default
5256    )]
5257    pub condition: Option<String>,
5258    /// 前回の発表状況
5259    ///
5260    /// 前回発表した警報等を示す
5261    #[serde(
5262        alias = "LastKind",
5263        rename = "lastKind",
5264        skip_serializing_if = "Option::is_none"
5265    )]
5266    pub last_kind: Option<MeteNextKind>,
5267    /// 警報・注意報、気象警戒レベルの引上げの可能性
5268    #[serde(
5269        alias = "NextKinds",
5270        rename = "nextKinds",
5271        skip_serializing_if = "Option::is_none"
5272    )]
5273    pub next_kinds: Option<MeteNextKinds>,
5274    /// 特記事項
5275    #[serde(
5276        alias = "Attention",
5277        rename = "attention",
5278        skip_serializing_if = "Option::is_none"
5279    )]
5280    pub attention: Option<MeteAttention>,
5281    /// 警報等への切り替え予告
5282    ///
5283    /// 警報等への切り替えの予告を示す
5284    #[serde(
5285        alias = "WarningNotice",
5286        rename = "warningNotice",
5287        skip_serializing_if = "Option::is_none"
5288    )]
5289    pub warning_notice: Option<MeteWarningNotice>,
5290    /// 付加事項
5291    #[serde(
5292        alias = "Addition",
5293        rename = "addition",
5294        skip_serializing_if = "Option::is_none"
5295    )]
5296    pub addition: Option<MeteAddition>,
5297    /// 日時
5298    ///
5299    /// Kind要素で示している内容の有効日時や起時を示す
5300    #[serde(
5301        alias = "DateTime",
5302        rename = "dateTime",
5303        skip_serializing_if = "Option::is_none"
5304    )]
5305    pub date_time: Option<EbDateTime>,
5306    /// 予報・観測要素
5307    ///
5308    /// 量的予想などの詳細事項を示す
5309    #[serde(
5310        alias = "Property",
5311        rename = "properties",
5312        skip_serializing_if = "Vec::is_empty",
5313        default
5314    )]
5315    pub properties: Vec<MeteProperty>,
5316}
5317
5318#[derive(Debug, Clone, Serialize, Deserialize)]
5319pub struct MeteLocalCriteria {
5320    /// 地域の名称
5321    ///
5322    /// 一部領域の名称、表現を示す
5323    #[serde(
5324        alias = "AreaName",
5325        rename = "areaName",
5326        deserialize_with = "trim_string"
5327    )]
5328    pub area_name: String,
5329    /// 文章形式の表現
5330    ///
5331    /// 一部領域の基準到達に係る内容を文章形式で示す
5332    #[serde(
5333        alias = "Sentence",
5334        rename = "sentence",
5335        skip_serializing_if = "Option::is_none"
5336    )]
5337    pub sentence: Option<MeteSentence>,
5338    /// 基準のクラス・レベル
5339    ///
5340    /// 基準が示すクラス・レベルの内容を示す。
5341    #[serde(alias = "CriteriaClass", rename = "criteriaClass")]
5342    pub criteria_class: MeteCriteriaClass,
5343    /// 基準到達時刻
5344    ///
5345    /// 基準値に到達する時刻
5346    #[serde(alias = "Time", rename = "time")]
5347    pub time: DateTime,
5348    /// 期間の長さ
5349    #[serde(
5350        alias = "Duration",
5351        rename = "duration",
5352        skip_serializing_if = "Option::is_none"
5353    )]
5354    pub duration: Option<Duration>,
5355    /// 注意事項・付加事項
5356    ///
5357    /// 注意事項・付加事項を示す(注意警戒事項を示す)
5358    #[serde(
5359        alias = "Remark",
5360        rename = "remark",
5361        skip_serializing_if = "Option::is_none",
5362        deserialize_with = "trim_opt_string",
5363        default
5364    )]
5365    pub remark: Option<String>,
5366}
5367
5368#[derive(Debug, Clone, Serialize, Deserialize)]
5369pub struct MeteLocalEvent {
5370    /// 地域の名称
5371    ///
5372    /// 領域の一部の区域の名称、表現を示す
5373    #[serde(
5374        alias = "AreaName",
5375        rename = "areaName",
5376        deserialize_with = "trim_string"
5377    )]
5378    pub area_name: String,
5379    /// 文章形式の表現
5380    ///
5381    /// 領域の一部の区域の事象の内容を文章形式で示す
5382    #[serde(
5383        alias = "Sentence",
5384        rename = "sentence",
5385        skip_serializing_if = "Option::is_none"
5386    )]
5387    pub sentence: Option<MeteSentence>,
5388    /// 領域の存在域
5389    #[serde(
5390        alias = "Coordinate",
5391        rename = "coordinate",
5392        skip_serializing_if = "Option::is_none"
5393    )]
5394    pub coordinate: Option<MeteCoordinatePart>,
5395    /// 領域の存在域
5396    #[serde(
5397        alias = "Location",
5398        rename = "location",
5399        skip_serializing_if = "Option::is_none",
5400        deserialize_with = "trim_opt_string",
5401        default
5402    )]
5403    pub location: Option<String>,
5404    /// 事象名
5405    ///
5406    /// 事象を示す
5407    #[serde(
5408        alias = "Event",
5409        rename = "events",
5410        skip_serializing_if = "Vec::is_empty",
5411        default
5412    )]
5413    pub events: Vec<MeteEvent>,
5414    /// 注意事項・付加事項
5415    #[serde(
5416        alias = "Remark",
5417        rename = "remark",
5418        skip_serializing_if = "Option::is_none",
5419        deserialize_with = "trim_opt_string",
5420        default
5421    )]
5422    pub remark: Option<String>,
5423}
5424
5425#[derive(Debug, Clone, Serialize, Deserialize)]
5426pub struct MeteLocalHumidity {
5427    /// 地域の名称
5428    ///
5429    /// 領域の一部の区域の名称、表現を示す
5430    #[serde(
5431        alias = "AreaName",
5432        rename = "areaName",
5433        skip_serializing_if = "Option::is_none",
5434        deserialize_with = "trim_opt_string",
5435        default
5436    )]
5437    pub area_name: Option<String>,
5438    /// 文章形式の表現
5439    ///
5440    /// 領域の一部の区域の内容を文章形式で示す
5441    #[serde(
5442        alias = "Sentence",
5443        rename = "sentence",
5444        skip_serializing_if = "Option::is_none"
5445    )]
5446    pub sentence: Option<MeteSentence>,
5447    /// 湿度
5448    #[serde(
5449        alias = "Humidity",
5450        rename = "humidities",
5451        skip_serializing_if = "Vec::is_empty",
5452        default
5453    )]
5454    pub humidities: Vec<EbHumidity>,
5455    /// 起時
5456    ///
5457    /// 発生時刻を示す
5458    #[serde(
5459        alias = "Time",
5460        rename = "time",
5461        skip_serializing_if = "Option::is_none"
5462    )]
5463    pub time: Option<DateTime>,
5464    /// 注意事項・付加事項
5465    #[serde(
5466        alias = "Remark",
5467        rename = "remark",
5468        skip_serializing_if = "Option::is_none",
5469        deserialize_with = "trim_opt_string",
5470        default
5471    )]
5472    pub remark: Option<String>,
5473}
5474
5475#[derive(Debug, Clone, Serialize, Deserialize)]
5476pub struct MeteLocalIcing {
5477    /// 地域の名称
5478    ///
5479    /// 領域の一部の区域の名称、表現を示す
5480    #[serde(
5481        alias = "AreaName",
5482        rename = "areaName",
5483        skip_serializing_if = "Option::is_none",
5484        deserialize_with = "trim_opt_string",
5485        default
5486    )]
5487    pub area_name: Option<String>,
5488    /// 文章形式の表現
5489    ///
5490    /// 領域の一部の区域の内容を文章形式で示す
5491    #[serde(
5492        alias = "Sentence",
5493        rename = "sentence",
5494        skip_serializing_if = "Option::is_none"
5495    )]
5496    pub sentence: Option<MeteSentence>,
5497    /// 着氷
5498    #[serde(
5499        alias = "Icing",
5500        rename = "icings",
5501        skip_serializing_if = "Vec::is_empty",
5502        default
5503    )]
5504    pub icings: Vec<EbIcing>,
5505    /// 起時
5506    ///
5507    /// 発生時刻を示す
5508    #[serde(
5509        alias = "Time",
5510        rename = "time",
5511        skip_serializing_if = "Option::is_none"
5512    )]
5513    pub time: Option<DateTime>,
5514    /// 注意事項・付加事項
5515    #[serde(
5516        alias = "Remark",
5517        rename = "remark",
5518        skip_serializing_if = "Option::is_none",
5519        deserialize_with = "trim_opt_string",
5520        default
5521    )]
5522    pub remark: Option<String>,
5523}
5524
5525#[derive(Debug, Clone, Serialize, Deserialize)]
5526pub struct MeteLocalPrecipitation {
5527    /// 地域の名称
5528    ///
5529    /// 領域の一部の区域の名称、表現を示す
5530    #[serde(
5531        alias = "AreaName",
5532        rename = "areaName",
5533        skip_serializing_if = "Option::is_none",
5534        deserialize_with = "trim_opt_string",
5535        default
5536    )]
5537    pub area_name: Option<String>,
5538    /// 文章形式の表現
5539    ///
5540    /// 領域の一部の区域の内容を文章形式で示す
5541    #[serde(
5542        alias = "Sentence",
5543        rename = "sentence",
5544        skip_serializing_if = "Option::is_none"
5545    )]
5546    pub sentence: Option<MeteSentence>,
5547    /// 降水量
5548    #[serde(
5549        alias = "Precipitation",
5550        rename = "precipitations",
5551        skip_serializing_if = "Vec::is_empty",
5552        default
5553    )]
5554    pub precipitations: Vec<EbPrecipitation>,
5555    /// 起時
5556    ///
5557    /// 発生時刻を示す
5558    #[serde(
5559        alias = "Time",
5560        rename = "time",
5561        skip_serializing_if = "Option::is_none"
5562    )]
5563    pub time: Option<DateTime>,
5564    /// 注意事項・付加事項
5565    #[serde(
5566        alias = "Remark",
5567        rename = "remark",
5568        skip_serializing_if = "Option::is_none",
5569        deserialize_with = "trim_opt_string",
5570        default
5571    )]
5572    pub remark: Option<String>,
5573}
5574
5575#[derive(Debug, Clone, Serialize, Deserialize)]
5576pub struct MeteLocalPrecipitationBasedIndex {
5577    /// 地域の名称
5578    ///
5579    /// 領域の一部の区域の名称、表現を示す
5580    #[serde(
5581        alias = "AreaName",
5582        rename = "areaName",
5583        skip_serializing_if = "Option::is_none",
5584        deserialize_with = "trim_opt_string",
5585        default
5586    )]
5587    pub area_name: Option<String>,
5588    /// 文章形式の表現
5589    ///
5590    /// 領域の一部の区域の内容を文章形式で示す
5591    #[serde(
5592        alias = "Sentence",
5593        rename = "sentence",
5594        skip_serializing_if = "Option::is_none"
5595    )]
5596    pub sentence: Option<MeteSentence>,
5597    /// 雨量関連指数
5598    #[serde(
5599        alias = "PrecipitationBasedIndex",
5600        rename = "precipitationBasedIndexes",
5601        skip_serializing_if = "Vec::is_empty",
5602        default
5603    )]
5604    pub precipitation_based_indexes: Vec<EbPrecipitationBasedIndex>,
5605    /// 起時
5606    ///
5607    /// 発生時刻を示す
5608    #[serde(
5609        alias = "Time",
5610        rename = "time",
5611        skip_serializing_if = "Option::is_none"
5612    )]
5613    pub time: Option<DateTime>,
5614    /// 注意事項・付加事項
5615    #[serde(
5616        alias = "Remark",
5617        rename = "remark",
5618        skip_serializing_if = "Option::is_none",
5619        deserialize_with = "trim_opt_string",
5620        default
5621    )]
5622    pub remark: Option<String>,
5623}
5624
5625#[derive(Debug, Clone, Serialize, Deserialize)]
5626pub struct MeteLocalPressure {
5627    /// 地域の名称
5628    ///
5629    /// 領域の一部の区域の名称、表現を示す
5630    #[serde(
5631        alias = "AreaName",
5632        rename = "areaName",
5633        skip_serializing_if = "Option::is_none",
5634        deserialize_with = "trim_opt_string",
5635        default
5636    )]
5637    pub area_name: Option<String>,
5638    /// 文章形式の表現
5639    ///
5640    /// 領域の一部の区域の内容を文章形式で示す
5641    #[serde(
5642        alias = "Sentence",
5643        rename = "sentence",
5644        skip_serializing_if = "Option::is_none"
5645    )]
5646    pub sentence: Option<MeteSentence>,
5647    /// 気圧
5648    #[serde(
5649        alias = "Pressure",
5650        rename = "pressures",
5651        skip_serializing_if = "Vec::is_empty",
5652        default
5653    )]
5654    pub pressures: Vec<EbPressure>,
5655    /// 起時
5656    ///
5657    /// 発生時刻を示す
5658    #[serde(
5659        alias = "Time",
5660        rename = "time",
5661        skip_serializing_if = "Option::is_none"
5662    )]
5663    pub time: Option<DateTime>,
5664    /// 注意事項・付加事項
5665    #[serde(
5666        alias = "Remark",
5667        rename = "remark",
5668        skip_serializing_if = "Option::is_none",
5669        deserialize_with = "trim_opt_string",
5670        default
5671    )]
5672    pub remark: Option<String>,
5673}
5674
5675#[derive(Debug, Clone, Serialize, Deserialize)]
5676pub struct MeteLocalSeaIce {
5677    /// 地域の名称
5678    ///
5679    /// 領域の一部の区域の名称、表現を示す
5680    #[serde(
5681        alias = "AreaName",
5682        rename = "areaName",
5683        skip_serializing_if = "Option::is_none",
5684        deserialize_with = "trim_opt_string",
5685        default
5686    )]
5687    pub area_name: Option<String>,
5688    /// 文章形式の表現
5689    ///
5690    /// 領域の一部の区域の内容を文章形式で示す
5691    #[serde(
5692        alias = "Sentence",
5693        rename = "sentence",
5694        skip_serializing_if = "Option::is_none"
5695    )]
5696    pub sentence: Option<MeteSentence>,
5697    /// 海氷
5698    #[serde(
5699        alias = "SeaIce",
5700        rename = "seaIces",
5701        skip_serializing_if = "Vec::is_empty",
5702        default
5703    )]
5704    pub sea_ices: Vec<EbSeaIce>,
5705    /// 起時
5706    ///
5707    /// 発生時刻を示す
5708    #[serde(
5709        alias = "Time",
5710        rename = "time",
5711        skip_serializing_if = "Option::is_none"
5712    )]
5713    pub time: Option<DateTime>,
5714    /// 注意事項・付加事項
5715    #[serde(
5716        alias = "Remark",
5717        rename = "remark",
5718        skip_serializing_if = "Option::is_none",
5719        deserialize_with = "trim_opt_string",
5720        default
5721    )]
5722    pub remark: Option<String>,
5723}
5724
5725#[derive(Debug, Clone, Serialize, Deserialize)]
5726pub struct MeteLocalSignificancy {
5727    /// 地域の名称
5728    ///
5729    /// 三次細分の名称を示す
5730    #[serde(
5731        alias = "AreaName",
5732        rename = "areaName",
5733        deserialize_with = "trim_string"
5734    )]
5735    pub area_name: String,
5736    /// 危険度
5737    ///
5738    /// 危険度又は警戒レベルを示す
5739    #[serde(
5740        alias = "Significancy",
5741        rename = "significancies",
5742        skip_serializing_if = "Vec::is_empty",
5743        default
5744    )]
5745    pub significancies: Vec<MeteSignificancy>,
5746    /// 文章形式の表現
5747    ///
5748    /// 予報期間を超えて危険度又は警戒レベルが継続することを文章形式で示す
5749    #[serde(
5750        alias = "Sentence",
5751        rename = "sentence",
5752        skip_serializing_if = "Option::is_none"
5753    )]
5754    pub sentence: Option<MeteSentence>,
5755    /// ピーク時刻
5756    ///
5757    /// 時系列では表現できないピーク時刻を記述する
5758    #[serde(
5759        alias = "PeakTime",
5760        rename = "peakTime",
5761        skip_serializing_if = "Option::is_none"
5762    )]
5763    pub peak_time: Option<MeteForecastTerm>,
5764    /// 特記事項
5765    #[serde(
5766        alias = "Attention",
5767        rename = "attention",
5768        skip_serializing_if = "Option::is_none"
5769    )]
5770    pub attention: Option<MeteAttention>,
5771    /// 付加事項
5772    #[serde(
5773        alias = "Addition",
5774        rename = "addition",
5775        skip_serializing_if = "Option::is_none"
5776    )]
5777    pub addition: Option<MeteAddition>,
5778}
5779
5780#[derive(Debug, Clone, Serialize, Deserialize)]
5781pub struct MeteLocalSnowDepth {
5782    /// 地域の名称
5783    ///
5784    /// 領域の一部の区域の名称、表現を示す
5785    #[serde(
5786        alias = "AreaName",
5787        rename = "areaName",
5788        skip_serializing_if = "Option::is_none",
5789        deserialize_with = "trim_opt_string",
5790        default
5791    )]
5792    pub area_name: Option<String>,
5793    /// 文章形式の表現
5794    ///
5795    /// 領域の一部の区域の内容を文章形式で示す
5796    #[serde(
5797        alias = "Sentence",
5798        rename = "sentence",
5799        skip_serializing_if = "Option::is_none"
5800    )]
5801    pub sentence: Option<MeteSentence>,
5802    /// 積雪深
5803    #[serde(
5804        alias = "SnowDepth",
5805        rename = "snowDepths",
5806        skip_serializing_if = "Vec::is_empty",
5807        default
5808    )]
5809    pub snow_depths: Vec<EbSnowDepth>,
5810    /// 起時
5811    ///
5812    /// 発生時刻を示す
5813    #[serde(
5814        alias = "Time",
5815        rename = "time",
5816        skip_serializing_if = "Option::is_none"
5817    )]
5818    pub time: Option<DateTime>,
5819    /// 注意事項・付加事項
5820    #[serde(
5821        alias = "Remark",
5822        rename = "remark",
5823        skip_serializing_if = "Option::is_none",
5824        deserialize_with = "trim_opt_string",
5825        default
5826    )]
5827    pub remark: Option<String>,
5828}
5829
5830#[derive(Debug, Clone, Serialize, Deserialize)]
5831pub struct MeteLocalSnowfallDepth {
5832    /// 地域の名称
5833    ///
5834    /// 領域の一部の区域の名称、表現を示す
5835    #[serde(
5836        alias = "AreaName",
5837        rename = "areaName",
5838        skip_serializing_if = "Option::is_none",
5839        deserialize_with = "trim_opt_string",
5840        default
5841    )]
5842    pub area_name: Option<String>,
5843    /// 文章形式の表現
5844    ///
5845    /// 領域の一部の区域の内容を文章形式で示す
5846    #[serde(
5847        alias = "Sentence",
5848        rename = "sentence",
5849        skip_serializing_if = "Option::is_none"
5850    )]
5851    pub sentence: Option<MeteSentence>,
5852    /// 降雪量
5853    #[serde(
5854        alias = "SnowfallDepth",
5855        rename = "snowfallDepths",
5856        skip_serializing_if = "Vec::is_empty",
5857        default
5858    )]
5859    pub snowfall_depths: Vec<EbSnowfallDepth>,
5860    /// 起時
5861    ///
5862    /// 発生時刻を示す
5863    #[serde(
5864        alias = "Time",
5865        rename = "time",
5866        skip_serializing_if = "Option::is_none"
5867    )]
5868    pub time: Option<DateTime>,
5869    /// 注意事項・付加事項
5870    #[serde(
5871        alias = "Remark",
5872        rename = "remark",
5873        skip_serializing_if = "Option::is_none",
5874        deserialize_with = "trim_opt_string",
5875        default
5876    )]
5877    pub remark: Option<String>,
5878}
5879
5880#[derive(Debug, Clone, Serialize, Deserialize)]
5881pub struct MeteLocalTemperature {
5882    /// 地域の名称
5883    ///
5884    /// 領域の一部の区域の名称、表現を示す
5885    #[serde(
5886        alias = "AreaName",
5887        rename = "areaName",
5888        skip_serializing_if = "Option::is_none",
5889        deserialize_with = "trim_opt_string",
5890        default
5891    )]
5892    pub area_name: Option<String>,
5893    /// 文章形式の表現
5894    ///
5895    /// 領域の一部の区域の内容を文章形式で示す
5896    #[serde(
5897        alias = "Sentence",
5898        rename = "sentence",
5899        skip_serializing_if = "Option::is_none"
5900    )]
5901    pub sentence: Option<MeteSentence>,
5902    /// 気温
5903    #[serde(
5904        alias = "Temperature",
5905        rename = "temperatures",
5906        skip_serializing_if = "Vec::is_empty",
5907        default
5908    )]
5909    pub temperatures: Vec<EbTemperature>,
5910    /// 起時
5911    ///
5912    /// 発生時刻を示す
5913    #[serde(
5914        alias = "Time",
5915        rename = "time",
5916        skip_serializing_if = "Option::is_none"
5917    )]
5918    pub time: Option<DateTime>,
5919    /// 注意事項・付加事項
5920    #[serde(
5921        alias = "Remark",
5922        rename = "remark",
5923        skip_serializing_if = "Option::is_none",
5924        deserialize_with = "trim_opt_string",
5925        default
5926    )]
5927    pub remark: Option<String>,
5928}
5929
5930#[derive(Debug, Clone, Serialize, Deserialize)]
5931pub struct MeteLocalTidalLevel {
5932    /// 地域の名称
5933    ///
5934    /// 領域の一部の区域の名称、表現を示す
5935    #[serde(
5936        alias = "AreaName",
5937        rename = "areaName",
5938        skip_serializing_if = "Option::is_none",
5939        deserialize_with = "trim_opt_string",
5940        default
5941    )]
5942    pub area_name: Option<String>,
5943    /// 文章形式の表現
5944    ///
5945    /// 領域の一部の区域の内容を文章形式で示す
5946    #[serde(
5947        alias = "Sentence",
5948        rename = "sentence",
5949        skip_serializing_if = "Option::is_none"
5950    )]
5951    pub sentence: Option<MeteSentence>,
5952    /// 潮位
5953    #[serde(
5954        alias = "TidalLevel",
5955        rename = "tidalLevels",
5956        skip_serializing_if = "Vec::is_empty",
5957        default
5958    )]
5959    pub tidal_levels: Vec<EbTidalLevel>,
5960    /// 周期
5961    ///
5962    /// 潮位変動の周期を示す
5963    #[serde(
5964        alias = "TidalPeriod",
5965        rename = "tidalPeriods",
5966        skip_serializing_if = "Vec::is_empty",
5967        default
5968    )]
5969    pub tidal_periods: Vec<EbTidalPeriod>,
5970    /// 起時
5971    ///
5972    /// 発生時刻を示す
5973    #[serde(
5974        alias = "Time",
5975        rename = "time",
5976        skip_serializing_if = "Option::is_none"
5977    )]
5978    pub time: Option<DateTime>,
5979    /// 連続
5980    ///
5981    /// 連続した内容を示す
5982    #[serde(
5983        alias = "Sequence",
5984        rename = "sequences",
5985        skip_serializing_if = "Vec::is_empty",
5986        default
5987    )]
5988    pub sequences: Vec<MeteSequenceTidalLevel>,
5989    /// 注意事項・付加事項
5990    #[serde(
5991        alias = "Remark",
5992        rename = "remark",
5993        skip_serializing_if = "Option::is_none",
5994        deserialize_with = "trim_opt_string",
5995        default
5996    )]
5997    pub remark: Option<String>,
5998}
5999
6000#[derive(Debug, Clone, Serialize, Deserialize)]
6001pub struct MeteLocalVisibility {
6002    /// 地域の名称
6003    ///
6004    /// 領域の一部の区域の名称、表現を示す
6005    #[serde(
6006        alias = "AreaName",
6007        rename = "areaName",
6008        skip_serializing_if = "Option::is_none",
6009        deserialize_with = "trim_opt_string",
6010        default
6011    )]
6012    pub area_name: Option<String>,
6013    /// 文章形式の表現
6014    ///
6015    /// 領域の一部の区域の内容を文章形式で示す
6016    #[serde(
6017        alias = "Sentence",
6018        rename = "sentence",
6019        skip_serializing_if = "Option::is_none"
6020    )]
6021    pub sentence: Option<MeteSentence>,
6022    /// 視程
6023    #[serde(
6024        alias = "Visibility",
6025        rename = "visibilities",
6026        skip_serializing_if = "Vec::is_empty",
6027        default
6028    )]
6029    pub visibilities: Vec<EbVisibility>,
6030    /// 起時
6031    ///
6032    /// 発生時刻を示す
6033    #[serde(
6034        alias = "Time",
6035        rename = "time",
6036        skip_serializing_if = "Option::is_none"
6037    )]
6038    pub time: Option<DateTime>,
6039    /// 注意事項・付加事項
6040    #[serde(
6041        alias = "Remark",
6042        rename = "remark",
6043        skip_serializing_if = "Option::is_none",
6044        deserialize_with = "trim_opt_string",
6045        default
6046    )]
6047    pub remark: Option<String>,
6048}
6049
6050#[derive(Debug, Clone, Serialize, Deserialize)]
6051pub struct MeteLocalWaveHeight {
6052    /// 地域の名称
6053    ///
6054    /// 領域の一部の区域の名称、表現を示す
6055    #[serde(
6056        alias = "AreaName",
6057        rename = "areaName",
6058        skip_serializing_if = "Option::is_none",
6059        deserialize_with = "trim_opt_string",
6060        default
6061    )]
6062    pub area_name: Option<String>,
6063    /// 文章形式の表現
6064    ///
6065    /// 領域の一部の区域の内容を文章形式で示す
6066    #[serde(
6067        alias = "Sentence",
6068        rename = "sentence",
6069        skip_serializing_if = "Option::is_none"
6070    )]
6071    pub sentence: Option<MeteSentence>,
6072    /// 波高
6073    #[serde(
6074        alias = "WaveHeight",
6075        rename = "waveHeights",
6076        skip_serializing_if = "Vec::is_empty",
6077        default
6078    )]
6079    pub wave_heights: Vec<EbWaveHeight>,
6080    /// 起時
6081    ///
6082    /// 発生時刻を示す
6083    #[serde(
6084        alias = "Time",
6085        rename = "time",
6086        skip_serializing_if = "Option::is_none"
6087    )]
6088    pub time: Option<DateTime>,
6089    /// 注意事項・付加事項
6090    #[serde(
6091        alias = "Remark",
6092        rename = "remark",
6093        skip_serializing_if = "Option::is_none",
6094        deserialize_with = "trim_opt_string",
6095        default
6096    )]
6097    pub remark: Option<String>,
6098}
6099
6100#[derive(Debug, Clone, Serialize, Deserialize)]
6101pub struct MeteLocalWeather {
6102    /// 地域の名称
6103    ///
6104    /// 領域の一部の区域の名称、表現を示す
6105    #[serde(
6106        alias = "AreaName",
6107        rename = "areaName",
6108        skip_serializing_if = "Option::is_none",
6109        deserialize_with = "trim_opt_string",
6110        default
6111    )]
6112    pub area_name: Option<String>,
6113    /// 文章形式の表現
6114    ///
6115    /// 領域の一部の区域の内容を文章形式で示す
6116    #[serde(
6117        alias = "Sentence",
6118        rename = "sentence",
6119        skip_serializing_if = "Option::is_none"
6120    )]
6121    pub sentence: Option<MeteSentence>,
6122    /// 天気
6123    #[serde(
6124        alias = "Weather",
6125        rename = "weathers",
6126        skip_serializing_if = "Vec::is_empty",
6127        default
6128    )]
6129    pub weathers: Vec<EbWeather>,
6130    /// 起時
6131    ///
6132    /// 発生時刻を示す
6133    #[serde(
6134        alias = "Time",
6135        rename = "time",
6136        skip_serializing_if = "Option::is_none"
6137    )]
6138    pub time: Option<DateTime>,
6139    /// 注意事項・付加事項
6140    #[serde(
6141        alias = "Remark",
6142        rename = "remark",
6143        skip_serializing_if = "Option::is_none",
6144        deserialize_with = "trim_opt_string",
6145        default
6146    )]
6147    pub remark: Option<String>,
6148}
6149
6150#[derive(Debug, Clone, Serialize, Deserialize)]
6151pub struct MeteLocalWind {
6152    /// 地域の名称
6153    ///
6154    /// 領域の一部の区域の名称、表現を示す
6155    #[serde(
6156        alias = "AreaName",
6157        rename = "areaName",
6158        skip_serializing_if = "Option::is_none",
6159        deserialize_with = "trim_opt_string",
6160        default
6161    )]
6162    pub area_name: Option<String>,
6163    /// 文章形式の表現
6164    ///
6165    /// 領域の一部の区域の内容を文章形式で示す
6166    #[serde(
6167        alias = "Sentence",
6168        rename = "sentence",
6169        skip_serializing_if = "Option::is_none"
6170    )]
6171    pub sentence: Option<MeteSentence>,
6172    /// 風向
6173    #[serde(
6174        alias = "WindDirection",
6175        rename = "windDirections",
6176        skip_serializing_if = "Vec::is_empty",
6177        default
6178    )]
6179    pub wind_directions: Vec<EbWindDirection>,
6180    /// 風向(数値)
6181    ///
6182    /// 風向の数値表現を示す
6183    #[serde(
6184        alias = "WindDegree",
6185        rename = "windDegrees",
6186        skip_serializing_if = "Vec::is_empty",
6187        default
6188    )]
6189    pub wind_degrees: Vec<EbWindDegree>,
6190    /// 風速
6191    #[serde(
6192        alias = "WindSpeed",
6193        rename = "windSpeeds",
6194        skip_serializing_if = "Vec::is_empty",
6195        default
6196    )]
6197    pub wind_speeds: Vec<EbWindSpeed>,
6198    /// 風力
6199    #[serde(
6200        alias = "WindScale",
6201        rename = "windScales",
6202        skip_serializing_if = "Vec::is_empty",
6203        default
6204    )]
6205    pub wind_scales: Vec<EbWindScale>,
6206    /// 起時
6207    ///
6208    /// 発生時刻を示す
6209    #[serde(
6210        alias = "Time",
6211        rename = "time",
6212        skip_serializing_if = "Option::is_none"
6213    )]
6214    pub time: Option<DateTime>,
6215    /// 注意事項・付加事項
6216    #[serde(
6217        alias = "Remark",
6218        rename = "remark",
6219        skip_serializing_if = "Option::is_none",
6220        deserialize_with = "trim_opt_string",
6221        default
6222    )]
6223    pub remark: Option<String>,
6224}
6225
6226#[derive(Debug, Clone, Serialize, Deserialize)]
6227pub struct MeteLocalWindDirection {
6228    /// 地域の名称
6229    ///
6230    /// 領域の一部の区域の名称、表現を示す
6231    #[serde(
6232        alias = "AreaName",
6233        rename = "areaName",
6234        skip_serializing_if = "Option::is_none",
6235        deserialize_with = "trim_opt_string",
6236        default
6237    )]
6238    pub area_name: Option<String>,
6239    /// 文章形式の表現
6240    ///
6241    /// 領域の一部の区域の内容を文章形式で示す
6242    #[serde(
6243        alias = "Sentence",
6244        rename = "sentence",
6245        skip_serializing_if = "Option::is_none"
6246    )]
6247    pub sentence: Option<MeteSentence>,
6248    /// 風向
6249    #[serde(
6250        alias = "WindDirection",
6251        rename = "windDirections",
6252        skip_serializing_if = "Vec::is_empty",
6253        default
6254    )]
6255    pub wind_directions: Vec<EbWindDirection>,
6256    /// 起時
6257    ///
6258    /// 発生時刻を示す
6259    #[serde(
6260        alias = "Time",
6261        rename = "time",
6262        skip_serializing_if = "Option::is_none"
6263    )]
6264    pub time: Option<DateTime>,
6265    /// 注意事項・付加事項
6266    #[serde(
6267        alias = "Remark",
6268        rename = "remark",
6269        skip_serializing_if = "Option::is_none",
6270        deserialize_with = "trim_opt_string",
6271        default
6272    )]
6273    pub remark: Option<String>,
6274}
6275
6276#[derive(Debug, Clone, Serialize, Deserialize)]
6277pub struct MeteLocalWindSpeed {
6278    /// 地域の名称
6279    ///
6280    /// 領域の一部の区域の名称、表現を示す
6281    #[serde(
6282        alias = "AreaName",
6283        rename = "areaName",
6284        skip_serializing_if = "Option::is_none",
6285        deserialize_with = "trim_opt_string",
6286        default
6287    )]
6288    pub area_name: Option<String>,
6289    /// 文章形式の表現
6290    ///
6291    /// 領域の一部の区域の内容を文章形式で示す
6292    #[serde(
6293        alias = "Sentence",
6294        rename = "sentence",
6295        skip_serializing_if = "Option::is_none"
6296    )]
6297    pub sentence: Option<MeteSentence>,
6298    /// 風速
6299    #[serde(
6300        alias = "WindSpeed",
6301        rename = "windSpeeds",
6302        skip_serializing_if = "Vec::is_empty",
6303        default
6304    )]
6305    pub wind_speeds: Vec<EbWindSpeed>,
6306    /// 起時
6307    ///
6308    /// 発生時刻を示す
6309    #[serde(
6310        alias = "Time",
6311        rename = "time",
6312        skip_serializing_if = "Option::is_none"
6313    )]
6314    pub time: Option<DateTime>,
6315    /// 注意事項・付加事項
6316    #[serde(
6317        alias = "Remark",
6318        rename = "remark",
6319        skip_serializing_if = "Option::is_none",
6320        deserialize_with = "trim_opt_string",
6321        default
6322    )]
6323    pub remark: Option<String>,
6324}
6325
6326#[derive(Debug, Clone, Serialize, Deserialize)]
6327pub struct MeteMeteorologicalInfo {
6328    /// 種類
6329    #[serde(
6330        alias = "@type",
6331        rename = "type",
6332        skip_serializing_if = "Option::is_none"
6333    )]
6334    pub ty: Option<String>,
6335    /// 予報・観測の基点時刻
6336    ///
6337    /// 予報期間、観測時間の基点時刻を示す
6338    #[serde(alias = "DateTime", rename = "dateTime")]
6339    pub date_time: EbDateTime,
6340    /// 予報・観測期間の長さ
6341    ///
6342    /// 予報期間の長さを示す
6343    #[serde(
6344        alias = "Duration",
6345        rename = "duration",
6346        skip_serializing_if = "Option::is_none"
6347    )]
6348    pub duration: Option<Duration>,
6349    /// 予報・観測時間の内容
6350    ///
6351    /// 予報期間、観測時間を文章で示す
6352    #[serde(
6353        alias = "Name",
6354        rename = "name",
6355        skip_serializing_if = "Option::is_none",
6356        deserialize_with = "trim_opt_string",
6357        default
6358    )]
6359    pub name: Option<String>,
6360    /// 予報・観測の内容
6361    #[serde(alias = "Item", rename = "items")]
6362    pub items: Vec<MeteItem>,
6363}
6364
6365#[derive(Debug, Clone, Serialize, Deserialize)]
6366pub struct MeteMeteorologicalInfos {
6367    /// 予報・観測の種別
6368    ///
6369    /// この要素が示す予報や観測事項の種別を示す
6370    #[serde(alias = "@type", rename = "type")]
6371    pub ty: String,
6372    /// 予報・観測の時間
6373    ///
6374    /// この要素が示す予報や観測事項の時間を示す
6375    #[serde(
6376        alias = "MeteorologicalInfo",
6377        rename = "meteorologicalInfos",
6378        skip_serializing_if = "Vec::is_empty",
6379        default
6380    )]
6381    pub meteorological_infos: Vec<MeteMeteorologicalInfo>,
6382    /// 時系列情報
6383    ///
6384    /// 予報や観測等を時系列的に表現する
6385    #[serde(
6386        alias = "TimeSeriesInfo",
6387        rename = "timeSeriesInfos",
6388        skip_serializing_if = "Vec::is_empty",
6389        default
6390    )]
6391    pub time_series_infos: Vec<MeteTimeSeriesInfo>,
6392}
6393
6394#[derive(Debug, Clone, Serialize, Deserialize)]
6395pub struct MeteNextKind {
6396    /// 項目名
6397    ///
6398    /// 発表の可能性を述べる警報等の種類を記述
6399    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
6400    pub name: String,
6401    /// 警報等情報要素コード
6402    ///
6403    /// Name要素に対応したコードを示す(コード辞書参照)
6404    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
6405    pub code: String,
6406    /// 状況の補足説明
6407    ///
6408    /// 警報等の状況を記述する
6409    #[serde(
6410        alias = "Condition",
6411        rename = "condition",
6412        skip_serializing_if = "Option::is_none",
6413        deserialize_with = "trim_opt_string",
6414        default
6415    )]
6416    pub condition: Option<String>,
6417    /// 日時
6418    ///
6419    /// 警報等の発表の可能性のあるコマを記述
6420    #[serde(
6421        alias = "DateTime",
6422        rename = "dateTime",
6423        skip_serializing_if = "Option::is_none"
6424    )]
6425    pub date_time: Option<EbDateTime>,
6426    /// 文章形式の表現
6427    ///
6428    /// 警報等の発表の可能性について文章で記述
6429    #[serde(
6430        alias = "Sentence",
6431        rename = "sentence",
6432        skip_serializing_if = "Option::is_none",
6433        deserialize_with = "trim_opt_string",
6434        default
6435    )]
6436    pub sentence: Option<String>,
6437}
6438
6439#[derive(Debug, Clone, Serialize, Deserialize)]
6440pub struct MeteNextKinds {
6441    /// 警報等の発表の可能性
6442    #[serde(alias = "NextKind", rename = "nextKinds")]
6443    pub next_kinds: Vec<MeteNextKind>,
6444}
6445
6446#[derive(Debug, Clone, Serialize, Deserialize)]
6447pub struct MeteObservationAddition {
6448    /// 平年差
6449    ///
6450    /// 平年に観測した日との差を示す
6451    #[serde(
6452        alias = "DeviationFromNormal",
6453        rename = "deviationFromNormal",
6454        skip_serializing_if = "Option::is_none",
6455        deserialize_with = "trim_opt_string",
6456        default
6457    )]
6458    pub deviation_from_normal: Option<String>,
6459    /// 昨年差
6460    ///
6461    /// 昨年に観測した日との差を示す
6462    #[serde(
6463        alias = "DeviationFromLastYear",
6464        rename = "deviationFromLastYear",
6465        skip_serializing_if = "Option::is_none",
6466        deserialize_with = "trim_opt_string",
6467        default
6468    )]
6469    pub deviation_from_last_year: Option<String>,
6470    /// 記事
6471    ///
6472    /// 観測結果を補足する事項を示す
6473    #[serde(
6474        alias = "Text",
6475        rename = "text",
6476        skip_serializing_if = "Option::is_none",
6477        deserialize_with = "trim_opt_string",
6478        default
6479    )]
6480    pub text: Option<String>,
6481}
6482
6483#[derive(Debug, Clone, Serialize, Deserialize)]
6484pub struct MeteOffice {
6485    /// 担当部署の種別
6486    #[serde(alias = "@type", rename = "type")]
6487    pub ty: String,
6488    /// 担当部署の属する組織名
6489    ///
6490    /// 担当部署名
6491    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
6492    pub name: String,
6493    /// コード
6494    ///
6495    /// 担当部署コードで、指定河川洪水予報のみで利用する
6496    #[serde(
6497        alias = "Code",
6498        rename = "code",
6499        skip_serializing_if = "Option::is_none",
6500        deserialize_with = "trim_opt_string",
6501        default
6502    )]
6503    pub code: Option<String>,
6504    /// 連絡先
6505    ///
6506    /// 担当部署の連絡先の電話番号と部署名
6507    #[serde(
6508        alias = "ContactInfo",
6509        rename = "contactInfo",
6510        skip_serializing_if = "Option::is_none",
6511        deserialize_with = "trim_opt_string",
6512        default
6513    )]
6514    pub contact_info: Option<String>,
6515    /// 参考URI
6516    ///
6517    /// 参考となるURIで、指定河川洪水予報のみで利用する
6518    #[serde(alias = "URI", rename = "uRI", skip_serializing_if = "Option::is_none")]
6519    pub uri: Option<String>,
6520}
6521
6522#[derive(Debug, Clone, Serialize, Deserialize)]
6523pub struct MeteOfficeInfo {
6524    /// 担当部署
6525    ///
6526    /// 担当部署の諸要素を示す
6527    #[serde(alias = "Office", rename = "offices")]
6528    pub offices: Vec<MeteOffice>,
6529}
6530
6531#[derive(Debug, Clone, Serialize, Deserialize)]
6532pub struct MetePeriod {
6533    /// 開始時間情報
6534    ///
6535    /// 対象要素の開始時間を文字列で示す
6536    #[serde(
6537        alias = "StartTime",
6538        rename = "startTime",
6539        skip_serializing_if = "Option::is_none"
6540    )]
6541    pub start_time: Option<MeteForecastTerm>,
6542    /// 終了時間情報
6543    ///
6544    /// 対象要素の終了時間を文字列で示す
6545    #[serde(
6546        alias = "EndTime",
6547        rename = "endTime",
6548        skip_serializing_if = "Option::is_none"
6549    )]
6550    pub end_time: Option<MeteForecastTerm>,
6551    /// 継続時間情報
6552    ///
6553    /// 対象要素が引き続く事を文字列で示す
6554    #[serde(
6555        alias = "OverTime",
6556        rename = "overTime",
6557        skip_serializing_if = "Option::is_none",
6558        deserialize_with = "trim_opt_string",
6559        default
6560    )]
6561    pub over_time: Option<String>,
6562    /// 単一時間情報
6563    ///
6564    /// 対象要素を単一時間で示す場合の文字列
6565    #[serde(
6566        alias = "ZoneTime",
6567        rename = "zoneTime",
6568        skip_serializing_if = "Option::is_none"
6569    )]
6570    pub zone_time: Option<MeteForecastTerm>,
6571}
6572
6573#[derive(Debug, Clone, Serialize, Deserialize)]
6574pub struct MetePossibilityRankOfWarningPart {
6575    /// 警報級の可能性
6576    #[serde(
6577        alias = "PossibilityRankOfWarning",
6578        rename = "possibilityRankOfWarnings"
6579    )]
6580    pub possibility_rank_of_warnings: Vec<EbPossibilityRankOfWarning>,
6581}
6582
6583#[derive(Debug, Clone, Serialize, Deserialize)]
6584pub struct MetePrecipitationBasedIndexPart {
6585    /// 時系列での参照番号
6586    ///
6587    /// 時系列で表現する場合の参照番号を示す。
6588    #[serde(
6589        alias = "@refID",
6590        rename = "refID",
6591        skip_serializing_if = "Option::is_none"
6592    )]
6593    pub ref_id: Option<u8>,
6594    /// 文章形式の表現
6595    ///
6596    /// 降水量部分の内容を文章形式で示す
6597    #[serde(
6598        alias = "Sentence",
6599        rename = "sentence",
6600        skip_serializing_if = "Option::is_none"
6601    )]
6602    pub sentence: Option<MeteSentence>,
6603    /// 卓越もしくは変化前
6604    ///
6605    /// 卓越する内容、もしくは変化前の内容を示す
6606    #[serde(
6607        alias = "Base",
6608        rename = "base",
6609        skip_serializing_if = "Option::is_none"
6610    )]
6611    pub base: Option<MeteBasePrecipitationBasedIndex>,
6612    /// 雨量関連指数
6613    #[serde(
6614        alias = "PrecipitationBasedIndex",
6615        rename = "precipitationBasedIndexes",
6616        skip_serializing_if = "Vec::is_empty",
6617        default
6618    )]
6619    pub precipitation_based_indexes: Vec<EbPrecipitationBasedIndex>,
6620    /// 起時
6621    ///
6622    /// 発生時刻を示す
6623    #[serde(
6624        alias = "Time",
6625        rename = "time",
6626        skip_serializing_if = "Option::is_none"
6627    )]
6628    pub time: Option<DateTime>,
6629    /// 注意事項・付加事項
6630    #[serde(
6631        alias = "Remark",
6632        rename = "remark",
6633        skip_serializing_if = "Option::is_none",
6634        deserialize_with = "trim_opt_string",
6635        default
6636    )]
6637    pub remark: Option<String>,
6638}
6639
6640#[derive(Debug, Clone, Serialize, Deserialize)]
6641pub struct MetePrecipitationPart {
6642    /// 時系列での参照番号
6643    ///
6644    /// 天気予報を時系列で表現する場合の参照番号
6645    #[serde(
6646        alias = "@refID",
6647        rename = "refID",
6648        skip_serializing_if = "Option::is_none"
6649    )]
6650    pub ref_id: Option<u8>,
6651    /// 文章形式の表現
6652    ///
6653    /// 降水量部分の内容を文章形式で示す
6654    #[serde(
6655        alias = "Sentence",
6656        rename = "sentence",
6657        skip_serializing_if = "Option::is_none"
6658    )]
6659    pub sentence: Option<MeteSentence>,
6660    /// 卓越もしくは変化前
6661    ///
6662    /// 卓越する内容、もしくは変化前の内容を示す
6663    #[serde(
6664        alias = "Base",
6665        rename = "base",
6666        skip_serializing_if = "Option::is_none"
6667    )]
6668    pub base: Option<MeteBasePrecipitation>,
6669    /// 断続現象
6670    ///
6671    /// 断続的に発生する現象の内容を示す
6672    #[serde(
6673        alias = "Temporary",
6674        rename = "temporaries",
6675        skip_serializing_if = "Vec::is_empty",
6676        default
6677    )]
6678    pub temporaries: Vec<MeteBasePrecipitation>,
6679    /// 変化後
6680    ///
6681    /// 変化後の内容を示す
6682    #[serde(
6683        alias = "Becoming",
6684        rename = "becomings",
6685        skip_serializing_if = "Vec::is_empty",
6686        default
6687    )]
6688    pub becomings: Vec<MeteBasePrecipitation>,
6689    /// 地域
6690    ///
6691    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
6692    #[serde(
6693        alias = "SubArea",
6694        rename = "subAreas",
6695        skip_serializing_if = "Vec::is_empty",
6696        default
6697    )]
6698    pub sub_areas: Vec<MeteSubAreaPrecipitation>,
6699    /// 降水量
6700    #[serde(
6701        alias = "Precipitation",
6702        rename = "precipitations",
6703        skip_serializing_if = "Vec::is_empty",
6704        default
6705    )]
6706    pub precipitations: Vec<EbPrecipitation>,
6707    /// 起時
6708    ///
6709    /// 発生時刻を示す
6710    #[serde(
6711        alias = "Time",
6712        rename = "time",
6713        skip_serializing_if = "Option::is_none"
6714    )]
6715    pub time: Option<DateTime>,
6716    /// 注意事項・付加事項
6717    #[serde(
6718        alias = "Remark",
6719        rename = "remark",
6720        skip_serializing_if = "Option::is_none",
6721        deserialize_with = "trim_opt_string",
6722        default
6723    )]
6724    pub remark: Option<String>,
6725}
6726
6727#[derive(Debug, Clone, Serialize, Deserialize)]
6728pub struct MetePrefectureCity {
6729    #[serde(
6730        alias = "$text",
6731        rename = "value",
6732        default,
6733        deserialize_with = "trim_string"
6734    )]
6735    pub value: String,
6736    /// 領域のタイプ
6737    ///
6738    /// この要素の下に存在するcodeの種別を示す
6739    #[serde(
6740        alias = "@partType",
6741        rename = "partType",
6742        skip_serializing_if = "Option::is_none"
6743    )]
6744    pub part_type: Option<String>,
6745}
6746
6747#[derive(Debug, Clone, Serialize, Deserialize)]
6748pub struct MetePressurePart {
6749    /// 文章形式の表現
6750    ///
6751    /// 気圧部分の内容を文章形式で示す
6752    #[serde(
6753        alias = "Sentence",
6754        rename = "sentence",
6755        skip_serializing_if = "Option::is_none"
6756    )]
6757    pub sentence: Option<MeteSentence>,
6758    /// 卓越もしくは変化前
6759    ///
6760    /// 卓越する内容、もしくは変化前の内容を示す
6761    #[serde(
6762        alias = "Base",
6763        rename = "base",
6764        skip_serializing_if = "Option::is_none"
6765    )]
6766    pub base: Option<MeteBasePressure>,
6767    /// 断続現象
6768    ///
6769    /// 断続的に発生する現象の内容を示す
6770    #[serde(
6771        alias = "Temporary",
6772        rename = "temporaries",
6773        skip_serializing_if = "Vec::is_empty",
6774        default
6775    )]
6776    pub temporaries: Vec<MeteBasePressure>,
6777    /// 変化後
6778    ///
6779    /// 変化後の内容を示す
6780    #[serde(
6781        alias = "Becoming",
6782        rename = "becomings",
6783        skip_serializing_if = "Vec::is_empty",
6784        default
6785    )]
6786    pub becomings: Vec<MeteBasePressure>,
6787    /// 地域
6788    ///
6789    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
6790    #[serde(
6791        alias = "SubArea",
6792        rename = "subAreas",
6793        skip_serializing_if = "Vec::is_empty",
6794        default
6795    )]
6796    pub sub_areas: Vec<MeteSubAreaPressure>,
6797    /// 気圧
6798    #[serde(
6799        alias = "Pressure",
6800        rename = "pressures",
6801        skip_serializing_if = "Vec::is_empty",
6802        default
6803    )]
6804    pub pressures: Vec<EbPressure>,
6805    /// 起時
6806    ///
6807    /// 発生時刻を示す
6808    #[serde(
6809        alias = "Time",
6810        rename = "time",
6811        skip_serializing_if = "Option::is_none"
6812    )]
6813    pub time: Option<DateTime>,
6814    /// 注意事項・付加事項
6815    #[serde(
6816        alias = "Remark",
6817        rename = "remark",
6818        skip_serializing_if = "Option::is_none",
6819        deserialize_with = "trim_opt_string",
6820        default
6821    )]
6822    pub remark: Option<String>,
6823}
6824
6825#[derive(Debug, Clone, Serialize, Deserialize)]
6826pub struct MeteProbabilityOfPrecipitationPart {
6827    /// 降水確率
6828    #[serde(
6829        alias = "ProbabilityOfPrecipitation",
6830        rename = "probabilityOfPrecipitations"
6831    )]
6832    pub probability_of_precipitations: Vec<EbProbabilityOfPrecipitation>,
6833}
6834
6835#[derive(Debug, Clone, Serialize, Deserialize)]
6836pub struct MeteProperty {
6837    /// 気象要素名
6838    ///
6839    /// 量的予想などの種類を示す
6840    #[serde(alias = "Type", rename = "type", deserialize_with = "trim_string")]
6841    pub ty: String,
6842    /// 危険度部分
6843    ///
6844    /// 危険度についての諸要素を示す
6845    #[serde(
6846        alias = "SignificancyPart",
6847        rename = "significancyParts",
6848        skip_serializing_if = "Vec::is_empty",
6849        default
6850    )]
6851    pub significancy_parts: Vec<MeteSignificancyPart>,
6852    /// 予報期間を超えた危険度部分
6853    ///
6854    /// 予報期間を超えた危険度の継続についての諸要素を示す
6855    #[serde(
6856        alias = "SubsequentSignificancyPart",
6857        rename = "subsequentSignificancyParts",
6858        skip_serializing_if = "Vec::is_empty",
6859        default
6860    )]
6861    pub subsequent_significancy_parts: Vec<MeteSignificancyPart>,
6862    /// 警戒期間
6863    ///
6864    /// 対象要素の警戒期間を示す
6865    #[serde(
6866        alias = "WarningPeriod",
6867        rename = "warningPeriod",
6868        skip_serializing_if = "Option::is_none"
6869    )]
6870    pub warning_period: Option<MetePeriod>,
6871    /// 注意期間
6872    ///
6873    /// 対象要素の注意期間を示す
6874    #[serde(
6875        alias = "AdvisoryPeriod",
6876        rename = "advisoryPeriod",
6877        skip_serializing_if = "Option::is_none"
6878    )]
6879    pub advisory_period: Option<MetePeriod>,
6880    /// 基準到達期間
6881    ///
6882    /// 対象要素の基準到達期間を示す。
6883    #[serde(
6884        alias = "CriteriaPeriod",
6885        rename = "criteriaPeriod",
6886        skip_serializing_if = "Option::is_none"
6887    )]
6888    pub criteria_period: Option<MeteCriteriaPeriod>,
6889    /// 最大値発現時間情報
6890    ///
6891    /// 対象要素のピーク時間を文字列で示す
6892    #[serde(
6893        alias = "PeakTime",
6894        rename = "peakTime",
6895        skip_serializing_if = "Option::is_none"
6896    )]
6897    pub peak_time: Option<MeteForecastTerm>,
6898    /// 詳細予報
6899    ///
6900    /// 詳細予報についての諸要素を示す
6901    #[serde(
6902        alias = "DetailForecast",
6903        rename = "detailForecast",
6904        skip_serializing_if = "Option::is_none"
6905    )]
6906    pub detail_forecast: Option<MeteDetailForecast>,
6907    /// 風部分
6908    ///
6909    /// 風についての諸要素を示す
6910    #[serde(
6911        alias = "WindPart",
6912        rename = "windPart",
6913        skip_serializing_if = "Option::is_none"
6914    )]
6915    pub wind_part: Option<MeteWindPart>,
6916    /// 風向部分
6917    ///
6918    /// 風向についての諸要素を示す
6919    #[serde(
6920        alias = "WindDirectionPart",
6921        rename = "windDirectionPart",
6922        skip_serializing_if = "Option::is_none"
6923    )]
6924    pub wind_direction_part: Option<MeteWindDirectionPart>,
6925    /// 風速部分
6926    ///
6927    /// 風速についての諸要素を示す
6928    #[serde(
6929        alias = "WindSpeedPart",
6930        rename = "windSpeedPart",
6931        skip_serializing_if = "Option::is_none"
6932    )]
6933    pub wind_speed_part: Option<MeteWindSpeedPart>,
6934    /// 警戒領域部分
6935    ///
6936    /// 警戒領域部分についての諸要素を示す
6937    #[serde(
6938        alias = "WarningAreaPart",
6939        rename = "warningAreaParts",
6940        skip_serializing_if = "Vec::is_empty",
6941        default
6942    )]
6943    pub warning_area_parts: Vec<MeteWarningAreaPart>,
6944    /// 天気部分
6945    ///
6946    /// 天気についての諸要素を示す
6947    #[serde(
6948        alias = "WeatherPart",
6949        rename = "weatherPart",
6950        skip_serializing_if = "Option::is_none"
6951    )]
6952    pub weather_part: Option<MeteWeatherPart>,
6953    /// 気圧部分
6954    ///
6955    /// 気圧についての諸要素を示す
6956    #[serde(
6957        alias = "PressurePart",
6958        rename = "pressurePart",
6959        skip_serializing_if = "Option::is_none"
6960    )]
6961    pub pressure_part: Option<MetePressurePart>,
6962    /// 気温部分
6963    ///
6964    /// 気温についての諸要素を示す
6965    #[serde(
6966        alias = "TemperaturePart",
6967        rename = "temperaturePart",
6968        skip_serializing_if = "Option::is_none"
6969    )]
6970    pub temperature_part: Option<MeteTemperaturePart>,
6971    /// 視程部分
6972    ///
6973    /// 視程についての諸要素を示す
6974    #[serde(
6975        alias = "VisibilityPart",
6976        rename = "visibilityPart",
6977        skip_serializing_if = "Option::is_none"
6978    )]
6979    pub visibility_part: Option<MeteVisibilityPart>,
6980    /// 気象要因部分
6981    ///
6982    /// 気象要因についての諸要素を示す
6983    #[serde(
6984        alias = "SynopsisPart",
6985        rename = "synopsisPart",
6986        skip_serializing_if = "Option::is_none"
6987    )]
6988    pub synopsis_part: Option<MeteSynopsisPart>,
6989    /// 波高部分
6990    ///
6991    /// 波高についての諸要素を示す
6992    #[serde(
6993        alias = "WaveHeightPart",
6994        rename = "waveHeightPart",
6995        skip_serializing_if = "Option::is_none"
6996    )]
6997    pub wave_height_part: Option<MeteWaveHeightPart>,
6998    /// 降水量部分
6999    ///
7000    /// 降水量についての諸要素を示す
7001    #[serde(
7002        alias = "PrecipitationPart",
7003        rename = "precipitationParts",
7004        skip_serializing_if = "Vec::is_empty",
7005        default
7006    )]
7007    pub precipitation_parts: Vec<MetePrecipitationPart>,
7008    /// 雨量関連指数部分
7009    ///
7010    /// 雨量関連指数についての諸要素を示す
7011    #[serde(
7012        alias = "PrecipitationBasedIndexPart",
7013        rename = "precipitationBasedIndexParts",
7014        skip_serializing_if = "Vec::is_empty",
7015        default
7016    )]
7017    pub precipitation_based_index_parts: Vec<MetePrecipitationBasedIndexPart>,
7018    /// 降雪量部分
7019    ///
7020    /// 降雪量についての諸要素を示す
7021    #[serde(
7022        alias = "SnowfallDepthPart",
7023        rename = "snowfallDepthPart",
7024        skip_serializing_if = "Option::is_none"
7025    )]
7026    pub snowfall_depth_part: Option<MeteSnowfallDepthPart>,
7027    /// 積雪深部分
7028    ///
7029    /// 積雪深についての諸要素を示す
7030    #[serde(
7031        alias = "SnowDepthPart",
7032        rename = "snowDepthPart",
7033        skip_serializing_if = "Option::is_none"
7034    )]
7035    pub snow_depth_part: Option<MeteSnowDepthPart>,
7036    /// 湿度部分
7037    ///
7038    /// 湿度についての諸要素を示す
7039    #[serde(
7040        alias = "HumidityPart",
7041        rename = "humidityParts",
7042        skip_serializing_if = "Vec::is_empty",
7043        default
7044    )]
7045    pub humidity_parts: Vec<MeteHumidityPart>,
7046    /// 潮位部分
7047    ///
7048    /// 潮位についての諸要素を示す
7049    #[serde(
7050        alias = "TidalLevelPart",
7051        rename = "tidalLevelPart",
7052        skip_serializing_if = "Option::is_none"
7053    )]
7054    pub tidal_level_part: Option<MeteTidalLevelPart>,
7055    /// 日照部分
7056    ///
7057    /// 日照についての諸要素を示す
7058    #[serde(
7059        alias = "SunshinePart",
7060        rename = "sunshinePart",
7061        skip_serializing_if = "Option::is_none"
7062    )]
7063    pub sunshine_part: Option<MeteSunshinePart>,
7064    /// テロップ用天気予報用語部分
7065    ///
7066    /// テロップ用天気予報用語についての諸要素を示す
7067    #[serde(
7068        alias = "WeatherCodePart",
7069        rename = "weatherCodePart",
7070        skip_serializing_if = "Option::is_none"
7071    )]
7072    pub weather_code_part: Option<MeteWeatherCodePart>,
7073    /// 降水確率部分
7074    ///
7075    /// 降水確率についての諸要素を示す
7076    #[serde(
7077        alias = "ProbabilityOfPrecipitationPart",
7078        rename = "probabilityOfPrecipitationPart",
7079        skip_serializing_if = "Option::is_none"
7080    )]
7081    pub probability_of_precipitation_part: Option<MeteProbabilityOfPrecipitationPart>,
7082    /// 海氷部分
7083    ///
7084    /// 海氷についての諸要素を示す
7085    #[serde(
7086        alias = "SeaIcePart",
7087        rename = "seaIcePart",
7088        skip_serializing_if = "Option::is_none"
7089    )]
7090    pub sea_ice_part: Option<MeteSeaIcePart>,
7091    /// 着氷部分
7092    ///
7093    /// 着氷についての諸要素を示す
7094    #[serde(
7095        alias = "IcingPart",
7096        rename = "icingPart",
7097        skip_serializing_if = "Option::is_none"
7098    )]
7099    pub icing_part: Option<MeteIcingPart>,
7100    /// 信頼度階級部分
7101    ///
7102    /// 信頼度階級についての諸要素を示す
7103    #[serde(
7104        alias = "ReliabilityClassPart",
7105        rename = "reliabilityClassPart",
7106        skip_serializing_if = "Option::is_none"
7107    )]
7108    pub reliability_class_part: Option<MeteReliabilityClassPart>,
7109    /// 信頼度数値部分
7110    ///
7111    /// 信頼度数値についての諸要素を示す
7112    #[serde(
7113        alias = "ReliabilityValuePart",
7114        rename = "reliabilityValuePart",
7115        skip_serializing_if = "Option::is_none"
7116    )]
7117    pub reliability_value_part: Option<MeteReliabilityValuePart>,
7118    /// 階級部分
7119    ///
7120    /// 階級についての諸要素を示す
7121    #[serde(
7122        alias = "ClassPart",
7123        rename = "classPart",
7124        skip_serializing_if = "Option::is_none"
7125    )]
7126    pub class_part: Option<MeteClassPart>,
7127    /// 警報級の可能性部分
7128    ///
7129    /// 警報級の可能性についての諸要素を示す
7130    #[serde(
7131        alias = "PossibilityRankOfWarningPart",
7132        rename = "possibilityRankOfWarningPart",
7133        skip_serializing_if = "Option::is_none"
7134    )]
7135    pub possibility_rank_of_warning_part: Option<MetePossibilityRankOfWarningPart>,
7136    /// 台風呼名部分
7137    ///
7138    /// 台風呼名についての諸要素を示す
7139    #[serde(
7140        alias = "TyphoonNamePart",
7141        rename = "typhoonNamePart",
7142        skip_serializing_if = "Option::is_none"
7143    )]
7144    pub typhoon_name_part: Option<MeteTyphoonNamePart>,
7145    /// 中心部分
7146    ///
7147    /// 台風や低気圧等の中心についての諸要素を示す
7148    #[serde(
7149        alias = "CenterPart",
7150        rename = "centerPart",
7151        skip_serializing_if = "Option::is_none"
7152    )]
7153    pub center_part: Option<MeteCenterPart>,
7154    /// 座標部分
7155    ///
7156    /// 座標についての諸要素を示す
7157    #[serde(
7158        alias = "CoordinatePart",
7159        rename = "coordinatePart",
7160        skip_serializing_if = "Option::is_none"
7161    )]
7162    pub coordinate_part: Option<MeteCoordinatePart>,
7163    /// 等圧線部分
7164    ///
7165    /// 等圧線についての諸要素を示す
7166    #[serde(
7167        alias = "IsobarPart",
7168        rename = "isobarPart",
7169        skip_serializing_if = "Option::is_none"
7170    )]
7171    pub isobar_part: Option<MeteIsobarPart>,
7172    /// 水位部分
7173    ///
7174    /// 水位についての諸要素を示す
7175    #[serde(
7176        alias = "WaterLevelPart",
7177        rename = "waterLevelPart",
7178        skip_serializing_if = "Option::is_none"
7179    )]
7180    pub water_level_part: Option<MeteWaterLevelPart>,
7181    /// 浸水部分
7182    ///
7183    /// 浸水についての諸要素を示す
7184    #[serde(
7185        alias = "FloodAssumptionTable",
7186        rename = "floodAssumptionTable",
7187        skip_serializing_if = "Option::is_none"
7188    )]
7189    pub flood_assumption_table: Option<MeteFloodAssumptionTable>,
7190    /// 流量部分
7191    ///
7192    /// 流量についての諸要素を示す
7193    #[serde(
7194        alias = "DischargePart",
7195        rename = "dischargePart",
7196        skip_serializing_if = "Option::is_none"
7197    )]
7198    pub discharge_part: Option<MeteDischargePart>,
7199    /// 天候の特徴
7200    ///
7201    /// 「出現の可能性が最も大きい天候」並びに「特徴のある気温、降水量、日照時間等の確率」を示す
7202    #[serde(
7203        alias = "ClimateFeaturePart",
7204        rename = "climateFeatureParts",
7205        skip_serializing_if = "Vec::is_empty",
7206        default
7207    )]
7208    pub climate_feature_parts: Vec<EbClimateFeature>,
7209    /// 気温、降水量、日照時間等の、値と平年差など
7210    ///
7211    /// 気温、降水量、日照時間等の、値と平年差等を示す
7212    #[serde(
7213        alias = "ClimateValuesPart",
7214        rename = "climateValuesParts",
7215        skip_serializing_if = "Vec::is_empty",
7216        default
7217    )]
7218    pub climate_values_parts: Vec<MeteClimateValuesPart>,
7219    /// 気温、降水量、日照時間等の確率
7220    #[serde(
7221        alias = "ClimateProbabilityValuesPart",
7222        rename = "climateProbabilityValuesPart",
7223        skip_serializing_if = "Option::is_none"
7224    )]
7225    pub climate_probability_values_part: Option<MeteClimateProbabilityValuesPart>,
7226    /// 事象の月日
7227    ///
7228    /// 事象の月日(梅雨入り見込みの日付、等)
7229    #[serde(
7230        alias = "EventDatePart",
7231        rename = "eventDatePart",
7232        skip_serializing_if = "Option::is_none"
7233    )]
7234    pub event_date_part: Option<MeteEventDatePart>,
7235    /// 平年値の階級閾値
7236    ///
7237    /// 週間予報で7日間降水量の平年値の階級閾値を示す
7238    #[serde(
7239        alias = "PrecipitationClassPart",
7240        rename = "precipitationClassPart",
7241        skip_serializing_if = "Option::is_none"
7242    )]
7243    pub precipitation_class_part: Option<EbClassThresholdOfAverage>,
7244    /// 太陽天頂角部分
7245    ///
7246    /// 太陽天頂角
7247    #[serde(
7248        alias = "SolarZenithAnglePart",
7249        rename = "solarZenithAnglePart",
7250        skip_serializing_if = "Option::is_none"
7251    )]
7252    pub solar_zenith_angle_part: Option<MeteSolarZenithAnglePart>,
7253    /// UVインデックス部分
7254    ///
7255    /// UVインデックス
7256    #[serde(
7257        alias = "UvIndexPart",
7258        rename = "uvIndexPart",
7259        skip_serializing_if = "Option::is_none"
7260    )]
7261    pub uv_index_part: Option<MeteUvIndexPart>,
7262    /// 暴風域に入る確率
7263    ///
7264    /// 暴風域(風速50kt以上)に入る確率
7265    #[serde(
7266        alias = "FiftyKtWindProbabilityPart",
7267        rename = "fiftyKtWindProbabilityParts",
7268        skip_serializing_if = "Vec::is_empty",
7269        default
7270    )]
7271    pub fifty_kt_wind_probability_parts: Vec<MeteFiftyKtWindProbabilityPart>,
7272    /// 事象部
7273    ///
7274    /// 発生したもしくは発生が見込まれる事象を示す
7275    #[serde(
7276        alias = "EventPart",
7277        rename = "eventParts",
7278        skip_serializing_if = "Vec::is_empty",
7279        default
7280    )]
7281    pub event_parts: Vec<MeteEventPart>,
7282    /// 汎用で利用するテキスト形式
7283    ///
7284    /// テキスト形式で内容を示す。汎用で利用する。
7285    #[serde(
7286        alias = "Text",
7287        rename = "texts",
7288        skip_serializing_if = "Vec::is_empty",
7289        default
7290    )]
7291    pub texts: Vec<EbReferableString>,
7292}
7293
7294#[derive(Debug, Clone, Serialize, Deserialize)]
7295pub struct MeteReliabilityClassPart {
7296    /// 信頼度階級
7297    ///
7298    /// 信頼度の階級を示す
7299    #[serde(alias = "ReliabilityClass", rename = "reliabilityClasses")]
7300    pub reliability_classes: Vec<EbReliabilityClass>,
7301}
7302
7303#[derive(Debug, Clone, Serialize, Deserialize)]
7304pub struct MeteReliabilityValuePart {
7305    /// 信頼度数値
7306    ///
7307    /// 信頼度の数値を示す
7308    #[serde(alias = "ReliabilityValue", rename = "reliabilityValues")]
7309    pub reliability_values: Vec<EbReliabilityValue>,
7310}
7311
7312#[derive(Debug, Clone, Serialize, Deserialize)]
7313pub struct MeteSeaIcePart {
7314    /// 文章形式の表現
7315    ///
7316    /// 海氷の状態を文章形式で示す
7317    #[serde(
7318        alias = "Sentence",
7319        rename = "sentence",
7320        skip_serializing_if = "Option::is_none"
7321    )]
7322    pub sentence: Option<MeteSentence>,
7323    /// 卓越もしくは変化前
7324    ///
7325    /// 卓越する内容、もしくは変化前の内容を示す
7326    #[serde(
7327        alias = "Base",
7328        rename = "base",
7329        skip_serializing_if = "Option::is_none"
7330    )]
7331    pub base: Option<MeteBaseSeaIce>,
7332    /// 断続現象
7333    ///
7334    /// 断続的に発生する現象の内容を示す
7335    #[serde(
7336        alias = "Temporary",
7337        rename = "temporaries",
7338        skip_serializing_if = "Vec::is_empty",
7339        default
7340    )]
7341    pub temporaries: Vec<MeteBaseSeaIce>,
7342    /// 変化後
7343    ///
7344    /// 変化後の内容を示す
7345    #[serde(
7346        alias = "Becoming",
7347        rename = "becomings",
7348        skip_serializing_if = "Vec::is_empty",
7349        default
7350    )]
7351    pub becomings: Vec<MeteBaseSeaIce>,
7352    /// 地域
7353    ///
7354    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
7355    #[serde(
7356        alias = "SubArea",
7357        rename = "subAreas",
7358        skip_serializing_if = "Vec::is_empty",
7359        default
7360    )]
7361    pub sub_areas: Vec<MeteSubAreaSeaIce>,
7362    /// 海氷
7363    #[serde(
7364        alias = "SeaIce",
7365        rename = "seaIces",
7366        skip_serializing_if = "Vec::is_empty",
7367        default
7368    )]
7369    pub sea_ices: Vec<EbSeaIce>,
7370    /// 起時
7371    ///
7372    /// 発生時刻を示す
7373    #[serde(
7374        alias = "Time",
7375        rename = "time",
7376        skip_serializing_if = "Option::is_none"
7377    )]
7378    pub time: Option<DateTime>,
7379    /// 注意事項・付加事項
7380    #[serde(
7381        alias = "Remark",
7382        rename = "remark",
7383        skip_serializing_if = "Option::is_none",
7384        deserialize_with = "trim_opt_string",
7385        default
7386    )]
7387    pub remark: Option<String>,
7388}
7389
7390#[derive(Debug, Clone, Serialize, Deserialize)]
7391pub struct MeteSentence {
7392    #[serde(
7393        alias = "$text",
7394        rename = "value",
7395        default,
7396        deserialize_with = "trim_string"
7397    )]
7398    pub value: String,
7399    /// 種類
7400    ///
7401    /// この要素の種類を示す
7402    #[serde(
7403        alias = "@type",
7404        rename = "type",
7405        skip_serializing_if = "Option::is_none"
7406    )]
7407    pub ty: Option<String>,
7408}
7409
7410#[derive(Debug, Clone, Serialize, Deserialize)]
7411pub struct MeteSequenceTidalLevel {
7412    /// 時系列での参照番号
7413    ///
7414    /// 時系列で表現する場合の参照番号を示す。
7415    #[serde(
7416        alias = "@refID",
7417        rename = "refID",
7418        skip_serializing_if = "Option::is_none"
7419    )]
7420    pub ref_id: Option<u8>,
7421    /// 文章形式の表現
7422    ///
7423    /// 領域の一部の区域の内容を文章形式で示す
7424    #[serde(
7425        alias = "Sentence",
7426        rename = "sentence",
7427        skip_serializing_if = "Option::is_none"
7428    )]
7429    pub sentence: Option<MeteSentence>,
7430    /// 変化を表す時要素
7431    ///
7432    /// 変化を表す時間表現を示す
7433    #[serde(
7434        alias = "TimeModifier",
7435        rename = "timeModifier",
7436        skip_serializing_if = "Option::is_none",
7437        deserialize_with = "trim_opt_string",
7438        default
7439    )]
7440    pub time_modifier: Option<String>,
7441    /// 潮位
7442    #[serde(
7443        alias = "TidalLevel",
7444        rename = "tidalLevels",
7445        skip_serializing_if = "Vec::is_empty",
7446        default
7447    )]
7448    pub tidal_levels: Vec<EbTidalLevel>,
7449    /// 周期
7450    ///
7451    /// 潮位変動の周期を示す
7452    #[serde(
7453        alias = "TidalPeriod",
7454        rename = "tidalPeriods",
7455        skip_serializing_if = "Vec::is_empty",
7456        default
7457    )]
7458    pub tidal_periods: Vec<EbTidalPeriod>,
7459    /// 起時
7460    ///
7461    /// 発生時刻を示す
7462    #[serde(
7463        alias = "Time",
7464        rename = "time",
7465        skip_serializing_if = "Option::is_none"
7466    )]
7467    pub time: Option<DateTime>,
7468    /// 注意事項・付加事項
7469    #[serde(
7470        alias = "Remark",
7471        rename = "remark",
7472        skip_serializing_if = "Option::is_none",
7473        deserialize_with = "trim_opt_string",
7474        default
7475    )]
7476    pub remark: Option<String>,
7477}
7478
7479#[derive(Debug, Clone, Serialize, Deserialize)]
7480pub struct MeteSignificancy {
7481    /// 分類
7482    ///
7483    /// 危険度又は警戒レベルの分類を示す
7484    #[serde(alias = "@type", rename = "type")]
7485    pub ty: String,
7486    /// 時系列での参照番号
7487    ///
7488    /// 時系列で表現する場合の参照番号を示す。
7489    #[serde(
7490        alias = "@refID",
7491        rename = "refID",
7492        skip_serializing_if = "Option::is_none"
7493    )]
7494    pub ref_id: Option<u8>,
7495    /// 文章形式の表現
7496    ///
7497    /// 予報期間を超えて危険度又は警戒レベルが継続することを文章形式で示す
7498    #[serde(
7499        alias = "Sentence",
7500        rename = "sentence",
7501        skip_serializing_if = "Option::is_none"
7502    )]
7503    pub sentence: Option<MeteSentence>,
7504    /// 危険度の内容
7505    ///
7506    /// 危険度の内容を記述
7507    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
7508    pub name: String,
7509    /// 危険度コード
7510    ///
7511    /// Name要素に対応したコードを示す
7512    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
7513    pub code: String,
7514    /// 状況の補足説明
7515    ///
7516    /// 危険度の状況を記述する
7517    #[serde(
7518        alias = "Condition",
7519        rename = "condition",
7520        skip_serializing_if = "Option::is_none",
7521        deserialize_with = "trim_opt_string",
7522        default
7523    )]
7524    pub condition: Option<String>,
7525    /// 注意事項・付加事項
7526    ///
7527    /// 注意事項・付加事項等を示す
7528    #[serde(
7529        alias = "Remark",
7530        rename = "remark",
7531        skip_serializing_if = "Option::is_none",
7532        deserialize_with = "trim_opt_string",
7533        default
7534    )]
7535    pub remark: Option<String>,
7536}
7537
7538#[derive(Debug, Clone, Serialize, Deserialize)]
7539pub struct MeteSignificancyPart {
7540    /// 卓越もしくは変化前
7541    ///
7542    /// 卓越する内容、もしくは変化前の内容を示す
7543    #[serde(alias = "Base", rename = "base")]
7544    pub base: MeteBaseSignificancy,
7545}
7546
7547#[derive(Debug, Clone, Serialize, Deserialize)]
7548pub struct MeteSnowDepthPart {
7549    /// 文章形式の表現
7550    ///
7551    /// 積雪深の内容を文章形式で示す
7552    #[serde(
7553        alias = "Sentence",
7554        rename = "sentence",
7555        skip_serializing_if = "Option::is_none"
7556    )]
7557    pub sentence: Option<MeteSentence>,
7558    /// 卓越もしくは変化前
7559    ///
7560    /// 卓越する内容、もしくは変化前の内容を示す
7561    #[serde(
7562        alias = "Base",
7563        rename = "base",
7564        skip_serializing_if = "Option::is_none"
7565    )]
7566    pub base: Option<MeteBaseSnowDepth>,
7567    /// 積雪深
7568    #[serde(
7569        alias = "SnowDepth",
7570        rename = "snowDepths",
7571        skip_serializing_if = "Vec::is_empty",
7572        default
7573    )]
7574    pub snow_depths: Vec<EbSnowDepth>,
7575    /// 起時
7576    ///
7577    /// 発生時刻を示す
7578    #[serde(
7579        alias = "Time",
7580        rename = "time",
7581        skip_serializing_if = "Option::is_none"
7582    )]
7583    pub time: Option<DateTime>,
7584    /// 注意事項・付加事項
7585    #[serde(
7586        alias = "Remark",
7587        rename = "remark",
7588        skip_serializing_if = "Option::is_none",
7589        deserialize_with = "trim_opt_string",
7590        default
7591    )]
7592    pub remark: Option<String>,
7593}
7594
7595#[derive(Debug, Clone, Serialize, Deserialize)]
7596pub struct MeteSnowfallDepthPart {
7597    /// 時系列での参照番号
7598    ///
7599    /// 天気予報を時系列で表現する場合の参照番号
7600    #[serde(
7601        alias = "@refID",
7602        rename = "refID",
7603        skip_serializing_if = "Option::is_none"
7604    )]
7605    pub ref_id: Option<u8>,
7606    /// 文章形式の表現
7607    ///
7608    /// 降雪量部分の内容を文章形式で示す
7609    #[serde(
7610        alias = "Sentence",
7611        rename = "sentence",
7612        skip_serializing_if = "Option::is_none"
7613    )]
7614    pub sentence: Option<MeteSentence>,
7615    /// 卓越もしくは変化前
7616    ///
7617    /// 卓越する内容、もしくは変化前の内容を示す
7618    #[serde(
7619        alias = "Base",
7620        rename = "base",
7621        skip_serializing_if = "Option::is_none"
7622    )]
7623    pub base: Option<MeteBaseSnowfallDepth>,
7624    /// 断続現象
7625    ///
7626    /// 断続的に発生する現象の内容を示す
7627    #[serde(
7628        alias = "Temporary",
7629        rename = "temporaries",
7630        skip_serializing_if = "Vec::is_empty",
7631        default
7632    )]
7633    pub temporaries: Vec<MeteBaseSnowfallDepth>,
7634    /// 変化後
7635    ///
7636    /// 変化後の内容を示す
7637    #[serde(
7638        alias = "Becoming",
7639        rename = "becomings",
7640        skip_serializing_if = "Vec::is_empty",
7641        default
7642    )]
7643    pub becomings: Vec<MeteBaseSnowfallDepth>,
7644    /// 地域
7645    ///
7646    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
7647    #[serde(
7648        alias = "SubArea",
7649        rename = "subAreas",
7650        skip_serializing_if = "Vec::is_empty",
7651        default
7652    )]
7653    pub sub_areas: Vec<MeteSubAreaSnowfallDepth>,
7654    /// 降雪量
7655    #[serde(
7656        alias = "SnowfallDepth",
7657        rename = "snowfallDepths",
7658        skip_serializing_if = "Vec::is_empty",
7659        default
7660    )]
7661    pub snowfall_depths: Vec<EbSnowfallDepth>,
7662    /// 起時
7663    ///
7664    /// 発生時刻を示す
7665    #[serde(
7666        alias = "Time",
7667        rename = "time",
7668        skip_serializing_if = "Option::is_none"
7669    )]
7670    pub time: Option<DateTime>,
7671    /// 注意事項・付加事項
7672    #[serde(
7673        alias = "Remark",
7674        rename = "remark",
7675        skip_serializing_if = "Option::is_none",
7676        deserialize_with = "trim_opt_string",
7677        default
7678    )]
7679    pub remark: Option<String>,
7680}
7681
7682#[derive(Debug, Clone, Serialize, Deserialize)]
7683pub struct MeteSolarZenithAnglePart {
7684    /// 太陽天頂角
7685    #[serde(alias = "SolarZenithAngle", rename = "solarZenithAngles")]
7686    pub solar_zenith_angles: Vec<EbSolarZenithAngle>,
7687}
7688
7689#[derive(Debug, Clone, Serialize, Deserialize)]
7690pub struct MeteStation {
7691    /// 観測官署名称
7692    ///
7693    /// 都道府県市町村名につづけて気象官署名を記載する
7694    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
7695    pub name: String,
7696    /// 観測官署コード
7697    #[serde(alias = "Code", rename = "codes")]
7698    pub codes: Vec<MeteStationCode>,
7699    /// 観測官署の場所
7700    #[serde(
7701        alias = "Location",
7702        rename = "location",
7703        skip_serializing_if = "Option::is_none",
7704        deserialize_with = "trim_opt_string",
7705        default
7706    )]
7707    pub location: Option<String>,
7708    /// 観測場所の状況
7709    ///
7710    /// 観測場所の状況について補足が必要な場合その内容を示す
7711    #[serde(
7712        alias = "Status",
7713        rename = "status",
7714        skip_serializing_if = "Option::is_none"
7715    )]
7716    pub status: Option<String>,
7717    /// 観測官署の座標
7718    #[serde(
7719        alias = "Coordinate",
7720        rename = "coordinates",
7721        skip_serializing_if = "Vec::is_empty",
7722        default
7723    )]
7724    pub coordinates: Vec<EbCoordinate>,
7725}
7726
7727#[derive(Debug, Clone, Serialize, Deserialize)]
7728pub struct MeteStationCode {
7729    #[serde(
7730        alias = "$text",
7731        rename = "value",
7732        default,
7733        deserialize_with = "trim_string"
7734    )]
7735    pub value: String,
7736    /// 観測官署コード種別
7737    ///
7738    /// この要素のコード種別を示す
7739    #[serde(
7740        alias = "@type",
7741        rename = "type",
7742        skip_serializing_if = "Option::is_none"
7743    )]
7744    pub ty: Option<String>,
7745}
7746
7747#[derive(Debug, Clone, Serialize, Deserialize)]
7748pub struct MeteStations {
7749    /// コード種別
7750    ///
7751    /// この要素の子要素であるStation要素のCode要素のコード種別を示す
7752    #[serde(
7753        alias = "@codeType",
7754        rename = "codeType",
7755        skip_serializing_if = "Option::is_none"
7756    )]
7757    pub code_type: Option<String>,
7758    /// 対象地点
7759    ///
7760    /// 個々の対象地点を示す。
7761    #[serde(alias = "Station", rename = "stations")]
7762    pub stations: Vec<MeteStation>,
7763}
7764
7765#[derive(Debug, Clone, Serialize, Deserialize)]
7766pub struct MeteSubAreaHumidity {
7767    /// 地域の名称
7768    ///
7769    /// 一部領域の名称を示す
7770    #[serde(
7771        alias = "AreaName",
7772        rename = "areaName",
7773        skip_serializing_if = "Option::is_none",
7774        deserialize_with = "trim_opt_string",
7775        default
7776    )]
7777    pub area_name: Option<String>,
7778    /// 文章形式の表現
7779    ///
7780    /// 一部領域の内容を文章形式で示す
7781    #[serde(
7782        alias = "Sentence",
7783        rename = "sentence",
7784        skip_serializing_if = "Option::is_none"
7785    )]
7786    pub sentence: Option<MeteSentence>,
7787    /// 卓越もしくは変化前
7788    ///
7789    /// 卓越する内容、もしくは変化前の内容を示す
7790    #[serde(
7791        alias = "Base",
7792        rename = "base",
7793        skip_serializing_if = "Option::is_none"
7794    )]
7795    pub base: Option<MeteBaseHumidity>,
7796    /// 断続現象
7797    ///
7798    /// 断続的に発生する現象の内容を示す
7799    #[serde(
7800        alias = "Temporary",
7801        rename = "temporaries",
7802        skip_serializing_if = "Vec::is_empty",
7803        default
7804    )]
7805    pub temporaries: Vec<MeteBaseHumidity>,
7806    /// 変化後
7807    ///
7808    /// 変化後の内容を示す
7809    #[serde(
7810        alias = "Becoming",
7811        rename = "becomings",
7812        skip_serializing_if = "Vec::is_empty",
7813        default
7814    )]
7815    pub becomings: Vec<MeteBaseHumidity>,
7816    /// 地域
7817    ///
7818    /// 領域の一部の区域の内容を示す
7819    #[serde(
7820        alias = "Local",
7821        rename = "locals",
7822        skip_serializing_if = "Vec::is_empty",
7823        default
7824    )]
7825    pub locals: Vec<MeteLocalHumidity>,
7826    /// 湿度
7827    #[serde(
7828        alias = "Humidity",
7829        rename = "humidities",
7830        skip_serializing_if = "Vec::is_empty",
7831        default
7832    )]
7833    pub humidities: Vec<EbHumidity>,
7834    /// 起時
7835    ///
7836    /// 発生時刻を示す
7837    #[serde(
7838        alias = "Time",
7839        rename = "time",
7840        skip_serializing_if = "Option::is_none"
7841    )]
7842    pub time: Option<DateTime>,
7843    /// 注意事項・付加事項
7844    #[serde(
7845        alias = "Remark",
7846        rename = "remark",
7847        skip_serializing_if = "Option::is_none",
7848        deserialize_with = "trim_opt_string",
7849        default
7850    )]
7851    pub remark: Option<String>,
7852}
7853
7854#[derive(Debug, Clone, Serialize, Deserialize)]
7855pub struct MeteSubAreaIcing {
7856    /// 地域の名称
7857    ///
7858    /// 一部領域の名称を示す
7859    #[serde(
7860        alias = "AreaName",
7861        rename = "areaName",
7862        skip_serializing_if = "Option::is_none",
7863        deserialize_with = "trim_opt_string",
7864        default
7865    )]
7866    pub area_name: Option<String>,
7867    /// 文章形式の表現
7868    ///
7869    /// 一部領域の内容を文章形式で示す
7870    #[serde(
7871        alias = "Sentence",
7872        rename = "sentence",
7873        skip_serializing_if = "Option::is_none"
7874    )]
7875    pub sentence: Option<MeteSentence>,
7876    /// 卓越もしくは変化前
7877    ///
7878    /// 卓越する内容、もしくは変化前の内容を示す
7879    #[serde(
7880        alias = "Base",
7881        rename = "base",
7882        skip_serializing_if = "Option::is_none"
7883    )]
7884    pub base: Option<MeteBaseIcing>,
7885    /// 断続現象
7886    ///
7887    /// 断続的に発生する現象の内容を示す
7888    #[serde(
7889        alias = "Temporary",
7890        rename = "temporaries",
7891        skip_serializing_if = "Vec::is_empty",
7892        default
7893    )]
7894    pub temporaries: Vec<MeteBaseIcing>,
7895    /// 変化後
7896    ///
7897    /// 変化後の内容を示す
7898    #[serde(
7899        alias = "Becoming",
7900        rename = "becomings",
7901        skip_serializing_if = "Vec::is_empty",
7902        default
7903    )]
7904    pub becomings: Vec<MeteBaseIcing>,
7905    /// 地域
7906    ///
7907    /// 領域の一部の区域の内容を示す
7908    #[serde(
7909        alias = "Local",
7910        rename = "locals",
7911        skip_serializing_if = "Vec::is_empty",
7912        default
7913    )]
7914    pub locals: Vec<MeteLocalIcing>,
7915    /// 着氷
7916    #[serde(
7917        alias = "Icing",
7918        rename = "icings",
7919        skip_serializing_if = "Vec::is_empty",
7920        default
7921    )]
7922    pub icings: Vec<EbIcing>,
7923    /// 起時
7924    ///
7925    /// 発生時刻を示す
7926    #[serde(
7927        alias = "Time",
7928        rename = "time",
7929        skip_serializing_if = "Option::is_none"
7930    )]
7931    pub time: Option<DateTime>,
7932    /// 注意事項・付加事項
7933    #[serde(
7934        alias = "Remark",
7935        rename = "remark",
7936        skip_serializing_if = "Option::is_none",
7937        deserialize_with = "trim_opt_string",
7938        default
7939    )]
7940    pub remark: Option<String>,
7941}
7942
7943#[derive(Debug, Clone, Serialize, Deserialize)]
7944pub struct MeteSubAreaPrecipitation {
7945    /// 地域の名称
7946    ///
7947    /// 一部領域の名称を示す
7948    #[serde(
7949        alias = "AreaName",
7950        rename = "areaName",
7951        skip_serializing_if = "Option::is_none",
7952        deserialize_with = "trim_opt_string",
7953        default
7954    )]
7955    pub area_name: Option<String>,
7956    /// 文章形式の表現
7957    ///
7958    /// 一部領域の内容を文章形式で示す
7959    #[serde(
7960        alias = "Sentence",
7961        rename = "sentence",
7962        skip_serializing_if = "Option::is_none"
7963    )]
7964    pub sentence: Option<MeteSentence>,
7965    /// 卓越もしくは変化前
7966    ///
7967    /// 卓越する内容、もしくは変化前の内容を示す
7968    #[serde(
7969        alias = "Base",
7970        rename = "base",
7971        skip_serializing_if = "Option::is_none"
7972    )]
7973    pub base: Option<MeteBasePrecipitation>,
7974    /// 断続現象
7975    ///
7976    /// 断続的に発生する現象の内容を示す
7977    #[serde(
7978        alias = "Temporary",
7979        rename = "temporaries",
7980        skip_serializing_if = "Vec::is_empty",
7981        default
7982    )]
7983    pub temporaries: Vec<MeteBasePrecipitation>,
7984    /// 変化後
7985    ///
7986    /// 変化後の内容を示す
7987    #[serde(
7988        alias = "Becoming",
7989        rename = "becomings",
7990        skip_serializing_if = "Vec::is_empty",
7991        default
7992    )]
7993    pub becomings: Vec<MeteBasePrecipitation>,
7994    /// 地域
7995    ///
7996    /// 領域の一部の区域の内容を示す
7997    #[serde(
7998        alias = "Local",
7999        rename = "locals",
8000        skip_serializing_if = "Vec::is_empty",
8001        default
8002    )]
8003    pub locals: Vec<MeteLocalPrecipitation>,
8004    /// 降水量
8005    #[serde(
8006        alias = "Precipitation",
8007        rename = "precipitations",
8008        skip_serializing_if = "Vec::is_empty",
8009        default
8010    )]
8011    pub precipitations: Vec<EbPrecipitation>,
8012    /// 起時
8013    ///
8014    /// 発生時刻を示す
8015    #[serde(
8016        alias = "Time",
8017        rename = "time",
8018        skip_serializing_if = "Option::is_none"
8019    )]
8020    pub time: Option<DateTime>,
8021    /// 注意事項・付加事項
8022    #[serde(
8023        alias = "Remark",
8024        rename = "remark",
8025        skip_serializing_if = "Option::is_none",
8026        deserialize_with = "trim_opt_string",
8027        default
8028    )]
8029    pub remark: Option<String>,
8030}
8031
8032#[derive(Debug, Clone, Serialize, Deserialize)]
8033pub struct MeteSubAreaPressure {
8034    /// 地域の名称
8035    ///
8036    /// 一部領域の名称を示す
8037    #[serde(
8038        alias = "AreaName",
8039        rename = "areaName",
8040        skip_serializing_if = "Option::is_none",
8041        deserialize_with = "trim_opt_string",
8042        default
8043    )]
8044    pub area_name: Option<String>,
8045    /// 文章形式の表現
8046    ///
8047    /// 一部領域の内容を文章形式で示す
8048    #[serde(
8049        alias = "Sentence",
8050        rename = "sentence",
8051        skip_serializing_if = "Option::is_none"
8052    )]
8053    pub sentence: Option<MeteSentence>,
8054    /// 卓越もしくは変化前
8055    ///
8056    /// 卓越する内容、もしくは変化前の内容を示す
8057    #[serde(
8058        alias = "Base",
8059        rename = "base",
8060        skip_serializing_if = "Option::is_none"
8061    )]
8062    pub base: Option<MeteBasePressure>,
8063    /// 断続現象
8064    ///
8065    /// 断続的に発生する現象の内容を示す
8066    #[serde(
8067        alias = "Temporary",
8068        rename = "temporaries",
8069        skip_serializing_if = "Vec::is_empty",
8070        default
8071    )]
8072    pub temporaries: Vec<MeteBasePressure>,
8073    /// 変化後
8074    ///
8075    /// 変化後の内容を示す
8076    #[serde(
8077        alias = "Becoming",
8078        rename = "becomings",
8079        skip_serializing_if = "Vec::is_empty",
8080        default
8081    )]
8082    pub becomings: Vec<MeteBasePressure>,
8083    /// 地域
8084    ///
8085    /// 領域の一部の区域の内容を示す
8086    #[serde(
8087        alias = "Local",
8088        rename = "locals",
8089        skip_serializing_if = "Vec::is_empty",
8090        default
8091    )]
8092    pub locals: Vec<MeteLocalPressure>,
8093    /// 気圧
8094    #[serde(
8095        alias = "Pressure",
8096        rename = "pressures",
8097        skip_serializing_if = "Vec::is_empty",
8098        default
8099    )]
8100    pub pressures: Vec<EbPressure>,
8101    /// 起時
8102    ///
8103    /// 発生時刻を示す
8104    #[serde(
8105        alias = "Time",
8106        rename = "time",
8107        skip_serializing_if = "Option::is_none"
8108    )]
8109    pub time: Option<DateTime>,
8110    /// 注意事項・付加事項
8111    #[serde(
8112        alias = "Remark",
8113        rename = "remark",
8114        skip_serializing_if = "Option::is_none",
8115        deserialize_with = "trim_opt_string",
8116        default
8117    )]
8118    pub remark: Option<String>,
8119}
8120
8121#[derive(Debug, Clone, Serialize, Deserialize)]
8122pub struct MeteSubAreaSeaIce {
8123    /// 地域の名称
8124    ///
8125    /// 一部領域の名称を示す
8126    #[serde(
8127        alias = "AreaName",
8128        rename = "areaName",
8129        skip_serializing_if = "Option::is_none",
8130        deserialize_with = "trim_opt_string",
8131        default
8132    )]
8133    pub area_name: Option<String>,
8134    /// 文章形式の表現
8135    ///
8136    /// 一部領域の内容を文章形式で示す
8137    #[serde(
8138        alias = "Sentence",
8139        rename = "sentence",
8140        skip_serializing_if = "Option::is_none"
8141    )]
8142    pub sentence: Option<MeteSentence>,
8143    /// 卓越もしくは変化前
8144    ///
8145    /// 卓越する内容、もしくは変化前の内容を示す
8146    #[serde(
8147        alias = "Base",
8148        rename = "base",
8149        skip_serializing_if = "Option::is_none"
8150    )]
8151    pub base: Option<MeteBaseSeaIce>,
8152    /// 断続現象
8153    ///
8154    /// 断続的に発生する現象の内容を示す
8155    #[serde(
8156        alias = "Temporary",
8157        rename = "temporaries",
8158        skip_serializing_if = "Vec::is_empty",
8159        default
8160    )]
8161    pub temporaries: Vec<MeteBaseSeaIce>,
8162    /// 変化後
8163    ///
8164    /// 変化後の内容を示す
8165    #[serde(
8166        alias = "Becoming",
8167        rename = "becomings",
8168        skip_serializing_if = "Vec::is_empty",
8169        default
8170    )]
8171    pub becomings: Vec<MeteBaseSeaIce>,
8172    /// 地域
8173    ///
8174    /// 領域の一部の区域の内容を示す
8175    #[serde(
8176        alias = "Local",
8177        rename = "locals",
8178        skip_serializing_if = "Vec::is_empty",
8179        default
8180    )]
8181    pub locals: Vec<MeteLocalSeaIce>,
8182    /// 海氷
8183    #[serde(
8184        alias = "SeaIce",
8185        rename = "seaIces",
8186        skip_serializing_if = "Vec::is_empty",
8187        default
8188    )]
8189    pub sea_ices: Vec<EbSeaIce>,
8190    /// 起時
8191    ///
8192    /// 発生時刻を示す
8193    #[serde(
8194        alias = "Time",
8195        rename = "time",
8196        skip_serializing_if = "Option::is_none"
8197    )]
8198    pub time: Option<DateTime>,
8199    /// 注意事項・付加事項
8200    #[serde(
8201        alias = "Remark",
8202        rename = "remark",
8203        skip_serializing_if = "Option::is_none",
8204        deserialize_with = "trim_opt_string",
8205        default
8206    )]
8207    pub remark: Option<String>,
8208}
8209
8210#[derive(Debug, Clone, Serialize, Deserialize)]
8211pub struct MeteSubAreaSnowfallDepth {
8212    /// 地域の名称
8213    ///
8214    /// 一部領域の名称を示す
8215    #[serde(
8216        alias = "AreaName",
8217        rename = "areaName",
8218        skip_serializing_if = "Option::is_none",
8219        deserialize_with = "trim_opt_string",
8220        default
8221    )]
8222    pub area_name: Option<String>,
8223    /// 文章形式の表現
8224    ///
8225    /// 一部領域の内容を文章形式で示す
8226    #[serde(
8227        alias = "Sentence",
8228        rename = "sentence",
8229        skip_serializing_if = "Option::is_none"
8230    )]
8231    pub sentence: Option<MeteSentence>,
8232    /// 卓越もしくは変化前
8233    ///
8234    /// 卓越する内容、もしくは変化前の内容を示す
8235    #[serde(
8236        alias = "Base",
8237        rename = "base",
8238        skip_serializing_if = "Option::is_none"
8239    )]
8240    pub base: Option<MeteBaseSnowfallDepth>,
8241    /// 断続現象
8242    ///
8243    /// 断続的に発生する現象の内容を示す
8244    #[serde(
8245        alias = "Temporary",
8246        rename = "temporaries",
8247        skip_serializing_if = "Vec::is_empty",
8248        default
8249    )]
8250    pub temporaries: Vec<MeteBaseSnowfallDepth>,
8251    /// 変化後
8252    ///
8253    /// 変化後の内容を示す
8254    #[serde(
8255        alias = "Becoming",
8256        rename = "becomings",
8257        skip_serializing_if = "Vec::is_empty",
8258        default
8259    )]
8260    pub becomings: Vec<MeteBaseSnowfallDepth>,
8261    /// 地域
8262    ///
8263    /// 領域の一部の区域の内容を示す
8264    #[serde(
8265        alias = "Local",
8266        rename = "locals",
8267        skip_serializing_if = "Vec::is_empty",
8268        default
8269    )]
8270    pub locals: Vec<MeteLocalSnowfallDepth>,
8271    /// 降雪量
8272    #[serde(
8273        alias = "SnowfallDepth",
8274        rename = "snowfallDepths",
8275        skip_serializing_if = "Vec::is_empty",
8276        default
8277    )]
8278    pub snowfall_depths: Vec<EbSnowfallDepth>,
8279    /// 起時
8280    ///
8281    /// 発生時刻を示す
8282    #[serde(
8283        alias = "Time",
8284        rename = "time",
8285        skip_serializing_if = "Option::is_none"
8286    )]
8287    pub time: Option<DateTime>,
8288    /// 注意事項・付加事項
8289    #[serde(
8290        alias = "Remark",
8291        rename = "remark",
8292        skip_serializing_if = "Option::is_none",
8293        deserialize_with = "trim_opt_string",
8294        default
8295    )]
8296    pub remark: Option<String>,
8297}
8298
8299#[derive(Debug, Clone, Serialize, Deserialize)]
8300pub struct MeteSubAreaTemperature {
8301    /// 地域の名称
8302    ///
8303    /// 一部領域の名称を示す
8304    #[serde(
8305        alias = "AreaName",
8306        rename = "areaName",
8307        skip_serializing_if = "Option::is_none",
8308        deserialize_with = "trim_opt_string",
8309        default
8310    )]
8311    pub area_name: Option<String>,
8312    /// 文章形式の表現
8313    ///
8314    /// 一部領域の内容を文章形式で示す
8315    #[serde(
8316        alias = "Sentence",
8317        rename = "sentence",
8318        skip_serializing_if = "Option::is_none"
8319    )]
8320    pub sentence: Option<MeteSentence>,
8321    /// 卓越もしくは変化前
8322    ///
8323    /// 卓越する内容、もしくは変化前の内容を示す
8324    #[serde(
8325        alias = "Base",
8326        rename = "base",
8327        skip_serializing_if = "Option::is_none"
8328    )]
8329    pub base: Option<MeteBaseTemperature>,
8330    /// 断続現象
8331    ///
8332    /// 断続的に発生する現象の内容を示す
8333    #[serde(
8334        alias = "Temporary",
8335        rename = "temporaries",
8336        skip_serializing_if = "Vec::is_empty",
8337        default
8338    )]
8339    pub temporaries: Vec<MeteBaseTemperature>,
8340    /// 変化後
8341    ///
8342    /// 変化後の内容を示す
8343    #[serde(
8344        alias = "Becoming",
8345        rename = "becomings",
8346        skip_serializing_if = "Vec::is_empty",
8347        default
8348    )]
8349    pub becomings: Vec<MeteBaseTemperature>,
8350    /// 地域
8351    ///
8352    /// 領域の一部の区域の内容を示す
8353    #[serde(
8354        alias = "Local",
8355        rename = "locals",
8356        skip_serializing_if = "Vec::is_empty",
8357        default
8358    )]
8359    pub locals: Vec<MeteLocalTemperature>,
8360    /// 気温
8361    #[serde(
8362        alias = "Temperature",
8363        rename = "temperatures",
8364        skip_serializing_if = "Vec::is_empty",
8365        default
8366    )]
8367    pub temperatures: Vec<EbTemperature>,
8368    /// 起時
8369    ///
8370    /// 発生時刻を示す
8371    #[serde(
8372        alias = "Time",
8373        rename = "time",
8374        skip_serializing_if = "Option::is_none"
8375    )]
8376    pub time: Option<DateTime>,
8377    /// 注意事項・付加事項
8378    #[serde(
8379        alias = "Remark",
8380        rename = "remark",
8381        skip_serializing_if = "Option::is_none",
8382        deserialize_with = "trim_opt_string",
8383        default
8384    )]
8385    pub remark: Option<String>,
8386}
8387
8388#[derive(Debug, Clone, Serialize, Deserialize)]
8389pub struct MeteSubAreaTidalLevel {
8390    /// 地域の名称
8391    ///
8392    /// 一部領域の名称を示す
8393    #[serde(
8394        alias = "AreaName",
8395        rename = "areaName",
8396        skip_serializing_if = "Option::is_none",
8397        deserialize_with = "trim_opt_string",
8398        default
8399    )]
8400    pub area_name: Option<String>,
8401    /// 文章形式の表現
8402    ///
8403    /// 一部領域の内容を文章形式で示す
8404    #[serde(
8405        alias = "Sentence",
8406        rename = "sentence",
8407        skip_serializing_if = "Option::is_none"
8408    )]
8409    pub sentence: Option<MeteSentence>,
8410    /// 卓越もしくは変化前
8411    ///
8412    /// 卓越する内容、もしくは変化前の内容を示す
8413    #[serde(
8414        alias = "Base",
8415        rename = "base",
8416        skip_serializing_if = "Option::is_none"
8417    )]
8418    pub base: Option<MeteBaseTidalLevel>,
8419    /// 断続現象
8420    ///
8421    /// 断続的に発生する現象の内容を示す
8422    #[serde(
8423        alias = "Temporary",
8424        rename = "temporaries",
8425        skip_serializing_if = "Vec::is_empty",
8426        default
8427    )]
8428    pub temporaries: Vec<MeteBaseTidalLevel>,
8429    /// 変化後
8430    ///
8431    /// 変化後の内容を示す
8432    #[serde(
8433        alias = "Becoming",
8434        rename = "becomings",
8435        skip_serializing_if = "Vec::is_empty",
8436        default
8437    )]
8438    pub becomings: Vec<MeteBaseTidalLevel>,
8439    /// 地域
8440    ///
8441    /// 領域の一部の区域の内容を示す
8442    #[serde(
8443        alias = "Local",
8444        rename = "locals",
8445        skip_serializing_if = "Vec::is_empty",
8446        default
8447    )]
8448    pub locals: Vec<MeteLocalTidalLevel>,
8449    /// 潮位
8450    #[serde(
8451        alias = "TidalLevel",
8452        rename = "tidalLevels",
8453        skip_serializing_if = "Vec::is_empty",
8454        default
8455    )]
8456    pub tidal_levels: Vec<EbTidalLevel>,
8457    /// 周期
8458    ///
8459    /// 潮位変動の周期を示す
8460    #[serde(
8461        alias = "TidalPeriod",
8462        rename = "tidalPeriods",
8463        skip_serializing_if = "Vec::is_empty",
8464        default
8465    )]
8466    pub tidal_periods: Vec<EbTidalPeriod>,
8467    /// 起時
8468    ///
8469    /// 発生時刻を示す
8470    #[serde(
8471        alias = "Time",
8472        rename = "time",
8473        skip_serializing_if = "Option::is_none"
8474    )]
8475    pub time: Option<DateTime>,
8476    /// 連続
8477    ///
8478    /// 連続した内容を示す
8479    #[serde(
8480        alias = "Sequence",
8481        rename = "sequences",
8482        skip_serializing_if = "Vec::is_empty",
8483        default
8484    )]
8485    pub sequences: Vec<MeteSequenceTidalLevel>,
8486    /// 注意事項・付加事項
8487    #[serde(
8488        alias = "Remark",
8489        rename = "remark",
8490        skip_serializing_if = "Option::is_none",
8491        deserialize_with = "trim_opt_string",
8492        default
8493    )]
8494    pub remark: Option<String>,
8495}
8496
8497#[derive(Debug, Clone, Serialize, Deserialize)]
8498pub struct MeteSubAreaVisibility {
8499    /// 地域の名称
8500    ///
8501    /// 一部領域の名称を示す
8502    #[serde(
8503        alias = "AreaName",
8504        rename = "areaName",
8505        skip_serializing_if = "Option::is_none",
8506        deserialize_with = "trim_opt_string",
8507        default
8508    )]
8509    pub area_name: Option<String>,
8510    /// 文章形式の表現
8511    ///
8512    /// 一部領域の内容を文章形式で示す
8513    #[serde(
8514        alias = "Sentence",
8515        rename = "sentence",
8516        skip_serializing_if = "Option::is_none"
8517    )]
8518    pub sentence: Option<MeteSentence>,
8519    /// 卓越もしくは変化前
8520    ///
8521    /// 卓越する内容、もしくは変化前の内容を示す
8522    #[serde(
8523        alias = "Base",
8524        rename = "base",
8525        skip_serializing_if = "Option::is_none"
8526    )]
8527    pub base: Option<MeteBaseVisibility>,
8528    /// 断続現象
8529    ///
8530    /// 断続的に発生する現象の内容を示す
8531    #[serde(
8532        alias = "Temporary",
8533        rename = "temporaries",
8534        skip_serializing_if = "Vec::is_empty",
8535        default
8536    )]
8537    pub temporaries: Vec<MeteBaseVisibility>,
8538    /// 変化後
8539    ///
8540    /// 変化後の内容を示す
8541    #[serde(
8542        alias = "Becoming",
8543        rename = "becomings",
8544        skip_serializing_if = "Vec::is_empty",
8545        default
8546    )]
8547    pub becomings: Vec<MeteBaseVisibility>,
8548    /// 地域
8549    ///
8550    /// 領域の一部の区域の内容を示す
8551    #[serde(
8552        alias = "Local",
8553        rename = "locals",
8554        skip_serializing_if = "Vec::is_empty",
8555        default
8556    )]
8557    pub locals: Vec<MeteLocalVisibility>,
8558    /// 視程
8559    #[serde(
8560        alias = "Visibility",
8561        rename = "visibilities",
8562        skip_serializing_if = "Vec::is_empty",
8563        default
8564    )]
8565    pub visibilities: Vec<EbVisibility>,
8566    /// 起時
8567    ///
8568    /// 発生時刻を示す
8569    #[serde(
8570        alias = "Time",
8571        rename = "time",
8572        skip_serializing_if = "Option::is_none"
8573    )]
8574    pub time: Option<DateTime>,
8575    /// 注意事項・付加事項
8576    #[serde(
8577        alias = "Remark",
8578        rename = "remark",
8579        skip_serializing_if = "Option::is_none",
8580        deserialize_with = "trim_opt_string",
8581        default
8582    )]
8583    pub remark: Option<String>,
8584}
8585
8586#[derive(Debug, Clone, Serialize, Deserialize)]
8587pub struct MeteSubAreaWaveHeight {
8588    /// 地域の名称
8589    ///
8590    /// 一部領域の名称を示す
8591    #[serde(
8592        alias = "AreaName",
8593        rename = "areaName",
8594        skip_serializing_if = "Option::is_none",
8595        deserialize_with = "trim_opt_string",
8596        default
8597    )]
8598    pub area_name: Option<String>,
8599    /// 文章形式の表現
8600    ///
8601    /// 一部領域の内容を文章形式で示す
8602    #[serde(
8603        alias = "Sentence",
8604        rename = "sentence",
8605        skip_serializing_if = "Option::is_none"
8606    )]
8607    pub sentence: Option<MeteSentence>,
8608    /// 卓越もしくは変化前
8609    ///
8610    /// 卓越する内容、もしくは変化前の内容を示す
8611    #[serde(
8612        alias = "Base",
8613        rename = "base",
8614        skip_serializing_if = "Option::is_none"
8615    )]
8616    pub base: Option<MeteBaseWaveHeight>,
8617    /// 断続現象
8618    ///
8619    /// 断続的に発生する現象の内容を示す
8620    #[serde(
8621        alias = "Temporary",
8622        rename = "temporaries",
8623        skip_serializing_if = "Vec::is_empty",
8624        default
8625    )]
8626    pub temporaries: Vec<MeteBaseWaveHeight>,
8627    /// 変化後
8628    ///
8629    /// 変化後の内容を示す
8630    #[serde(
8631        alias = "Becoming",
8632        rename = "becomings",
8633        skip_serializing_if = "Vec::is_empty",
8634        default
8635    )]
8636    pub becomings: Vec<MeteBaseWaveHeight>,
8637    /// 地域
8638    ///
8639    /// 領域の一部の区域の内容を示す
8640    #[serde(
8641        alias = "Local",
8642        rename = "locals",
8643        skip_serializing_if = "Vec::is_empty",
8644        default
8645    )]
8646    pub locals: Vec<MeteLocalWaveHeight>,
8647    /// 波高
8648    #[serde(
8649        alias = "WaveHeight",
8650        rename = "waveHeights",
8651        skip_serializing_if = "Vec::is_empty",
8652        default
8653    )]
8654    pub wave_heights: Vec<EbWaveHeight>,
8655    /// 起時
8656    ///
8657    /// 発生時刻を示す
8658    #[serde(
8659        alias = "Time",
8660        rename = "time",
8661        skip_serializing_if = "Option::is_none"
8662    )]
8663    pub time: Option<DateTime>,
8664    /// 注意事項・付加事項
8665    #[serde(
8666        alias = "Remark",
8667        rename = "remark",
8668        skip_serializing_if = "Option::is_none",
8669        deserialize_with = "trim_opt_string",
8670        default
8671    )]
8672    pub remark: Option<String>,
8673}
8674
8675#[derive(Debug, Clone, Serialize, Deserialize)]
8676pub struct MeteSubAreaWeather {
8677    /// 地域の名称
8678    ///
8679    /// 一部領域の名称を示す
8680    #[serde(
8681        alias = "AreaName",
8682        rename = "areaName",
8683        skip_serializing_if = "Option::is_none",
8684        deserialize_with = "trim_opt_string",
8685        default
8686    )]
8687    pub area_name: Option<String>,
8688    /// 文章形式の表現
8689    ///
8690    /// 一部領域の内容を文章形式で示す
8691    #[serde(
8692        alias = "Sentence",
8693        rename = "sentence",
8694        skip_serializing_if = "Option::is_none"
8695    )]
8696    pub sentence: Option<MeteSentence>,
8697    /// 卓越もしくは変化前
8698    ///
8699    /// 卓越する内容、もしくは変化前の内容を示す
8700    #[serde(
8701        alias = "Base",
8702        rename = "base",
8703        skip_serializing_if = "Option::is_none"
8704    )]
8705    pub base: Option<MeteBaseWeather>,
8706    /// 断続現象
8707    ///
8708    /// 断続的に発生する現象の内容を示す
8709    #[serde(
8710        alias = "Temporary",
8711        rename = "temporaries",
8712        skip_serializing_if = "Vec::is_empty",
8713        default
8714    )]
8715    pub temporaries: Vec<MeteBaseWeather>,
8716    /// 変化後
8717    ///
8718    /// 変化後の内容を示す
8719    #[serde(
8720        alias = "Becoming",
8721        rename = "becomings",
8722        skip_serializing_if = "Vec::is_empty",
8723        default
8724    )]
8725    pub becomings: Vec<MeteBaseWeather>,
8726    /// 地域
8727    ///
8728    /// 領域の一部の区域の内容を示す
8729    #[serde(
8730        alias = "Local",
8731        rename = "locals",
8732        skip_serializing_if = "Vec::is_empty",
8733        default
8734    )]
8735    pub locals: Vec<MeteLocalWeather>,
8736    /// 天気
8737    #[serde(
8738        alias = "Weather",
8739        rename = "weathers",
8740        skip_serializing_if = "Vec::is_empty",
8741        default
8742    )]
8743    pub weathers: Vec<EbWeather>,
8744    /// 起時
8745    ///
8746    /// 発生時刻を示す
8747    #[serde(
8748        alias = "Time",
8749        rename = "time",
8750        skip_serializing_if = "Option::is_none"
8751    )]
8752    pub time: Option<DateTime>,
8753    /// 注意事項・付加事項
8754    #[serde(
8755        alias = "Remark",
8756        rename = "remark",
8757        skip_serializing_if = "Option::is_none",
8758        deserialize_with = "trim_opt_string",
8759        default
8760    )]
8761    pub remark: Option<String>,
8762}
8763
8764#[derive(Debug, Clone, Serialize, Deserialize)]
8765pub struct MeteSubAreaWind {
8766    /// 地域の名称
8767    ///
8768    /// 一部領域の名称を示す
8769    #[serde(
8770        alias = "AreaName",
8771        rename = "areaName",
8772        skip_serializing_if = "Option::is_none",
8773        deserialize_with = "trim_opt_string",
8774        default
8775    )]
8776    pub area_name: Option<String>,
8777    /// 文章形式の表現
8778    ///
8779    /// 一部領域の内容を文章形式で示す
8780    #[serde(
8781        alias = "Sentence",
8782        rename = "sentence",
8783        skip_serializing_if = "Option::is_none"
8784    )]
8785    pub sentence: Option<MeteSentence>,
8786    /// 卓越もしくは変化前
8787    ///
8788    /// 卓越する内容、もしくは変化前の内容を示す
8789    #[serde(
8790        alias = "Base",
8791        rename = "base",
8792        skip_serializing_if = "Option::is_none"
8793    )]
8794    pub base: Option<MeteBaseWind>,
8795    /// 断続現象
8796    ///
8797    /// 断続的に発生する現象の内容を示す
8798    #[serde(
8799        alias = "Temporary",
8800        rename = "temporaries",
8801        skip_serializing_if = "Vec::is_empty",
8802        default
8803    )]
8804    pub temporaries: Vec<MeteBaseWind>,
8805    /// 変化後
8806    ///
8807    /// 変化後の内容を示す
8808    #[serde(
8809        alias = "Becoming",
8810        rename = "becomings",
8811        skip_serializing_if = "Vec::is_empty",
8812        default
8813    )]
8814    pub becomings: Vec<MeteBaseWind>,
8815    /// 地域
8816    ///
8817    /// 領域の一部の区域の内容を示す
8818    #[serde(
8819        alias = "Local",
8820        rename = "locals",
8821        skip_serializing_if = "Vec::is_empty",
8822        default
8823    )]
8824    pub locals: Vec<MeteLocalWind>,
8825    /// 風向
8826    #[serde(
8827        alias = "WindDirection",
8828        rename = "windDirections",
8829        skip_serializing_if = "Vec::is_empty",
8830        default
8831    )]
8832    pub wind_directions: Vec<EbWindDirection>,
8833    /// 風向(数値)
8834    ///
8835    /// 風向の数値表現を示す
8836    #[serde(
8837        alias = "WindDegree",
8838        rename = "windDegrees",
8839        skip_serializing_if = "Vec::is_empty",
8840        default
8841    )]
8842    pub wind_degrees: Vec<EbWindDegree>,
8843    /// 風速
8844    #[serde(
8845        alias = "WindSpeed",
8846        rename = "windSpeeds",
8847        skip_serializing_if = "Vec::is_empty",
8848        default
8849    )]
8850    pub wind_speeds: Vec<EbWindSpeed>,
8851    /// 風力
8852    #[serde(
8853        alias = "WindScale",
8854        rename = "windScales",
8855        skip_serializing_if = "Vec::is_empty",
8856        default
8857    )]
8858    pub wind_scales: Vec<EbWindScale>,
8859    /// 起時
8860    ///
8861    /// 発生時刻を示す
8862    #[serde(
8863        alias = "Time",
8864        rename = "time",
8865        skip_serializing_if = "Option::is_none"
8866    )]
8867    pub time: Option<DateTime>,
8868    /// 注意事項・付加事項
8869    #[serde(
8870        alias = "Remark",
8871        rename = "remark",
8872        skip_serializing_if = "Option::is_none",
8873        deserialize_with = "trim_opt_string",
8874        default
8875    )]
8876    pub remark: Option<String>,
8877}
8878
8879#[derive(Debug, Clone, Serialize, Deserialize)]
8880pub struct MeteSubAreaWindDirection {
8881    /// 地域の名称
8882    ///
8883    /// 一部領域の名称を示す
8884    #[serde(
8885        alias = "AreaName",
8886        rename = "areaName",
8887        skip_serializing_if = "Option::is_none",
8888        deserialize_with = "trim_opt_string",
8889        default
8890    )]
8891    pub area_name: Option<String>,
8892    /// 文章形式の表現
8893    ///
8894    /// 一部領域の内容を文章形式で示す
8895    #[serde(
8896        alias = "Sentence",
8897        rename = "sentence",
8898        skip_serializing_if = "Option::is_none"
8899    )]
8900    pub sentence: Option<MeteSentence>,
8901    /// 卓越もしくは変化前
8902    ///
8903    /// 卓越する内容、もしくは変化前の内容を示す
8904    #[serde(
8905        alias = "Base",
8906        rename = "base",
8907        skip_serializing_if = "Option::is_none"
8908    )]
8909    pub base: Option<MeteBaseWindDirection>,
8910    /// 断続現象
8911    ///
8912    /// 断続的に発生する現象の内容を示す
8913    #[serde(
8914        alias = "Temporary",
8915        rename = "temporaries",
8916        skip_serializing_if = "Vec::is_empty",
8917        default
8918    )]
8919    pub temporaries: Vec<MeteBaseWindDirection>,
8920    /// 変化後
8921    ///
8922    /// 変化後の内容を示す
8923    #[serde(
8924        alias = "Becoming",
8925        rename = "becomings",
8926        skip_serializing_if = "Vec::is_empty",
8927        default
8928    )]
8929    pub becomings: Vec<MeteBaseWindDirection>,
8930    /// 地域
8931    ///
8932    /// 領域の一部の区域の内容を示す
8933    #[serde(
8934        alias = "Local",
8935        rename = "locals",
8936        skip_serializing_if = "Vec::is_empty",
8937        default
8938    )]
8939    pub locals: Vec<MeteLocalWindDirection>,
8940    /// 風向
8941    #[serde(
8942        alias = "WindDirection",
8943        rename = "windDirections",
8944        skip_serializing_if = "Vec::is_empty",
8945        default
8946    )]
8947    pub wind_directions: Vec<EbWindDirection>,
8948    /// 起時
8949    ///
8950    /// 発生時刻を示す
8951    #[serde(
8952        alias = "Time",
8953        rename = "time",
8954        skip_serializing_if = "Option::is_none"
8955    )]
8956    pub time: Option<DateTime>,
8957    /// 注意事項・付加事項
8958    #[serde(
8959        alias = "Remark",
8960        rename = "remark",
8961        skip_serializing_if = "Option::is_none",
8962        deserialize_with = "trim_opt_string",
8963        default
8964    )]
8965    pub remark: Option<String>,
8966}
8967
8968#[derive(Debug, Clone, Serialize, Deserialize)]
8969pub struct MeteSubAreaWindSpeed {
8970    /// 地域の名称
8971    ///
8972    /// 一部領域の名称を示す
8973    #[serde(
8974        alias = "AreaName",
8975        rename = "areaName",
8976        skip_serializing_if = "Option::is_none",
8977        deserialize_with = "trim_opt_string",
8978        default
8979    )]
8980    pub area_name: Option<String>,
8981    /// 文章形式の表現
8982    ///
8983    /// 一部領域の内容を文章形式で示す
8984    #[serde(
8985        alias = "Sentence",
8986        rename = "sentence",
8987        skip_serializing_if = "Option::is_none"
8988    )]
8989    pub sentence: Option<MeteSentence>,
8990    /// 卓越もしくは変化前
8991    ///
8992    /// 卓越する内容、もしくは変化前の内容を示す
8993    #[serde(
8994        alias = "Base",
8995        rename = "base",
8996        skip_serializing_if = "Option::is_none"
8997    )]
8998    pub base: Option<MeteBaseWindSpeed>,
8999    /// 断続現象
9000    ///
9001    /// 断続的に発生する現象の内容を示す
9002    #[serde(
9003        alias = "Temporary",
9004        rename = "temporaries",
9005        skip_serializing_if = "Vec::is_empty",
9006        default
9007    )]
9008    pub temporaries: Vec<MeteBaseWindSpeed>,
9009    /// 変化後
9010    ///
9011    /// 変化後の内容を示す
9012    #[serde(
9013        alias = "Becoming",
9014        rename = "becomings",
9015        skip_serializing_if = "Vec::is_empty",
9016        default
9017    )]
9018    pub becomings: Vec<MeteBaseWindSpeed>,
9019    /// 地域
9020    ///
9021    /// 領域の一部の区域の内容を示す
9022    #[serde(
9023        alias = "Local",
9024        rename = "locals",
9025        skip_serializing_if = "Vec::is_empty",
9026        default
9027    )]
9028    pub locals: Vec<MeteLocalWindSpeed>,
9029    /// 風速
9030    #[serde(
9031        alias = "WindSpeed",
9032        rename = "windSpeeds",
9033        skip_serializing_if = "Vec::is_empty",
9034        default
9035    )]
9036    pub wind_speeds: Vec<EbWindSpeed>,
9037    /// 起時
9038    ///
9039    /// 発生時刻を示す
9040    #[serde(
9041        alias = "Time",
9042        rename = "time",
9043        skip_serializing_if = "Option::is_none"
9044    )]
9045    pub time: Option<DateTime>,
9046    /// 注意事項・付加事項
9047    #[serde(
9048        alias = "Remark",
9049        rename = "remark",
9050        skip_serializing_if = "Option::is_none",
9051        deserialize_with = "trim_opt_string",
9052        default
9053    )]
9054    pub remark: Option<String>,
9055}
9056
9057#[derive(Debug, Clone, Serialize, Deserialize)]
9058pub struct MeteSunshinePart {
9059    /// 卓越もしくは変化前
9060    ///
9061    /// 卓越する内容、もしくは変化前の内容を示す
9062    #[serde(
9063        alias = "Base",
9064        rename = "base",
9065        skip_serializing_if = "Option::is_none"
9066    )]
9067    pub base: Option<MeteBaseSunshine>,
9068    /// 日照
9069    #[serde(
9070        alias = "Sunshine",
9071        rename = "sunshines",
9072        skip_serializing_if = "Vec::is_empty",
9073        default
9074    )]
9075    pub sunshines: Vec<EbSunshine>,
9076    /// 起時
9077    ///
9078    /// 発生時刻を示す
9079    #[serde(
9080        alias = "Time",
9081        rename = "time",
9082        skip_serializing_if = "Option::is_none"
9083    )]
9084    pub time: Option<DateTime>,
9085    /// 注意事項・付加事項
9086    #[serde(
9087        alias = "Remark",
9088        rename = "remark",
9089        skip_serializing_if = "Option::is_none",
9090        deserialize_with = "trim_opt_string",
9091        default
9092    )]
9093    pub remark: Option<String>,
9094}
9095
9096#[derive(Debug, Clone, Serialize, Deserialize)]
9097pub struct MeteSynopsisPart {
9098    /// 気象要因
9099    #[serde(alias = "Synopsis", rename = "synopses")]
9100    pub synopses: Vec<EbSynopsis>,
9101    /// 起時
9102    ///
9103    /// 発生時刻を示す
9104    #[serde(
9105        alias = "Time",
9106        rename = "time",
9107        skip_serializing_if = "Option::is_none"
9108    )]
9109    pub time: Option<DateTime>,
9110    /// 注意事項・付加事項
9111    #[serde(
9112        alias = "Remark",
9113        rename = "remark",
9114        skip_serializing_if = "Option::is_none",
9115        deserialize_with = "trim_opt_string",
9116        default
9117    )]
9118    pub remark: Option<String>,
9119}
9120
9121#[derive(Debug, Clone, Serialize, Deserialize)]
9122pub struct MeteTemperaturePart {
9123    /// 文章形式の表現
9124    ///
9125    /// 気温部分の内容を文章形式で示す
9126    #[serde(
9127        alias = "Sentence",
9128        rename = "sentence",
9129        skip_serializing_if = "Option::is_none"
9130    )]
9131    pub sentence: Option<MeteSentence>,
9132    /// 卓越もしくは変化前
9133    ///
9134    /// 卓越する内容、もしくは変化前の内容を示す
9135    #[serde(
9136        alias = "Base",
9137        rename = "base",
9138        skip_serializing_if = "Option::is_none"
9139    )]
9140    pub base: Option<MeteBaseTemperature>,
9141    /// 断続現象
9142    ///
9143    /// 断続的に発生する現象の内容を示す
9144    #[serde(
9145        alias = "Temporary",
9146        rename = "temporaries",
9147        skip_serializing_if = "Vec::is_empty",
9148        default
9149    )]
9150    pub temporaries: Vec<MeteBaseTemperature>,
9151    /// 変化後
9152    ///
9153    /// 変化後の内容を示す
9154    #[serde(
9155        alias = "Becoming",
9156        rename = "becomings",
9157        skip_serializing_if = "Vec::is_empty",
9158        default
9159    )]
9160    pub becomings: Vec<MeteBaseTemperature>,
9161    /// 地域
9162    ///
9163    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
9164    #[serde(
9165        alias = "SubArea",
9166        rename = "subAreas",
9167        skip_serializing_if = "Vec::is_empty",
9168        default
9169    )]
9170    pub sub_areas: Vec<MeteSubAreaTemperature>,
9171    /// 気温
9172    #[serde(
9173        alias = "Temperature",
9174        rename = "temperatures",
9175        skip_serializing_if = "Vec::is_empty",
9176        default
9177    )]
9178    pub temperatures: Vec<EbTemperature>,
9179    /// 起時
9180    ///
9181    /// 発生時刻を示す
9182    #[serde(
9183        alias = "Time",
9184        rename = "time",
9185        skip_serializing_if = "Option::is_none"
9186    )]
9187    pub time: Option<DateTime>,
9188    /// 注意事項・付加事項
9189    #[serde(
9190        alias = "Remark",
9191        rename = "remark",
9192        skip_serializing_if = "Option::is_none",
9193        deserialize_with = "trim_opt_string",
9194        default
9195    )]
9196    pub remark: Option<String>,
9197}
9198
9199#[derive(Debug, Clone, Serialize, Deserialize)]
9200pub struct MeteText {
9201    #[serde(
9202        alias = "$text",
9203        rename = "value",
9204        default,
9205        deserialize_with = "trim_string"
9206    )]
9207    pub value: String,
9208    /// 文章の種類
9209    #[serde(alias = "@type", rename = "type")]
9210    pub ty: String,
9211}
9212
9213#[derive(Debug, Clone, Serialize, Deserialize)]
9214pub struct MeteTidalAreaPart {
9215    /// 高潮予報区間の名称
9216    #[serde(alias = "Area", rename = "area")]
9217    pub area: MeteArea,
9218    /// 受け持ち区間
9219    ///
9220    /// 高潮予報区間の受け持ち区間を示す
9221    #[serde(
9222        alias = "ChargeSection",
9223        rename = "chargeSections",
9224        skip_serializing_if = "Vec::is_empty",
9225        default
9226    )]
9227    pub charge_sections: Vec<String>,
9228}
9229
9230#[derive(Debug, Clone, Serialize, Deserialize)]
9231pub struct MeteTidalLevelPart {
9232    /// 文章形式の表現
9233    ///
9234    /// 潮位部分の内容を文章形式で示す
9235    #[serde(
9236        alias = "Sentence",
9237        rename = "sentence",
9238        skip_serializing_if = "Option::is_none"
9239    )]
9240    pub sentence: Option<MeteSentence>,
9241    /// 卓越もしくは変化前
9242    ///
9243    /// 卓越する内容、もしくは変化前の内容を示す
9244    #[serde(
9245        alias = "Base",
9246        rename = "base",
9247        skip_serializing_if = "Option::is_none"
9248    )]
9249    pub base: Option<MeteBaseTidalLevel>,
9250    /// 断続現象
9251    ///
9252    /// 断続的に発生する現象の内容を示す
9253    #[serde(
9254        alias = "Temporary",
9255        rename = "temporaries",
9256        skip_serializing_if = "Vec::is_empty",
9257        default
9258    )]
9259    pub temporaries: Vec<MeteBaseTidalLevel>,
9260    /// 変化後
9261    ///
9262    /// 変化後の内容を示す
9263    #[serde(
9264        alias = "Becoming",
9265        rename = "becomings",
9266        skip_serializing_if = "Vec::is_empty",
9267        default
9268    )]
9269    pub becomings: Vec<MeteBaseTidalLevel>,
9270    /// 地域
9271    ///
9272    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
9273    #[serde(
9274        alias = "SubArea",
9275        rename = "subAreas",
9276        skip_serializing_if = "Vec::is_empty",
9277        default
9278    )]
9279    pub sub_areas: Vec<MeteSubAreaTidalLevel>,
9280    /// 潮位
9281    #[serde(
9282        alias = "TidalLevel",
9283        rename = "tidalLevels",
9284        skip_serializing_if = "Vec::is_empty",
9285        default
9286    )]
9287    pub tidal_levels: Vec<EbTidalLevel>,
9288    /// 周期
9289    ///
9290    /// 潮位変動の周期を示す
9291    #[serde(
9292        alias = "TidalPeriod",
9293        rename = "tidalPeriods",
9294        skip_serializing_if = "Vec::is_empty",
9295        default
9296    )]
9297    pub tidal_periods: Vec<EbTidalPeriod>,
9298    /// 起時
9299    ///
9300    /// 発生時刻を示す
9301    #[serde(
9302        alias = "Time",
9303        rename = "time",
9304        skip_serializing_if = "Option::is_none"
9305    )]
9306    pub time: Option<DateTime>,
9307    /// 注意事項・付加事項
9308    #[serde(
9309        alias = "Remark",
9310        rename = "remark",
9311        skip_serializing_if = "Option::is_none",
9312        deserialize_with = "trim_opt_string",
9313        default
9314    )]
9315    pub remark: Option<String>,
9316}
9317
9318#[derive(Debug, Clone, Serialize, Deserialize)]
9319pub struct MeteTidalWarningAddition {
9320    /// 高潮予報区間付加情報
9321    ///
9322    /// 高潮予報区間の諸要素を示す
9323    #[serde(alias = "TidalAreaPart", rename = "tidalAreaPart")]
9324    pub tidal_area_part: MeteTidalAreaPart,
9325    /// 水位・流量観測所付加情報
9326    ///
9327    /// 水位観測所の地点と基準の諸要素を示す
9328    #[serde(alias = "HydrometricStationPart", rename = "hydrometricStationParts")]
9329    pub hydrometric_station_parts: Vec<MeteHydrometricStationPart>,
9330}
9331
9332#[derive(Debug, Clone, Serialize, Deserialize)]
9333pub struct MeteTimeDefine {
9334    /// 時刻ID
9335    #[serde(alias = "@timeId", rename = "timeId")]
9336    pub time_id: u8,
9337    /// 基点時刻
9338    ///
9339    /// この時刻IDに対応する基点時刻を示す
9340    #[serde(alias = "DateTime", rename = "dateTime")]
9341    pub date_time: EbDateTime,
9342    /// 対象期間
9343    ///
9344    /// この時刻IDに対応する対象期間を示す
9345    #[serde(
9346        alias = "Duration",
9347        rename = "duration",
9348        skip_serializing_if = "Option::is_none"
9349    )]
9350    pub duration: Option<Duration>,
9351    /// 予報・観測時間の内容
9352    ///
9353    /// 予報期間、観測時間を文章で示す
9354    #[serde(
9355        alias = "Name",
9356        rename = "name",
9357        skip_serializing_if = "Option::is_none",
9358        deserialize_with = "trim_opt_string",
9359        default
9360    )]
9361    pub name: Option<String>,
9362}
9363
9364#[derive(Debug, Clone, Serialize, Deserialize)]
9365pub struct MeteTimeDefines {
9366    /// 個々の時刻定義
9367    ///
9368    /// 時系列の時刻定義を示す
9369    #[serde(alias = "TimeDefine", rename = "timeDefines")]
9370    pub time_defines: Vec<MeteTimeDefine>,
9371}
9372
9373#[derive(Debug, Clone, Serialize, Deserialize)]
9374pub struct MeteTimeSeriesInfo {
9375    /// 時系列の時刻定義セット
9376    ///
9377    /// この要素が示す時系列の時刻の定義群を示す
9378    #[serde(alias = "TimeDefines", rename = "timeDefines")]
9379    pub time_defines: MeteTimeDefines,
9380    /// 予報の内容
9381    ///
9382    /// 時系列予報の内容を示す
9383    #[serde(alias = "Item", rename = "items")]
9384    pub items: Vec<MeteItem>,
9385}
9386
9387#[derive(Debug, Clone, Serialize, Deserialize)]
9388pub struct MeteTyphoonNamePart {
9389    /// 呼名(英字)
9390    ///
9391    /// 台風の英字の呼名を示す
9392    #[serde(
9393        alias = "Name",
9394        rename = "name",
9395        skip_serializing_if = "Option::is_none",
9396        deserialize_with = "trim_opt_string",
9397        default
9398    )]
9399    pub name: Option<String>,
9400    /// 呼名(かな)
9401    ///
9402    /// 台風のかなの呼名を示す
9403    #[serde(
9404        alias = "NameKana",
9405        rename = "nameKana",
9406        skip_serializing_if = "Option::is_none",
9407        deserialize_with = "trim_opt_string",
9408        default
9409    )]
9410    pub name_kana: Option<String>,
9411    /// 台風番号
9412    #[serde(
9413        alias = "Number",
9414        rename = "number",
9415        skip_serializing_if = "Option::is_none",
9416        deserialize_with = "trim_opt_string",
9417        default
9418    )]
9419    pub number: Option<String>,
9420    /// 起時
9421    ///
9422    /// 発生時刻を示す
9423    #[serde(
9424        alias = "Time",
9425        rename = "time",
9426        skip_serializing_if = "Option::is_none"
9427    )]
9428    pub time: Option<DateTime>,
9429    /// 注意事項・付加事項
9430    #[serde(
9431        alias = "Remark",
9432        rename = "remark",
9433        skip_serializing_if = "Option::is_none",
9434        deserialize_with = "trim_opt_string",
9435        default
9436    )]
9437    pub remark: Option<String>,
9438}
9439
9440#[derive(Debug, Clone, Serialize, Deserialize)]
9441pub struct MeteUvIndexPart {
9442    /// UVインデックス
9443    ///
9444    /// UVインデックス
9445    #[serde(alias = "UvIndex", rename = "uvIndexes")]
9446    pub uv_indexes: Vec<EbUvIndex>,
9447    /// 汎用で利用するテキスト形式
9448    ///
9449    /// テキスト形式で内容を示す。汎用で利用する。
9450    #[serde(
9451        alias = "Text",
9452        rename = "text",
9453        skip_serializing_if = "Option::is_none",
9454        deserialize_with = "trim_opt_string",
9455        default
9456    )]
9457    pub text: Option<String>,
9458}
9459
9460#[derive(Debug, Clone, Serialize, Deserialize)]
9461pub struct MeteVisibilityPart {
9462    /// 文章形式の表現
9463    ///
9464    /// 視程部分の内容を文章形式で示す
9465    #[serde(
9466        alias = "Sentence",
9467        rename = "sentence",
9468        skip_serializing_if = "Option::is_none"
9469    )]
9470    pub sentence: Option<MeteSentence>,
9471    /// 卓越もしくは変化前
9472    ///
9473    /// 卓越する内容、もしくは変化前の内容を示す
9474    #[serde(
9475        alias = "Base",
9476        rename = "base",
9477        skip_serializing_if = "Option::is_none"
9478    )]
9479    pub base: Option<MeteBaseVisibility>,
9480    /// 断続現象
9481    ///
9482    /// 断続的に発生する現象の内容を示す
9483    #[serde(
9484        alias = "Temporary",
9485        rename = "temporaries",
9486        skip_serializing_if = "Vec::is_empty",
9487        default
9488    )]
9489    pub temporaries: Vec<MeteBaseVisibility>,
9490    /// 変化後
9491    ///
9492    /// 変化後の内容を示す
9493    #[serde(
9494        alias = "Becoming",
9495        rename = "becomings",
9496        skip_serializing_if = "Vec::is_empty",
9497        default
9498    )]
9499    pub becomings: Vec<MeteBaseVisibility>,
9500    /// 地域
9501    ///
9502    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
9503    #[serde(
9504        alias = "SubArea",
9505        rename = "subAreas",
9506        skip_serializing_if = "Vec::is_empty",
9507        default
9508    )]
9509    pub sub_areas: Vec<MeteSubAreaVisibility>,
9510    /// 視程
9511    #[serde(
9512        alias = "Visibility",
9513        rename = "visibilities",
9514        skip_serializing_if = "Vec::is_empty",
9515        default
9516    )]
9517    pub visibilities: Vec<EbVisibility>,
9518    /// 起時
9519    ///
9520    /// 発生時刻を示す
9521    #[serde(
9522        alias = "Time",
9523        rename = "time",
9524        skip_serializing_if = "Option::is_none"
9525    )]
9526    pub time: Option<DateTime>,
9527    /// 注意事項・付加事項
9528    #[serde(
9529        alias = "Remark",
9530        rename = "remark",
9531        skip_serializing_if = "Option::is_none",
9532        deserialize_with = "trim_opt_string",
9533        default
9534    )]
9535    pub remark: Option<String>,
9536}
9537
9538#[derive(Debug, Clone, Serialize, Deserialize)]
9539pub struct MeteWarning {
9540    /// 種別
9541    ///
9542    /// この要素が示す注意・警戒事項の種別を示す
9543    #[serde(alias = "@type", rename = "type")]
9544    pub ty: String,
9545    /// 注意・警戒事項の内容
9546    ///
9547    /// 対象地域で発表されている特別警報・警報・注意報を示す
9548    #[serde(alias = "Item", rename = "items")]
9549    pub items: Vec<MeteItem>,
9550}
9551
9552#[derive(Debug, Clone, Serialize, Deserialize)]
9553pub struct MeteWarningAreaPart {
9554    /// 分類
9555    ///
9556    /// 警戒領域部分の分類を示す
9557    #[serde(alias = "@type", rename = "type")]
9558    pub ty: String,
9559    /// 風速
9560    ///
9561    /// 警戒領域の風速(強風域は15メートル、30ノット、暴風域は25メートル、50ノット)
9562    #[serde(alias = "WindSpeed", rename = "windSpeeds")]
9563    pub wind_speeds: Vec<EbWindSpeed>,
9564    /// 円
9565    ///
9566    /// 警戒領域(円)の諸要素を示す
9567    #[serde(alias = "Circle", rename = "circle")]
9568    pub circle: EbCircle,
9569}
9570
9571#[derive(Debug, Clone, Serialize, Deserialize)]
9572pub struct MeteWarningNotice {
9573    /// 開始時間情報
9574    ///
9575    /// 警報等への切り替えの開始時間を文字列で示す
9576    #[serde(alias = "StartTime", rename = "startTime")]
9577    pub start_time: MeteForecastTerm,
9578    /// 警報等への切り替え
9579    ///
9580    /// 警報等への切り替えの可能性を文字列で示す
9581    #[serde(alias = "Note", rename = "note", deserialize_with = "trim_string")]
9582    pub note: String,
9583}
9584
9585#[derive(Debug, Clone, Serialize, Deserialize)]
9586pub struct MeteWaterLevelPart {
9587    /// 水位
9588    #[serde(
9589        alias = "WaterLevel",
9590        rename = "waterLevels",
9591        skip_serializing_if = "Vec::is_empty",
9592        default
9593    )]
9594    pub water_levels: Vec<EbWaterLevel>,
9595}
9596
9597#[derive(Debug, Clone, Serialize, Deserialize)]
9598pub struct MeteWaveHeightForecastPart {
9599    /// 時系列での参照番号
9600    ///
9601    /// 波予報を時系列で表現する場合の参照番号
9602    #[serde(alias = "@refID", rename = "refID")]
9603    pub ref_id: u8,
9604    /// 文章形式の表現
9605    ///
9606    /// 波高部分の内容を文章形式で示す
9607    #[serde(
9608        alias = "Sentence",
9609        rename = "sentence",
9610        skip_serializing_if = "Option::is_none"
9611    )]
9612    pub sentence: Option<MeteSentence>,
9613    /// 卓越もしくは変化前
9614    ///
9615    /// 卓越する内容、もしくは変化前の内容を示す
9616    #[serde(
9617        alias = "Base",
9618        rename = "base",
9619        skip_serializing_if = "Option::is_none"
9620    )]
9621    pub base: Option<MeteBaseWaveHeight>,
9622    /// 断続現象
9623    ///
9624    /// 断続的に発生する現象の内容を示す
9625    #[serde(
9626        alias = "Temporary",
9627        rename = "temporaries",
9628        skip_serializing_if = "Vec::is_empty",
9629        default
9630    )]
9631    pub temporaries: Vec<MeteBaseWaveHeight>,
9632    /// 変化後
9633    ///
9634    /// 変化後の内容を示す
9635    #[serde(
9636        alias = "Becoming",
9637        rename = "becomings",
9638        skip_serializing_if = "Vec::is_empty",
9639        default
9640    )]
9641    pub becomings: Vec<MeteBaseWaveHeight>,
9642    /// 地域
9643    ///
9644    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
9645    #[serde(
9646        alias = "SubArea",
9647        rename = "subAreas",
9648        skip_serializing_if = "Vec::is_empty",
9649        default
9650    )]
9651    pub sub_areas: Vec<MeteSubAreaWaveHeight>,
9652    /// 波高
9653    #[serde(
9654        alias = "WaveHeight",
9655        rename = "waveHeights",
9656        skip_serializing_if = "Vec::is_empty",
9657        default
9658    )]
9659    pub wave_heights: Vec<EbWaveHeight>,
9660    /// 起時
9661    ///
9662    /// 発生時刻を示す
9663    #[serde(
9664        alias = "Time",
9665        rename = "time",
9666        skip_serializing_if = "Option::is_none"
9667    )]
9668    pub time: Option<DateTime>,
9669    /// 注意事項・付加事項
9670    #[serde(
9671        alias = "Remark",
9672        rename = "remark",
9673        skip_serializing_if = "Option::is_none",
9674        deserialize_with = "trim_opt_string",
9675        default
9676    )]
9677    pub remark: Option<String>,
9678}
9679
9680#[derive(Debug, Clone, Serialize, Deserialize)]
9681pub struct MeteWaveHeightPart {
9682    /// 文章形式の表現
9683    ///
9684    /// 波高部分の内容を文章形式で示す
9685    #[serde(
9686        alias = "Sentence",
9687        rename = "sentence",
9688        skip_serializing_if = "Option::is_none"
9689    )]
9690    pub sentence: Option<MeteSentence>,
9691    /// 卓越もしくは変化前
9692    ///
9693    /// 卓越する内容、もしくは変化前の内容を示す
9694    #[serde(
9695        alias = "Base",
9696        rename = "base",
9697        skip_serializing_if = "Option::is_none"
9698    )]
9699    pub base: Option<MeteBaseWaveHeight>,
9700    /// 断続現象
9701    ///
9702    /// 断続的に発生する現象の内容を示す
9703    #[serde(
9704        alias = "Temporary",
9705        rename = "temporaries",
9706        skip_serializing_if = "Vec::is_empty",
9707        default
9708    )]
9709    pub temporaries: Vec<MeteBaseWaveHeight>,
9710    /// 変化後
9711    ///
9712    /// 変化後の内容を示す
9713    #[serde(
9714        alias = "Becoming",
9715        rename = "becomings",
9716        skip_serializing_if = "Vec::is_empty",
9717        default
9718    )]
9719    pub becomings: Vec<MeteBaseWaveHeight>,
9720    /// 地域
9721    ///
9722    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
9723    #[serde(
9724        alias = "SubArea",
9725        rename = "subAreas",
9726        skip_serializing_if = "Vec::is_empty",
9727        default
9728    )]
9729    pub sub_areas: Vec<MeteSubAreaWaveHeight>,
9730    /// 波高
9731    #[serde(
9732        alias = "WaveHeight",
9733        rename = "waveHeights",
9734        skip_serializing_if = "Vec::is_empty",
9735        default
9736    )]
9737    pub wave_heights: Vec<EbWaveHeight>,
9738    /// 起時
9739    ///
9740    /// 発生時刻を示す
9741    #[serde(
9742        alias = "Time",
9743        rename = "time",
9744        skip_serializing_if = "Option::is_none"
9745    )]
9746    pub time: Option<DateTime>,
9747    /// 注意事項・付加事項
9748    #[serde(
9749        alias = "Remark",
9750        rename = "remark",
9751        skip_serializing_if = "Option::is_none",
9752        deserialize_with = "trim_opt_string",
9753        default
9754    )]
9755    pub remark: Option<String>,
9756}
9757
9758#[derive(Debug, Clone, Serialize, Deserialize)]
9759pub struct MeteWeatherCodePart {
9760    /// テロップ用天気予報用語番号
9761    #[serde(alias = "WeatherCode", rename = "weatherCodes")]
9762    pub weather_codes: Vec<EbWeatherCode>,
9763}
9764
9765#[derive(Debug, Clone, Serialize, Deserialize)]
9766pub struct MeteWeatherForecastPart {
9767    /// 時系列での参照番号
9768    ///
9769    /// 天気予報を時系列で表現する場合の参照番号
9770    #[serde(alias = "@refID", rename = "refID")]
9771    pub ref_id: u8,
9772    /// 文章形式の表現
9773    ///
9774    /// 天気部分の内容を文章形式で示す
9775    #[serde(
9776        alias = "Sentence",
9777        rename = "sentence",
9778        skip_serializing_if = "Option::is_none"
9779    )]
9780    pub sentence: Option<MeteSentence>,
9781    /// 卓越もしくは変化前
9782    ///
9783    /// 卓越する内容、もしくは変化前の内容を示す
9784    #[serde(
9785        alias = "Base",
9786        rename = "base",
9787        skip_serializing_if = "Option::is_none"
9788    )]
9789    pub base: Option<MeteBaseWeather>,
9790    /// 断続現象
9791    ///
9792    /// 断続的に発生する現象の内容を示す
9793    #[serde(
9794        alias = "Temporary",
9795        rename = "temporaries",
9796        skip_serializing_if = "Vec::is_empty",
9797        default
9798    )]
9799    pub temporaries: Vec<MeteBaseWeather>,
9800    /// 変化後
9801    ///
9802    /// 変化後の内容を示す
9803    #[serde(
9804        alias = "Becoming",
9805        rename = "becomings",
9806        skip_serializing_if = "Vec::is_empty",
9807        default
9808    )]
9809    pub becomings: Vec<MeteBaseWeather>,
9810    /// 地域
9811    ///
9812    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
9813    #[serde(
9814        alias = "SubArea",
9815        rename = "subAreas",
9816        skip_serializing_if = "Vec::is_empty",
9817        default
9818    )]
9819    pub sub_areas: Vec<MeteSubAreaWeather>,
9820    /// 天気
9821    #[serde(
9822        alias = "Weather",
9823        rename = "weathers",
9824        skip_serializing_if = "Vec::is_empty",
9825        default
9826    )]
9827    pub weathers: Vec<EbWeather>,
9828    /// 起時
9829    ///
9830    /// 発生時刻を示す
9831    #[serde(
9832        alias = "Time",
9833        rename = "time",
9834        skip_serializing_if = "Option::is_none"
9835    )]
9836    pub time: Option<DateTime>,
9837    /// 注意事項・付加事項
9838    #[serde(
9839        alias = "Remark",
9840        rename = "remark",
9841        skip_serializing_if = "Option::is_none",
9842        deserialize_with = "trim_opt_string",
9843        default
9844    )]
9845    pub remark: Option<String>,
9846}
9847
9848#[derive(Debug, Clone, Serialize, Deserialize)]
9849pub struct MeteWeatherPart {
9850    /// 文章形式の表現
9851    ///
9852    /// 天気部分の内容を文章形式で示す
9853    #[serde(
9854        alias = "Sentence",
9855        rename = "sentence",
9856        skip_serializing_if = "Option::is_none"
9857    )]
9858    pub sentence: Option<MeteSentence>,
9859    /// 卓越もしくは変化前
9860    ///
9861    /// 卓越する内容、もしくは変化前の内容を示す
9862    #[serde(
9863        alias = "Base",
9864        rename = "base",
9865        skip_serializing_if = "Option::is_none"
9866    )]
9867    pub base: Option<MeteBaseWeather>,
9868    /// 断続現象
9869    ///
9870    /// 断続的に発生する現象の内容を示す
9871    #[serde(
9872        alias = "Temporary",
9873        rename = "temporaries",
9874        skip_serializing_if = "Vec::is_empty",
9875        default
9876    )]
9877    pub temporaries: Vec<MeteBaseWeather>,
9878    /// 変化後
9879    ///
9880    /// 変化後の内容を示す
9881    #[serde(
9882        alias = "Becoming",
9883        rename = "becomings",
9884        skip_serializing_if = "Vec::is_empty",
9885        default
9886    )]
9887    pub becomings: Vec<MeteBaseWeather>,
9888    /// 地域
9889    ///
9890    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
9891    #[serde(
9892        alias = "SubArea",
9893        rename = "subAreas",
9894        skip_serializing_if = "Vec::is_empty",
9895        default
9896    )]
9897    pub sub_areas: Vec<MeteSubAreaWeather>,
9898    /// 天気
9899    #[serde(
9900        alias = "Weather",
9901        rename = "weathers",
9902        skip_serializing_if = "Vec::is_empty",
9903        default
9904    )]
9905    pub weathers: Vec<EbWeather>,
9906    /// 起時
9907    ///
9908    /// 発生時刻を示す
9909    #[serde(
9910        alias = "Time",
9911        rename = "time",
9912        skip_serializing_if = "Option::is_none"
9913    )]
9914    pub time: Option<DateTime>,
9915    /// 注意事項・付加事項
9916    #[serde(
9917        alias = "Remark",
9918        rename = "remark",
9919        skip_serializing_if = "Option::is_none",
9920        deserialize_with = "trim_opt_string",
9921        default
9922    )]
9923    pub remark: Option<String>,
9924}
9925
9926#[derive(Debug, Clone, Serialize, Deserialize)]
9927pub struct MeteWindDirectionPart {
9928    /// 文章形式の表現
9929    ///
9930    /// 風向部分の内容を文章形式で示す
9931    #[serde(
9932        alias = "Sentence",
9933        rename = "sentence",
9934        skip_serializing_if = "Option::is_none"
9935    )]
9936    pub sentence: Option<MeteSentence>,
9937    /// 卓越もしくは変化前
9938    ///
9939    /// 卓越する内容、もしくは変化前の内容を示す
9940    #[serde(
9941        alias = "Base",
9942        rename = "base",
9943        skip_serializing_if = "Option::is_none"
9944    )]
9945    pub base: Option<MeteBaseWindDirection>,
9946    /// 断続現象
9947    ///
9948    /// 断続的に発生する現象の内容を示す
9949    #[serde(
9950        alias = "Temporary",
9951        rename = "temporaries",
9952        skip_serializing_if = "Vec::is_empty",
9953        default
9954    )]
9955    pub temporaries: Vec<MeteBaseWindDirection>,
9956    /// 変化後
9957    ///
9958    /// 変化後の内容を示す
9959    #[serde(
9960        alias = "Becoming",
9961        rename = "becomings",
9962        skip_serializing_if = "Vec::is_empty",
9963        default
9964    )]
9965    pub becomings: Vec<MeteBaseWindDirection>,
9966    /// 地域
9967    ///
9968    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
9969    #[serde(
9970        alias = "SubArea",
9971        rename = "subAreas",
9972        skip_serializing_if = "Vec::is_empty",
9973        default
9974    )]
9975    pub sub_areas: Vec<MeteSubAreaWindDirection>,
9976    /// 風向
9977    #[serde(
9978        alias = "WindDirection",
9979        rename = "windDirections",
9980        skip_serializing_if = "Vec::is_empty",
9981        default
9982    )]
9983    pub wind_directions: Vec<EbWindDirection>,
9984    /// 起時
9985    ///
9986    /// 発生時刻を示す
9987    #[serde(
9988        alias = "Time",
9989        rename = "time",
9990        skip_serializing_if = "Option::is_none"
9991    )]
9992    pub time: Option<DateTime>,
9993    /// 注意事項・付加事項
9994    #[serde(
9995        alias = "Remark",
9996        rename = "remark",
9997        skip_serializing_if = "Option::is_none",
9998        deserialize_with = "trim_opt_string",
9999        default
10000    )]
10001    pub remark: Option<String>,
10002}
10003
10004#[derive(Debug, Clone, Serialize, Deserialize)]
10005pub struct MeteWindForecastPart {
10006    /// 時系列での参照番号
10007    ///
10008    /// 風予報を時系列で表現する場合の参照番号
10009    #[serde(alias = "@refID", rename = "refID")]
10010    pub ref_id: u8,
10011    /// 文章形式の表現
10012    ///
10013    /// 風部分の内容を文章形式で示す
10014    #[serde(
10015        alias = "Sentence",
10016        rename = "sentence",
10017        skip_serializing_if = "Option::is_none"
10018    )]
10019    pub sentence: Option<MeteSentence>,
10020    /// 卓越もしくは変化前
10021    ///
10022    /// 卓越する内容、もしくは変化前の内容を示す
10023    #[serde(
10024        alias = "Base",
10025        rename = "base",
10026        skip_serializing_if = "Option::is_none"
10027    )]
10028    pub base: Option<MeteBaseWind>,
10029    /// 断続現象
10030    ///
10031    /// 断続的に発生する現象の内容を示す
10032    #[serde(
10033        alias = "Temporary",
10034        rename = "temporaries",
10035        skip_serializing_if = "Vec::is_empty",
10036        default
10037    )]
10038    pub temporaries: Vec<MeteBaseWind>,
10039    /// 変化後
10040    ///
10041    /// 変化後の内容を示す
10042    #[serde(
10043        alias = "Becoming",
10044        rename = "becomings",
10045        skip_serializing_if = "Vec::is_empty",
10046        default
10047    )]
10048    pub becomings: Vec<MeteBaseWind>,
10049    /// 地域
10050    ///
10051    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
10052    #[serde(
10053        alias = "SubArea",
10054        rename = "subAreas",
10055        skip_serializing_if = "Vec::is_empty",
10056        default
10057    )]
10058    pub sub_areas: Vec<MeteSubAreaWind>,
10059    /// 風向
10060    #[serde(
10061        alias = "WindDirection",
10062        rename = "windDirections",
10063        skip_serializing_if = "Vec::is_empty",
10064        default
10065    )]
10066    pub wind_directions: Vec<EbWindDirection>,
10067    /// 風速
10068    #[serde(
10069        alias = "WindSpeed",
10070        rename = "windSpeeds",
10071        skip_serializing_if = "Vec::is_empty",
10072        default
10073    )]
10074    pub wind_speeds: Vec<EbWindSpeed>,
10075    /// 起時
10076    ///
10077    /// 発生時刻を示す
10078    #[serde(
10079        alias = "Time",
10080        rename = "time",
10081        skip_serializing_if = "Option::is_none"
10082    )]
10083    pub time: Option<DateTime>,
10084    /// 注意事項・付加事項
10085    #[serde(
10086        alias = "Remark",
10087        rename = "remark",
10088        skip_serializing_if = "Option::is_none",
10089        deserialize_with = "trim_opt_string",
10090        default
10091    )]
10092    pub remark: Option<String>,
10093}
10094
10095#[derive(Debug, Clone, Serialize, Deserialize)]
10096pub struct MeteWindPart {
10097    /// 文章形式の表現
10098    ///
10099    /// 風部分の内容を文章形式で示す
10100    #[serde(
10101        alias = "Sentence",
10102        rename = "sentence",
10103        skip_serializing_if = "Option::is_none"
10104    )]
10105    pub sentence: Option<MeteSentence>,
10106    /// 卓越もしくは変化前
10107    ///
10108    /// 卓越する内容、もしくは変化前の内容を示す
10109    #[serde(
10110        alias = "Base",
10111        rename = "base",
10112        skip_serializing_if = "Option::is_none"
10113    )]
10114    pub base: Option<MeteBaseWind>,
10115    /// 断続現象
10116    ///
10117    /// 断続的に発生する現象の内容を示す
10118    #[serde(
10119        alias = "Temporary",
10120        rename = "temporaries",
10121        skip_serializing_if = "Vec::is_empty",
10122        default
10123    )]
10124    pub temporaries: Vec<MeteBaseWind>,
10125    /// 変化後
10126    ///
10127    /// 変化後の内容を示す
10128    #[serde(
10129        alias = "Becoming",
10130        rename = "becomings",
10131        skip_serializing_if = "Vec::is_empty",
10132        default
10133    )]
10134    pub becomings: Vec<MeteBaseWind>,
10135    /// 地域
10136    ///
10137    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
10138    #[serde(
10139        alias = "SubArea",
10140        rename = "subAreas",
10141        skip_serializing_if = "Vec::is_empty",
10142        default
10143    )]
10144    pub sub_areas: Vec<MeteSubAreaWind>,
10145    /// 風向
10146    #[serde(
10147        alias = "WindDirection",
10148        rename = "windDirections",
10149        skip_serializing_if = "Vec::is_empty",
10150        default
10151    )]
10152    pub wind_directions: Vec<EbWindDirection>,
10153    /// 風向(数値)
10154    ///
10155    /// 風向の数値表現を示す
10156    #[serde(
10157        alias = "WindDegree",
10158        rename = "windDegrees",
10159        skip_serializing_if = "Vec::is_empty",
10160        default
10161    )]
10162    pub wind_degrees: Vec<EbWindDegree>,
10163    /// 風速
10164    #[serde(
10165        alias = "WindSpeed",
10166        rename = "windSpeeds",
10167        skip_serializing_if = "Vec::is_empty",
10168        default
10169    )]
10170    pub wind_speeds: Vec<EbWindSpeed>,
10171    /// 風力
10172    #[serde(
10173        alias = "WindScale",
10174        rename = "windScales",
10175        skip_serializing_if = "Vec::is_empty",
10176        default
10177    )]
10178    pub wind_scales: Vec<EbWindScale>,
10179    /// 起時
10180    ///
10181    /// 発生時刻を示す
10182    #[serde(
10183        alias = "Time",
10184        rename = "time",
10185        skip_serializing_if = "Option::is_none"
10186    )]
10187    pub time: Option<DateTime>,
10188    /// 注意事項・付加事項
10189    #[serde(
10190        alias = "Remark",
10191        rename = "remark",
10192        skip_serializing_if = "Option::is_none",
10193        deserialize_with = "trim_opt_string",
10194        default
10195    )]
10196    pub remark: Option<String>,
10197}
10198
10199#[derive(Debug, Clone, Serialize, Deserialize)]
10200pub struct MeteWindSpeedLevel {
10201    #[serde(
10202        alias = "$text",
10203        rename = "value",
10204        skip_serializing_if = "Option::is_none"
10205    )]
10206    pub value: Option<f64>,
10207    /// 分類
10208    #[serde(alias = "@type", rename = "type")]
10209    pub ty: String,
10210    /// 時系列での参照番号
10211    ///
10212    /// 時系列で表現する場合の参照番号を示す。
10213    #[serde(alias = "@refID", rename = "refID")]
10214    pub ref_id: u8,
10215    /// 文字列表現
10216    ///
10217    /// 値を文字列で表示する場合の表記法を記述する。
10218    #[serde(
10219        alias = "@description",
10220        rename = "description",
10221        skip_serializing_if = "Option::is_none"
10222    )]
10223    pub description: Option<String>,
10224    /// 範囲
10225    ///
10226    /// 階級の最低風速、最大風速をxs:list型で示す。
10227    #[serde(alias = "@range", rename = "ranges")]
10228    pub ranges: Vec<String>,
10229}
10230
10231#[derive(Debug, Clone, Serialize, Deserialize)]
10232pub struct MeteWindSpeedPart {
10233    /// 文章形式の表現
10234    ///
10235    /// 風速部分の内容を文章形式で示す
10236    #[serde(
10237        alias = "Sentence",
10238        rename = "sentence",
10239        skip_serializing_if = "Option::is_none"
10240    )]
10241    pub sentence: Option<MeteSentence>,
10242    /// 卓越もしくは変化前
10243    ///
10244    /// 卓越する内容、もしくは変化前の内容を示す
10245    #[serde(
10246        alias = "Base",
10247        rename = "base",
10248        skip_serializing_if = "Option::is_none"
10249    )]
10250    pub base: Option<MeteBaseWindSpeed>,
10251    /// 断続現象
10252    ///
10253    /// 断続的に発生する現象の内容を示す
10254    #[serde(
10255        alias = "Temporary",
10256        rename = "temporaries",
10257        skip_serializing_if = "Vec::is_empty",
10258        default
10259    )]
10260    pub temporaries: Vec<MeteBaseWindSpeed>,
10261    /// 変化後
10262    ///
10263    /// 変化後の内容を示す
10264    #[serde(
10265        alias = "Becoming",
10266        rename = "becomings",
10267        skip_serializing_if = "Vec::is_empty",
10268        default
10269    )]
10270    pub becomings: Vec<MeteBaseWindSpeed>,
10271    /// 地域
10272    ///
10273    /// 領域全体と同じ予報表現を行う一部領域の内容を示す
10274    #[serde(
10275        alias = "SubArea",
10276        rename = "subAreas",
10277        skip_serializing_if = "Vec::is_empty",
10278        default
10279    )]
10280    pub sub_areas: Vec<MeteSubAreaWindSpeed>,
10281    /// 風速
10282    #[serde(
10283        alias = "WindSpeed",
10284        rename = "windSpeeds",
10285        skip_serializing_if = "Vec::is_empty",
10286        default
10287    )]
10288    pub wind_speeds: Vec<EbWindSpeed>,
10289    /// 風速レベル
10290    ///
10291    /// 府県天気予報の3時間内代表風で利用する風速レベルを示す
10292    #[serde(
10293        alias = "WindSpeedLevel",
10294        rename = "windSpeedLevels",
10295        skip_serializing_if = "Vec::is_empty",
10296        default
10297    )]
10298    pub wind_speed_levels: Vec<MeteWindSpeedLevel>,
10299    /// 起時
10300    ///
10301    /// 発生時刻を示す
10302    #[serde(
10303        alias = "Time",
10304        rename = "time",
10305        skip_serializing_if = "Option::is_none"
10306    )]
10307    pub time: Option<DateTime>,
10308    /// 注意事項・付加事項
10309    #[serde(
10310        alias = "Remark",
10311        rename = "remark",
10312        skip_serializing_if = "Option::is_none",
10313        deserialize_with = "trim_opt_string",
10314        default
10315    )]
10316    pub remark: Option<String>,
10317}
10318
10319#[derive(Debug, Clone, Serialize, Deserialize)]
10320pub struct SeisAccuracy {
10321    /// 震源位置の精度値
10322    #[serde(alias = "Epicenter", rename = "epicenter")]
10323    pub epicenter: SeisAccuracyEpicenter,
10324    /// 深さの精度値
10325    #[serde(alias = "Depth", rename = "depth")]
10326    pub depth: SeisAccuracyDepth,
10327    /// Mの精度値
10328    #[serde(alias = "MagnitudeCalculation", rename = "magnitudeCalculation")]
10329    pub magnitude_calculation: SeisAccuracyMagnitude,
10330    /// M計算使用観測点数
10331    #[serde(
10332        alias = "NumberOfMagnitudeCalculation",
10333        rename = "numberOfMagnitudeCalculation"
10334    )]
10335    pub number_of_magnitude_calculation: i64,
10336}
10337
10338#[derive(Debug, Clone, Serialize, Deserialize)]
10339pub struct SeisAccuracyDepth {
10340    #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
10341    pub value: f64,
10342    /// 深さ精度のランク
10343    #[serde(alias = "@rank", rename = "rank")]
10344    pub rank: i64,
10345}
10346
10347#[derive(Debug, Clone, Serialize, Deserialize)]
10348pub struct SeisAccuracyEpicenter {
10349    #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
10350    pub value: f64,
10351    /// 震源位置の精度のランク
10352    #[serde(alias = "@rank", rename = "rank")]
10353    pub rank: i64,
10354    /// 震源位置の精度のランク2
10355    #[serde(alias = "@rank2", rename = "rank2")]
10356    pub rank2: i64,
10357}
10358
10359#[derive(Debug, Clone, Serialize, Deserialize)]
10360pub struct SeisAccuracyMagnitude {
10361    #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
10362    pub value: f64,
10363    /// M精度のランク
10364    #[serde(alias = "@rank", rename = "rank")]
10365    pub rank: i64,
10366}
10367
10368#[derive(Debug, Clone, Serialize, Deserialize)]
10369pub struct SeisAftershockItem {
10370    /// 開始時刻
10371    ///
10372    /// 余震確率の予想開始時刻を示す
10373    #[serde(alias = "StartTime", rename = "startTime")]
10374    pub start_time: DateTime,
10375    /// 終了時刻
10376    ///
10377    /// 余震確率の予想終了時刻を示す
10378    #[serde(alias = "EndTime", rename = "endTime")]
10379    pub end_time: DateTime,
10380    /// 余震確率
10381    #[serde(alias = "ProbabilityOfAftershock", rename = "probabilityOfAftershock")]
10382    pub probability_of_aftershock: EbProbabilityOfAftershock,
10383    /// 対象マグニチュード
10384    ///
10385    /// 余震確率の対象となるマグニチュードを示す
10386    #[serde(alias = "TargetMagnitude", rename = "targetMagnitude")]
10387    pub target_magnitude: EbMagnitude,
10388    /// 情報文
10389    ///
10390    /// 余震確率に関する内容を示す
10391    #[serde(
10392        alias = "Text",
10393        rename = "text",
10394        skip_serializing_if = "Option::is_none",
10395        deserialize_with = "trim_opt_string",
10396        default
10397    )]
10398    pub text: Option<String>,
10399}
10400
10401#[derive(Debug, Clone, Serialize, Deserialize)]
10402pub struct SeisAftershocks {
10403    /// 個々の余震確率を示す
10404    #[serde(alias = "Item", rename = "items")]
10405    pub items: Vec<SeisAftershockItem>,
10406    /// 情報文
10407    ///
10408    /// 余震確率に関する内容を示す
10409    #[serde(
10410        alias = "Text",
10411        rename = "text",
10412        skip_serializing_if = "Option::is_none",
10413        deserialize_with = "trim_opt_string",
10414        default
10415    )]
10416    pub text: Option<String>,
10417}
10418
10419#[derive(Debug, Clone, Serialize, Deserialize)]
10420pub struct SeisBody {
10421    /// 命名要素
10422    ///
10423    /// 命名に関する要素を示す
10424    #[serde(
10425        alias = "Naming",
10426        rename = "naming",
10427        skip_serializing_if = "Option::is_none"
10428    )]
10429    pub naming: Option<SeisNaming>,
10430    /// 津波要素
10431    ///
10432    /// 津波の諸要素を示す
10433    #[serde(
10434        alias = "Tsunami",
10435        rename = "tsunami",
10436        skip_serializing_if = "Option::is_none"
10437    )]
10438    pub tsunami: Option<SeisTsunami>,
10439    /// 震源要素
10440    ///
10441    /// 地震の諸要素を示す
10442    #[serde(
10443        alias = "Earthquake",
10444        rename = "earthquakes",
10445        skip_serializing_if = "Vec::is_empty",
10446        default
10447    )]
10448    pub earthquakes: Vec<SeisEarthquake>,
10449    /// 震度要素
10450    ///
10451    /// 震度・長周期地震動階級の諸要素を示す
10452    #[serde(
10453        alias = "Intensity",
10454        rename = "intensity",
10455        skip_serializing_if = "Option::is_none"
10456    )]
10457    pub intensity: Option<SeisIntensity>,
10458    /// 東海関連情報要素
10459    ///
10460    /// 東海関連情報の要素を示す
10461    #[serde(
10462        alias = "Tokai",
10463        rename = "tokai",
10464        skip_serializing_if = "Option::is_none"
10465    )]
10466    pub tokai: Option<SeisTokai>,
10467    /// 地震関連情報要素
10468    ///
10469    /// 地震関連情報の要素を示す
10470    #[serde(
10471        alias = "EarthquakeInfo",
10472        rename = "earthquakeInfo",
10473        skip_serializing_if = "Option::is_none"
10474    )]
10475    pub earthquake_info: Option<SeisEarthquakeInfo>,
10476    /// 地震回数
10477    ///
10478    /// 地震回数の諸要素を示す
10479    #[serde(
10480        alias = "EarthquakeCount",
10481        rename = "earthquakeCount",
10482        skip_serializing_if = "Option::is_none"
10483    )]
10484    pub earthquake_count: Option<SeisEarthquakeCount>,
10485    /// 余震確率
10486    ///
10487    /// 余震確率の諸要素を示す
10488    #[serde(
10489        alias = "Aftershock",
10490        rename = "aftershock",
10491        skip_serializing_if = "Option::is_none"
10492    )]
10493    pub aftershock: Option<SeisAftershocks>,
10494    /// テキスト要素
10495    ///
10496    /// お知らせ、自由文の要素を示す
10497    #[serde(
10498        alias = "Text",
10499        rename = "text",
10500        skip_serializing_if = "Option::is_none",
10501        deserialize_with = "trim_opt_string",
10502        default
10503    )]
10504    pub text: Option<String>,
10505    /// 次回発表予定
10506    ///
10507    /// 次回発表予定の予告を行う(情報発表の終了を含む)
10508    #[serde(
10509        alias = "NextAdvisory",
10510        rename = "nextAdvisory",
10511        skip_serializing_if = "Option::is_none",
10512        deserialize_with = "trim_opt_string",
10513        default
10514    )]
10515    pub next_advisory: Option<String>,
10516    /// 付加文要素
10517    ///
10518    /// 付加文の諸要素を示す
10519    #[serde(
10520        alias = "Comments",
10521        rename = "comments",
10522        skip_serializing_if = "Option::is_none"
10523    )]
10524    pub comments: Option<SeisComment>,
10525}
10526
10527#[derive(Debug, Clone, Serialize, Deserialize)]
10528pub struct SeisCategory {
10529    /// 今回予報
10530    ///
10531    /// 今回の予報カテゴリーを示す
10532    #[serde(alias = "Kind", rename = "kind")]
10533    pub kind: SeisKind,
10534    /// 前回予報
10535    ///
10536    /// 前回の予報カテゴリーを示す
10537    #[serde(
10538        alias = "LastKind",
10539        rename = "lastKind",
10540        skip_serializing_if = "Option::is_none"
10541    )]
10542    pub last_kind: Option<SeisKind>,
10543}
10544
10545#[derive(Debug, Clone, Serialize, Deserialize)]
10546pub struct SeisCodeDefine {
10547    /// コード種別
10548    #[serde(alias = "Type", rename = "types")]
10549    pub types: Vec<SeisCodeDefineType>,
10550}
10551
10552#[derive(Debug, Clone, Serialize, Deserialize)]
10553pub struct SeisCodeDefineType {
10554    #[serde(
10555        alias = "$text",
10556        rename = "value",
10557        default,
10558        deserialize_with = "trim_string"
10559    )]
10560    pub value: String,
10561    /// 定義する相対xpath
10562    ///
10563    /// 本要素の親要素からみた定義対象となる要素の相対xpathを記述する。
10564    #[serde(alias = "@xpath", rename = "xpath")]
10565    pub xpath: String,
10566}
10567
10568#[derive(Debug, Clone, Serialize, Deserialize)]
10569pub struct SeisComment {
10570    /// 警報付加文
10571    ///
10572    /// 警報の固定付加文の諸要素を示す
10573    #[serde(
10574        alias = "WarningComment",
10575        rename = "warningComment",
10576        skip_serializing_if = "Option::is_none"
10577    )]
10578    pub warning_comment: Option<SeisCommentForm>,
10579    /// 予報付加文
10580    ///
10581    /// 予報の固定付加文の諸要素を示す
10582    #[serde(
10583        alias = "ForecastComment",
10584        rename = "forecastComment",
10585        skip_serializing_if = "Option::is_none"
10586    )]
10587    pub forecast_comment: Option<SeisCommentForm>,
10588    /// 観測付加文
10589    ///
10590    /// 観測値の固定付加文の諸要素を示す
10591    #[serde(
10592        alias = "ObservationComment",
10593        rename = "observationComment",
10594        skip_serializing_if = "Option::is_none"
10595    )]
10596    pub observation_comment: Option<SeisCommentForm>,
10597    /// 用途限定しない付加文
10598    ///
10599    /// 上記以外の範疇の固定付加文の諸要素を示す
10600    #[serde(
10601        alias = "VarComment",
10602        rename = "varComment",
10603        skip_serializing_if = "Option::is_none"
10604    )]
10605    pub var_comment: Option<SeisCommentForm>,
10606    /// 自由付加文
10607    #[serde(
10608        alias = "FreeFormComment",
10609        rename = "freeFormComment",
10610        skip_serializing_if = "Option::is_none",
10611        deserialize_with = "trim_opt_string",
10612        default
10613    )]
10614    pub free_form_comment: Option<String>,
10615    /// 参考URI
10616    ///
10617    /// 参考となるURIで、長周期地震動に関する観測情報のみで利用する
10618    #[serde(alias = "URI", rename = "uRI", skip_serializing_if = "Option::is_none")]
10619    pub uri: Option<String>,
10620}
10621
10622#[derive(Debug, Clone, Serialize, Deserialize)]
10623pub struct SeisCommentForm {
10624    /// コード種別
10625    #[serde(alias = "@codeType", rename = "codeType")]
10626    pub code_type: String,
10627    /// 付加文内容
10628    ///
10629    /// 付加文を示す
10630    #[serde(alias = "Text", rename = "text", deserialize_with = "trim_string")]
10631    pub text: String,
10632    /// 付加文コード
10633    ///
10634    /// 付加文コードを示す。複数表記の場合はxs:list型を用いること。
10635    #[serde(alias = "Code", rename = "codes")]
10636    pub codes: StringList,
10637}
10638
10639#[derive(Debug, Clone, Serialize, Deserialize)]
10640pub struct SeisCountData {
10641    /// 回数要素の内容を示す
10642    ///
10643    /// 1時間回数や累積回数などの具体的な回数内容を示す
10644    #[serde(alias = "@type", rename = "type")]
10645    pub ty: String,
10646    /// 開始時刻
10647    #[serde(alias = "StartTime", rename = "startTime")]
10648    pub start_time: DateTime,
10649    /// 終了時刻
10650    #[serde(alias = "EndTime", rename = "endTime")]
10651    pub end_time: DateTime,
10652    /// 地震回数
10653    #[serde(alias = "Number", rename = "number")]
10654    pub number: i64,
10655    /// 有感地震回数
10656    #[serde(alias = "FeltNumber", rename = "feltNumber")]
10657    pub felt_number: i64,
10658    /// 状況
10659    #[serde(
10660        alias = "Condition",
10661        rename = "condition",
10662        skip_serializing_if = "Option::is_none",
10663        deserialize_with = "trim_opt_string",
10664        default
10665    )]
10666    pub condition: Option<String>,
10667}
10668
10669#[derive(Debug, Clone, Serialize, Deserialize)]
10670pub struct SeisCurrentHeight {
10671    /// 観測時刻(始まり)
10672    ///
10673    /// 現在波の開始時刻を示す
10674    #[serde(
10675        alias = "StartTime",
10676        rename = "startTime",
10677        skip_serializing_if = "Option::is_none"
10678    )]
10679    pub start_time: Option<DateTime>,
10680    /// 観測時刻(終わり)
10681    ///
10682    /// 現在波の終了時刻を示す
10683    #[serde(
10684        alias = "EndTime",
10685        rename = "endTime",
10686        skip_serializing_if = "Option::is_none"
10687    )]
10688    pub end_time: Option<DateTime>,
10689    /// 観測状況
10690    ///
10691    /// 現在波の状況を示す
10692    #[serde(
10693        alias = "Condition",
10694        rename = "condition",
10695        skip_serializing_if = "Option::is_none",
10696        deserialize_with = "trim_opt_string",
10697        default
10698    )]
10699    pub condition: Option<String>,
10700    /// 高さの値
10701    ///
10702    /// 現在波の高さの値を示す
10703    #[serde(
10704        alias = "TsunamiHeight",
10705        rename = "tsunamiHeight",
10706        skip_serializing_if = "Option::is_none"
10707    )]
10708    pub tsunami_height: Option<EbTsunamiHeight>,
10709}
10710
10711#[derive(Debug, Clone, Serialize, Deserialize)]
10712pub struct SeisEarthquake {
10713    /// 地震発生時刻
10714    #[serde(
10715        alias = "OriginTime",
10716        rename = "originTime",
10717        skip_serializing_if = "Option::is_none"
10718    )]
10719    pub origin_time: Option<DateTime>,
10720    /// 地震発現時刻
10721    ///
10722    /// 地震発現時刻(観測点で地震を検知した時刻)
10723    #[serde(alias = "ArrivalTime", rename = "arrivalTime")]
10724    pub arrival_time: DateTime,
10725    /// 震源要素の補足情報を示す
10726    #[serde(
10727        alias = "Condition",
10728        rename = "condition",
10729        skip_serializing_if = "Option::is_none",
10730        deserialize_with = "trim_opt_string",
10731        default
10732    )]
10733    pub condition: Option<String>,
10734    /// 震源要素
10735    #[serde(
10736        alias = "Hypocenter",
10737        rename = "hypocenter",
10738        skip_serializing_if = "Option::is_none"
10739    )]
10740    pub hypocenter: Option<SeisHypocenter>,
10741    /// マグニチュード
10742    ///
10743    /// マグニチュードの諸要素を示す
10744    #[serde(alias = "Magnitude", rename = "magnitudes")]
10745    pub magnitudes: Vec<EbMagnitude>,
10746}
10747
10748#[derive(Debug, Clone, Serialize, Deserialize)]
10749pub struct SeisEarthquakeCount {
10750    /// 個々の回数要素を含む
10751    #[serde(alias = "Item", rename = "items")]
10752    pub items: Vec<SeisCountData>,
10753}
10754
10755#[derive(Debug, Clone, Serialize, Deserialize)]
10756pub struct SeisEarthquakeInfo {
10757    /// 種別
10758    #[serde(alias = "@type", rename = "type")]
10759    pub ty: String,
10760    /// 情報名称
10761    #[serde(
10762        alias = "InfoKind",
10763        rename = "infoKind",
10764        deserialize_with = "trim_string"
10765    )]
10766    pub info_kind: String,
10767    /// 情報種別番号
10768    #[serde(
10769        alias = "InfoSerial",
10770        rename = "infoSerial",
10771        skip_serializing_if = "Option::is_none"
10772    )]
10773    pub info_serial: Option<SeisInfoSerial>,
10774    /// 本文
10775    ///
10776    /// 地震関連情報本文を示す
10777    #[serde(alias = "Text", rename = "text", deserialize_with = "trim_string")]
10778    pub text: String,
10779    /// 参考情報
10780    #[serde(
10781        alias = "Appendix",
10782        rename = "appendix",
10783        skip_serializing_if = "Option::is_none",
10784        deserialize_with = "trim_opt_string",
10785        default
10786    )]
10787    pub appendix: Option<String>,
10788}
10789
10790#[derive(Debug, Clone, Serialize, Deserialize)]
10791pub struct SeisFirstHeight {
10792    /// 到達時刻
10793    ///
10794    /// 第1波の到達予想時刻(早い方)を示す
10795    #[serde(
10796        alias = "ArrivalTimeFrom",
10797        rename = "arrivalTimeFrom",
10798        skip_serializing_if = "Option::is_none"
10799    )]
10800    pub arrival_time_from: Option<DateTime>,
10801    /// 到達時刻
10802    ///
10803    /// 第1波の到達予想時刻(遅い方)を示す
10804    #[serde(
10805        alias = "ArrivalTimeTo",
10806        rename = "arrivalTimeTo",
10807        skip_serializing_if = "Option::is_none"
10808    )]
10809    pub arrival_time_to: Option<DateTime>,
10810    /// 第1波の時刻
10811    #[serde(
10812        alias = "ArrivalTime",
10813        rename = "arrivalTime",
10814        skip_serializing_if = "Option::is_none"
10815    )]
10816    pub arrival_time: Option<DateTime>,
10817    /// 第1波状況
10818    ///
10819    /// 第1波の状況を示す
10820    #[serde(
10821        alias = "Condition",
10822        rename = "condition",
10823        skip_serializing_if = "Option::is_none",
10824        deserialize_with = "trim_opt_string",
10825        default
10826    )]
10827    pub condition: Option<String>,
10828    /// 極性
10829    ///
10830    /// 第1波の極性を示す
10831    #[serde(
10832        alias = "Initial",
10833        rename = "initial",
10834        skip_serializing_if = "Option::is_none",
10835        deserialize_with = "trim_opt_string",
10836        default
10837    )]
10838    pub initial: Option<String>,
10839    /// 高さの値
10840    ///
10841    /// 第1波の高さの値を示す
10842    #[serde(
10843        alias = "TsunamiHeight",
10844        rename = "tsunamiHeight",
10845        skip_serializing_if = "Option::is_none"
10846    )]
10847    pub tsunami_height: Option<EbTsunamiHeight>,
10848    /// 修正情報
10849    ///
10850    /// 修正が発生した場合に記載する
10851    #[serde(
10852        alias = "Revise",
10853        rename = "revise",
10854        skip_serializing_if = "Option::is_none",
10855        deserialize_with = "trim_opt_string",
10856        default
10857    )]
10858    pub revise: Option<String>,
10859    /// 周期
10860    ///
10861    /// 第1波の周期を示す
10862    #[serde(
10863        alias = "Period",
10864        rename = "period",
10865        skip_serializing_if = "Option::is_none"
10866    )]
10867    pub period: Option<f64>,
10868}
10869
10870#[derive(Debug, Clone, Serialize, Deserialize)]
10871pub struct SeisForecastArea {
10872    /// 予報区名
10873    ///
10874    /// 予報区名称を示す
10875    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
10876    pub name: String,
10877    /// 予報区コード
10878    ///
10879    /// 予報区のコードを示す
10880    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
10881    pub code: String,
10882    /// 該当市町村
10883    ///
10884    /// 予報区に所属する市町村(現在より分解能の細かい予報区分)を示す
10885    #[serde(
10886        alias = "City",
10887        rename = "cities",
10888        skip_serializing_if = "Vec::is_empty",
10889        default
10890    )]
10891    pub cities: Vec<SeisForecastCity>,
10892}
10893
10894#[derive(Debug, Clone, Serialize, Deserialize)]
10895pub struct SeisForecastCity {
10896    /// 市町村名
10897    ///
10898    /// 市町村名称を示す
10899    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
10900    pub name: String,
10901    /// 市町村コード
10902    ///
10903    /// 市町村のコードを示す
10904    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
10905    pub code: String,
10906}
10907
10908#[derive(Debug, Clone, Serialize, Deserialize)]
10909pub struct SeisForecastInt {
10910    /// 補足情報
10911    #[serde(
10912        alias = "@bound",
10913        rename = "bound",
10914        skip_serializing_if = "Option::is_none"
10915    )]
10916    pub bound: Option<String>,
10917    /// 最小震度
10918    ///
10919    /// 予測震度の最小を示す
10920    #[serde(
10921        alias = "From",
10922        rename = "from",
10923        skip_serializing_if = "Option::is_none",
10924        deserialize_with = "trim_opt_string",
10925        default
10926    )]
10927    pub from: Option<String>,
10928    /// 最大震度
10929    ///
10930    /// 予測震度の最大を示す
10931    #[serde(
10932        alias = "To",
10933        rename = "to",
10934        skip_serializing_if = "Option::is_none",
10935        deserialize_with = "trim_opt_string",
10936        default
10937    )]
10938    pub to: Option<String>,
10939}
10940
10941#[derive(Debug, Clone, Serialize, Deserialize)]
10942pub struct SeisForecastLgInt {
10943    /// 補足情報
10944    #[serde(
10945        alias = "@bound",
10946        rename = "bound",
10947        skip_serializing_if = "Option::is_none"
10948    )]
10949    pub bound: Option<String>,
10950    /// 最小長周期地震動階級
10951    ///
10952    /// 予測長周期地震動階級の最小を示す
10953    #[serde(
10954        alias = "From",
10955        rename = "from",
10956        skip_serializing_if = "Option::is_none",
10957        deserialize_with = "trim_opt_string",
10958        default
10959    )]
10960    pub from: Option<String>,
10961    /// 最大長周期地震動階級
10962    ///
10963    /// 予測長周期地震動階級の最大を示す
10964    #[serde(
10965        alias = "To",
10966        rename = "to",
10967        skip_serializing_if = "Option::is_none",
10968        deserialize_with = "trim_opt_string",
10969        default
10970    )]
10971    pub to: Option<String>,
10972}
10973
10974#[derive(Debug, Clone, Serialize, Deserialize)]
10975pub struct SeisHypoArea {
10976    /// 震央地名
10977    ///
10978    /// 震源位置の地名を示す
10979    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
10980    pub name: String,
10981    /// 震央地名コード
10982    ///
10983    /// 震央地名のコードを示す
10984    #[serde(alias = "Code", rename = "code")]
10985    pub code: SeisHypoAreaCode,
10986    /// 震源要素
10987    ///
10988    /// 震源の緯度、経度、深さの位置を示す
10989    #[serde(alias = "Coordinate", rename = "coordinates")]
10990    pub coordinates: Vec<EbCoordinate>,
10991    /// 短縮用震央地名
10992    ///
10993    /// 短縮用震源位置の地名を示す
10994    #[serde(
10995        alias = "ReduceName",
10996        rename = "reduceName",
10997        skip_serializing_if = "Option::is_none",
10998        deserialize_with = "trim_opt_string",
10999        default
11000    )]
11001    pub reduce_name: Option<String>,
11002    /// 短縮用震央地名コード
11003    ///
11004    /// 短縮用震央地名のコードを示す
11005    #[serde(
11006        alias = "ReduceCode",
11007        rename = "reduceCode",
11008        skip_serializing_if = "Option::is_none"
11009    )]
11010    pub reduce_code: Option<SeisHypoAreaReduceCode>,
11011    /// 詳細震央地名
11012    ///
11013    /// 海外の詳細な震源位置の地名を示す
11014    #[serde(
11015        alias = "DetailedName",
11016        rename = "detailedName",
11017        skip_serializing_if = "Option::is_none",
11018        deserialize_with = "trim_opt_string",
11019        default
11020    )]
11021    pub detailed_name: Option<String>,
11022    /// 詳細震央地名コード
11023    ///
11024    /// 詳細震央地名のコードを示す
11025    #[serde(
11026        alias = "DetailedCode",
11027        rename = "detailedCode",
11028        skip_serializing_if = "Option::is_none"
11029    )]
11030    pub detailed_code: Option<SeisHypoAreaDetailedCode>,
11031    /// 震央補助表現
11032    #[serde(
11033        alias = "NameFromMark",
11034        rename = "nameFromMark",
11035        skip_serializing_if = "Option::is_none",
11036        deserialize_with = "trim_opt_string",
11037        default
11038    )]
11039    pub name_from_mark: Option<String>,
11040    /// 震央補助表現コード
11041    ///
11042    /// 震央補助表現のコードを示す
11043    #[serde(
11044        alias = "MarkCode",
11045        rename = "markCode",
11046        skip_serializing_if = "Option::is_none"
11047    )]
11048    pub mark_code: Option<SeisHypoAreaMarkCode>,
11049    /// 方向
11050    ///
11051    /// 16方位で方向を示す
11052    #[serde(
11053        alias = "Direction",
11054        rename = "direction",
11055        skip_serializing_if = "Option::is_none",
11056        deserialize_with = "trim_opt_string",
11057        default
11058    )]
11059    pub direction: Option<String>,
11060    /// 距離
11061    ///
11062    /// 震源と対象地点の距離を示す(10km単位)
11063    #[serde(
11064        alias = "Distance",
11065        rename = "distance",
11066        skip_serializing_if = "Option::is_none"
11067    )]
11068    pub distance: Option<SeisHypoAreaDistance>,
11069    /// 内陸判定
11070    ///
11071    /// 震源位置が内陸か海域かを判定する
11072    #[serde(
11073        alias = "LandOrSea",
11074        rename = "landOrSea",
11075        skip_serializing_if = "Option::is_none"
11076    )]
11077    pub land_or_sea: Option<String>,
11078}
11079
11080#[derive(Debug, Clone, Serialize, Deserialize)]
11081pub struct SeisHypoAreaCode {
11082    #[serde(
11083        alias = "$text",
11084        rename = "value",
11085        default,
11086        deserialize_with = "trim_string"
11087    )]
11088    pub value: String,
11089    /// コード種別
11090    #[serde(alias = "@type", rename = "type")]
11091    pub ty: String,
11092}
11093
11094#[derive(Debug, Clone, Serialize, Deserialize)]
11095pub struct SeisHypoAreaDetailedCode {
11096    #[serde(
11097        alias = "$text",
11098        rename = "value",
11099        default,
11100        deserialize_with = "trim_string"
11101    )]
11102    pub value: String,
11103    /// コード種別
11104    #[serde(alias = "@type", rename = "type")]
11105    pub ty: String,
11106}
11107
11108#[derive(Debug, Clone, Serialize, Deserialize)]
11109pub struct SeisHypoAreaDistance {
11110    #[serde(alias = "$text", rename = "value")]
11111    pub value: i64,
11112    /// 単位
11113    #[serde(alias = "@unit", rename = "unit")]
11114    pub unit: String,
11115}
11116
11117#[derive(Debug, Clone, Serialize, Deserialize)]
11118pub struct SeisHypoAreaMarkCode {
11119    #[serde(
11120        alias = "$text",
11121        rename = "value",
11122        default,
11123        deserialize_with = "trim_string"
11124    )]
11125    pub value: String,
11126    /// コード種別
11127    #[serde(alias = "@type", rename = "type")]
11128    pub ty: String,
11129}
11130
11131#[derive(Debug, Clone, Serialize, Deserialize)]
11132pub struct SeisHypoAreaReduceCode {
11133    #[serde(
11134        alias = "$text",
11135        rename = "value",
11136        default,
11137        deserialize_with = "trim_string"
11138    )]
11139    pub value: String,
11140    /// コード種別
11141    #[serde(alias = "@type", rename = "type")]
11142    pub ty: String,
11143}
11144
11145#[derive(Debug, Clone, Serialize, Deserialize)]
11146pub struct SeisHypocenter {
11147    /// 震源位置要素
11148    ///
11149    /// 震源位置の諸要素を示す
11150    #[serde(alias = "Area", rename = "area")]
11151    pub area: SeisHypoArea,
11152    /// 震源決定機関
11153    ///
11154    /// 震源決定を行った機関を示す
11155    #[serde(
11156        alias = "Source",
11157        rename = "source",
11158        skip_serializing_if = "Option::is_none",
11159        deserialize_with = "trim_opt_string",
11160        default
11161    )]
11162    pub source: Option<String>,
11163    /// 精度情報
11164    ///
11165    /// 精度情報の諸要素を示す
11166    #[serde(
11167        alias = "Accuracy",
11168        rename = "accuracy",
11169        skip_serializing_if = "Option::is_none"
11170    )]
11171    pub accuracy: Option<SeisAccuracy>,
11172}
11173
11174#[derive(Debug, Clone, Serialize, Deserialize)]
11175pub struct SeisInfoSerial {
11176    /// コード種別
11177    #[serde(alias = "@codeType", rename = "codeType")]
11178    pub code_type: String,
11179    /// 情報種別番号名
11180    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11181    pub name: String,
11182    /// 情報種別番号コード
11183    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11184    pub code: String,
11185}
11186
11187#[derive(Debug, Clone, Serialize, Deserialize)]
11188pub struct SeisIntensity {
11189    /// 震度・長周期地震動階級予測要素
11190    ///
11191    /// 震度・長周期地震動階級予測の諸要素を示す
11192    #[serde(
11193        alias = "Forecast",
11194        rename = "forecast",
11195        skip_serializing_if = "Option::is_none"
11196    )]
11197    pub forecast: Option<SeisIntensityDetail>,
11198    /// 震度・長周期地震動階級観測要素
11199    ///
11200    /// 震度・長周期地震動階級観測の諸要素を示す
11201    #[serde(
11202        alias = "Observation",
11203        rename = "observation",
11204        skip_serializing_if = "Option::is_none"
11205    )]
11206    pub observation: Option<SeisIntensityDetail>,
11207}
11208
11209#[derive(Debug, Clone, Serialize, Deserialize)]
11210pub struct SeisIntensityAppendix {
11211    /// 最大予測震度変化
11212    #[serde(alias = "MaxIntChange", rename = "maxIntChange")]
11213    pub max_int_change: i64,
11214    /// 最大予測長周期地震動階級変化
11215    #[serde(
11216        alias = "MaxLgIntChange",
11217        rename = "maxLgIntChange",
11218        skip_serializing_if = "Option::is_none"
11219    )]
11220    pub max_lg_int_change: Option<i64>,
11221    /// 最大予測震度変化の理由
11222    #[serde(alias = "MaxIntChangeReason", rename = "maxIntChangeReason")]
11223    pub max_int_change_reason: i64,
11224    /// 最大予測長周期地震動変化の理由
11225    ///
11226    /// 最大予測長周期地震動変化の理由を示す(現状使用しない)
11227    #[serde(
11228        alias = "MaxLgIntChangeReason",
11229        rename = "maxLgIntChangeReason",
11230        skip_serializing_if = "Option::is_none"
11231    )]
11232    pub max_lg_int_change_reason: Option<i64>,
11233}
11234
11235#[derive(Debug, Clone, Serialize, Deserialize)]
11236pub struct SeisIntensityArea {
11237    /// 地域名
11238    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11239    pub name: String,
11240    /// 地域コード
11241    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11242    pub code: String,
11243    /// 予報カテゴリー
11244    ///
11245    /// 予報カテゴリーの要素を示す
11246    #[serde(
11247        alias = "Category",
11248        rename = "category",
11249        skip_serializing_if = "Option::is_none"
11250    )]
11251    pub category: Option<SeisCategory>,
11252    /// 最大震度
11253    ///
11254    /// 最大(予測)震度を示す
11255    #[serde(
11256        alias = "MaxInt",
11257        rename = "maxInt",
11258        skip_serializing_if = "Option::is_none",
11259        deserialize_with = "trim_opt_string",
11260        default
11261    )]
11262    pub max_int: Option<String>,
11263    /// 最大長周期地震動階級(全周期)
11264    #[serde(
11265        alias = "MaxLgInt",
11266        rename = "maxLgInt",
11267        skip_serializing_if = "Option::is_none",
11268        deserialize_with = "trim_opt_string",
11269        default
11270    )]
11271    pub max_lg_int: Option<String>,
11272    /// 予測震度
11273    #[serde(
11274        alias = "ForecastInt",
11275        rename = "forecastInt",
11276        skip_serializing_if = "Option::is_none"
11277    )]
11278    pub forecast_int: Option<SeisForecastInt>,
11279    /// 予測長周期地震動階級
11280    #[serde(
11281        alias = "ForecastLgInt",
11282        rename = "forecastLgInt",
11283        skip_serializing_if = "Option::is_none"
11284    )]
11285    pub forecast_lg_int: Option<SeisForecastLgInt>,
11286    /// 到達予想時刻
11287    #[serde(
11288        alias = "ArrivalTime",
11289        rename = "arrivalTime",
11290        skip_serializing_if = "Option::is_none"
11291    )]
11292    pub arrival_time: Option<DateTime>,
11293    /// 状況
11294    ///
11295    /// 状況等を示す
11296    #[serde(
11297        alias = "Condition",
11298        rename = "condition",
11299        skip_serializing_if = "Option::is_none",
11300        deserialize_with = "trim_opt_string",
11301        default
11302    )]
11303    pub condition: Option<String>,
11304    /// 修正情報
11305    ///
11306    /// 修正が発生した場合に記載する
11307    #[serde(
11308        alias = "Revise",
11309        rename = "revise",
11310        skip_serializing_if = "Option::is_none",
11311        deserialize_with = "trim_opt_string",
11312        default
11313    )]
11314    pub revise: Option<String>,
11315    /// 市町村要素
11316    ///
11317    /// 市町村の諸要素を示す
11318    #[serde(
11319        alias = "City",
11320        rename = "cities",
11321        skip_serializing_if = "Vec::is_empty",
11322        default
11323    )]
11324    pub cities: Vec<SeisIntensityCity>,
11325    /// 観測点要素
11326    ///
11327    /// 観測点の諸要素を示す
11328    #[serde(
11329        alias = "IntensityStation",
11330        rename = "intensityStations",
11331        skip_serializing_if = "Vec::is_empty",
11332        default
11333    )]
11334    pub intensity_stations: Vec<SeisIntensityStation>,
11335}
11336
11337#[derive(Debug, Clone, Serialize, Deserialize)]
11338pub struct SeisIntensityCity {
11339    /// 市町村名
11340    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11341    pub name: String,
11342    /// 市町村コード
11343    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11344    pub code: String,
11345    /// 予報カテゴリー
11346    ///
11347    /// 予報カテゴリーの要素を示す(現状使用しない)
11348    #[serde(
11349        alias = "Category",
11350        rename = "category",
11351        skip_serializing_if = "Option::is_none"
11352    )]
11353    pub category: Option<SeisCategory>,
11354    /// 最大震度
11355    ///
11356    /// 最大(予測)震度を示す
11357    #[serde(
11358        alias = "MaxInt",
11359        rename = "maxInt",
11360        skip_serializing_if = "Option::is_none",
11361        deserialize_with = "trim_opt_string",
11362        default
11363    )]
11364    pub max_int: Option<String>,
11365    /// 最大長周期地震動階級(全周期)
11366    #[serde(
11367        alias = "MaxLgInt",
11368        rename = "maxLgInt",
11369        skip_serializing_if = "Option::is_none",
11370        deserialize_with = "trim_opt_string",
11371        default
11372    )]
11373    pub max_lg_int: Option<String>,
11374    /// 予測震度
11375    #[serde(
11376        alias = "ForecastInt",
11377        rename = "forecastInt",
11378        skip_serializing_if = "Option::is_none"
11379    )]
11380    pub forecast_int: Option<SeisForecastInt>,
11381    /// 予測長周期地震動階級
11382    #[serde(
11383        alias = "ForecastLgInt",
11384        rename = "forecastLgInt",
11385        skip_serializing_if = "Option::is_none"
11386    )]
11387    pub forecast_lg_int: Option<SeisForecastLgInt>,
11388    /// 到達予想時刻
11389    ///
11390    /// 到達予想時刻を示す(現状使用しない)
11391    #[serde(
11392        alias = "ArrivalTime",
11393        rename = "arrivalTime",
11394        skip_serializing_if = "Option::is_none"
11395    )]
11396    pub arrival_time: Option<DateTime>,
11397    /// 状況
11398    ///
11399    /// 状況等を示す
11400    #[serde(
11401        alias = "Condition",
11402        rename = "condition",
11403        skip_serializing_if = "Option::is_none",
11404        deserialize_with = "trim_opt_string",
11405        default
11406    )]
11407    pub condition: Option<String>,
11408    /// 修正情報
11409    ///
11410    /// 修正が発生した場合に記載する
11411    #[serde(
11412        alias = "Revise",
11413        rename = "revise",
11414        skip_serializing_if = "Option::is_none",
11415        deserialize_with = "trim_opt_string",
11416        default
11417    )]
11418    pub revise: Option<String>,
11419    /// 観測点要素
11420    ///
11421    /// 観測点の諸要素を示す
11422    #[serde(
11423        alias = "IntensityStation",
11424        rename = "intensityStations",
11425        skip_serializing_if = "Vec::is_empty",
11426        default
11427    )]
11428    pub intensity_stations: Vec<SeisIntensityStation>,
11429}
11430
11431#[derive(Debug, Clone, Serialize, Deserialize)]
11432pub struct SeisIntensityDetail {
11433    /// 使うコード体系の定義
11434    ///
11435    /// 各item個要素内におけるcodeのコード体系を定義する。
11436    #[serde(
11437        alias = "CodeDefine",
11438        rename = "codeDefine",
11439        skip_serializing_if = "Option::is_none"
11440    )]
11441    pub code_define: Option<SeisCodeDefine>,
11442    /// 最大震度
11443    #[serde(
11444        alias = "MaxInt",
11445        rename = "maxInt",
11446        skip_serializing_if = "Option::is_none",
11447        deserialize_with = "trim_opt_string",
11448        default
11449    )]
11450    pub max_int: Option<String>,
11451    /// 最大長周期地震動階級(全周期)
11452    #[serde(
11453        alias = "MaxLgInt",
11454        rename = "maxLgInt",
11455        skip_serializing_if = "Option::is_none",
11456        deserialize_with = "trim_opt_string",
11457        default
11458    )]
11459    pub max_lg_int: Option<String>,
11460    /// 長周期地震動に関する観測情報の種類
11461    ///
11462    /// 観測された長周期地震動階級と震度の状況の分類 を示す
11463    #[serde(
11464        alias = "LgCategory",
11465        rename = "lgCategory",
11466        skip_serializing_if = "Option::is_none",
11467        deserialize_with = "trim_opt_string",
11468        default
11469    )]
11470    pub lg_category: Option<String>,
11471    /// 予測震度
11472    #[serde(
11473        alias = "ForecastInt",
11474        rename = "forecastInt",
11475        skip_serializing_if = "Option::is_none"
11476    )]
11477    pub forecast_int: Option<SeisForecastInt>,
11478    /// 予測長周期地震動階級
11479    #[serde(
11480        alias = "ForecastLgInt",
11481        rename = "forecastLgInt",
11482        skip_serializing_if = "Option::is_none"
11483    )]
11484    pub forecast_lg_int: Option<SeisForecastLgInt>,
11485    /// 予測震度付加要素
11486    ///
11487    /// 予測震度の付加要素を示す
11488    #[serde(
11489        alias = "Appendix",
11490        rename = "appendix",
11491        skip_serializing_if = "Option::is_none"
11492    )]
11493    pub appendix: Option<SeisIntensityAppendix>,
11494    /// 都道府県要素
11495    ///
11496    /// 都道府県の諸要素を示す
11497    #[serde(
11498        alias = "Pref",
11499        rename = "prefs",
11500        skip_serializing_if = "Vec::is_empty",
11501        default
11502    )]
11503    pub prefs: Vec<SeisIntensityPref>,
11504}
11505
11506#[derive(Debug, Clone, Serialize, Deserialize)]
11507pub struct SeisIntensityPref {
11508    /// 都道府県名
11509    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11510    pub name: String,
11511    /// 都道府県コード
11512    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11513    pub code: String,
11514    /// 予報カテゴリー
11515    ///
11516    /// 予報カテゴリーの要素を示す
11517    #[serde(
11518        alias = "Category",
11519        rename = "category",
11520        skip_serializing_if = "Option::is_none"
11521    )]
11522    pub category: Option<SeisCategory>,
11523    /// 最大震度
11524    #[serde(
11525        alias = "MaxInt",
11526        rename = "maxInt",
11527        skip_serializing_if = "Option::is_none",
11528        deserialize_with = "trim_opt_string",
11529        default
11530    )]
11531    pub max_int: Option<String>,
11532    /// 最大長周期地震動階級(全周期)
11533    #[serde(
11534        alias = "MaxLgInt",
11535        rename = "maxLgInt",
11536        skip_serializing_if = "Option::is_none",
11537        deserialize_with = "trim_opt_string",
11538        default
11539    )]
11540    pub max_lg_int: Option<String>,
11541    /// 予測震度
11542    #[serde(
11543        alias = "ForecastInt",
11544        rename = "forecastInt",
11545        skip_serializing_if = "Option::is_none"
11546    )]
11547    pub forecast_int: Option<SeisForecastInt>,
11548    /// 予測長周期地震動階級
11549    #[serde(
11550        alias = "ForecastLgInt",
11551        rename = "forecastLgInt",
11552        skip_serializing_if = "Option::is_none"
11553    )]
11554    pub forecast_lg_int: Option<SeisForecastLgInt>,
11555    /// 到達予想時刻
11556    ///
11557    /// 到達予想時刻を示す(現状使用しない)
11558    #[serde(
11559        alias = "ArrivalTime",
11560        rename = "arrivalTime",
11561        skip_serializing_if = "Option::is_none"
11562    )]
11563    pub arrival_time: Option<DateTime>,
11564    /// 状況
11565    ///
11566    /// 状況等を示す
11567    #[serde(
11568        alias = "Condition",
11569        rename = "condition",
11570        skip_serializing_if = "Option::is_none",
11571        deserialize_with = "trim_opt_string",
11572        default
11573    )]
11574    pub condition: Option<String>,
11575    /// 修正情報
11576    ///
11577    /// 修正が発生した場合に記載する
11578    #[serde(
11579        alias = "Revise",
11580        rename = "revise",
11581        skip_serializing_if = "Option::is_none",
11582        deserialize_with = "trim_opt_string",
11583        default
11584    )]
11585    pub revise: Option<String>,
11586    /// 地域要素
11587    ///
11588    /// 地域の諸要素を示す
11589    #[serde(
11590        alias = "Area",
11591        rename = "areas",
11592        skip_serializing_if = "Vec::is_empty",
11593        default
11594    )]
11595    pub areas: Vec<SeisIntensityArea>,
11596}
11597
11598#[derive(Debug, Clone, Serialize, Deserialize)]
11599pub struct SeisIntensityStation {
11600    /// 観測点名
11601    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11602    pub name: String,
11603    /// 観測点コード
11604    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11605    pub code: String,
11606    /// 震度階級
11607    ///
11608    /// 震度を示す(1~4、5-、5+、6-、6+、7)
11609    #[serde(
11610        alias = "Int",
11611        rename = "int",
11612        skip_serializing_if = "Option::is_none",
11613        deserialize_with = "trim_opt_string",
11614        default
11615    )]
11616    pub int: Option<String>,
11617    /// 計測震度
11618    #[serde(alias = "K", rename = "k", skip_serializing_if = "Option::is_none")]
11619    pub k: Option<f64>,
11620    /// 長周期地震動階級(全周期)
11621    ///
11622    /// 長周期地震動階級を示す(全周期)
11623    #[serde(
11624        alias = "LgInt",
11625        rename = "lgInt",
11626        skip_serializing_if = "Option::is_none",
11627        deserialize_with = "trim_opt_string",
11628        default
11629    )]
11630    pub lg_int: Option<String>,
11631    /// 長周期地震動の周期別階級
11632    #[serde(
11633        alias = "LgIntPerPeriod",
11634        rename = "lgIntPerPeriods",
11635        skip_serializing_if = "Vec::is_empty",
11636        default
11637    )]
11638    pub lg_int_per_periods: Vec<SeisLgIntPerPeriod>,
11639    /// 絶対速度応答スペクトルの最大値(全周期)
11640    ///
11641    /// 絶対速度応答スペクトルの最大値を示す(全周期)
11642    #[serde(alias = "Sva", rename = "sva", skip_serializing_if = "Option::is_none")]
11643    pub sva: Option<SeisSva>,
11644    /// 絶対速度応答スペクトルの周期帯における最大値
11645    #[serde(
11646        alias = "SvaPerPeriod",
11647        rename = "svaPerPeriods",
11648        skip_serializing_if = "Vec::is_empty",
11649        default
11650    )]
11651    pub sva_per_periods: Vec<SeisSvaPerPeriod>,
11652    /// 修正情報
11653    ///
11654    /// 修正が発生した場合に記載する
11655    #[serde(
11656        alias = "Revise",
11657        rename = "revise",
11658        skip_serializing_if = "Option::is_none",
11659        deserialize_with = "trim_opt_string",
11660        default
11661    )]
11662    pub revise: Option<String>,
11663}
11664
11665#[derive(Debug, Clone, Serialize, Deserialize)]
11666pub struct SeisKind {
11667    /// 警報名
11668    ///
11669    /// 注警報、予報の名称を示す
11670    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11671    pub name: String,
11672    /// 警報コード
11673    ///
11674    /// 注警報、予報のコードを示す
11675    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11676    pub code: String,
11677}
11678
11679#[derive(Debug, Clone, Serialize, Deserialize)]
11680pub struct SeisLgIntPerPeriod {
11681    #[serde(
11682        alias = "$text",
11683        rename = "value",
11684        default,
11685        deserialize_with = "trim_string"
11686    )]
11687    pub value: String,
11688    /// 対象とする周期帯
11689    #[serde(
11690        alias = "@PeriodicBand",
11691        rename = "periodicBand",
11692        skip_serializing_if = "Option::is_none"
11693    )]
11694    pub periodic_band: Option<i64>,
11695    /// 対象とする周期
11696    ///
11697    /// 対象とする周期を示す(現状使用しない)
11698    #[serde(
11699        alias = "@Period",
11700        rename = "period",
11701        skip_serializing_if = "Option::is_none"
11702    )]
11703    pub period: Option<f64>,
11704    /// 対象とする周期帯の単位
11705    #[serde(
11706        alias = "@PeriodUnit",
11707        rename = "periodUnit",
11708        skip_serializing_if = "Option::is_none"
11709    )]
11710    pub period_unit: Option<String>,
11711}
11712
11713#[derive(Debug, Clone, Serialize, Deserialize)]
11714pub struct SeisMaxHeight {
11715    /// 最大波等の時刻
11716    #[serde(
11717        alias = "DateTime",
11718        rename = "dateTime",
11719        skip_serializing_if = "Option::is_none"
11720    )]
11721    pub date_time: Option<DateTime>,
11722    /// 最大波等の状況
11723    #[serde(
11724        alias = "Condition",
11725        rename = "condition",
11726        skip_serializing_if = "Option::is_none",
11727        deserialize_with = "trim_opt_string",
11728        default
11729    )]
11730    pub condition: Option<String>,
11731    /// 高さの予測値(小さい方)
11732    ///
11733    /// 最大波等の高さの予測値を示す
11734    #[serde(
11735        alias = "TsunamiHeightFrom",
11736        rename = "tsunamiHeightFrom",
11737        skip_serializing_if = "Option::is_none"
11738    )]
11739    pub tsunami_height_from: Option<EbTsunamiHeight>,
11740    /// 高さの予測値(大きな方)
11741    ///
11742    /// 最大波等の高さの予測値を示す
11743    #[serde(
11744        alias = "TsunamiHeightTo",
11745        rename = "tsunamiHeightTo",
11746        skip_serializing_if = "Option::is_none"
11747    )]
11748    pub tsunami_height_to: Option<EbTsunamiHeight>,
11749    /// 高さの値
11750    ///
11751    /// 最大波等の高さの予測値、観測値を示す
11752    #[serde(
11753        alias = "TsunamiHeight",
11754        rename = "tsunamiHeight",
11755        skip_serializing_if = "Option::is_none"
11756    )]
11757    pub tsunami_height: Option<EbTsunamiHeight>,
11758    /// 修正情報
11759    ///
11760    /// 修正が発生した場合に記載する
11761    #[serde(
11762        alias = "Revise",
11763        rename = "revise",
11764        skip_serializing_if = "Option::is_none",
11765        deserialize_with = "trim_opt_string",
11766        default
11767    )]
11768    pub revise: Option<String>,
11769    /// 周期
11770    ///
11771    /// 最大波等の周期を示す
11772    #[serde(
11773        alias = "Period",
11774        rename = "period",
11775        skip_serializing_if = "Option::is_none"
11776    )]
11777    pub period: Option<f64>,
11778}
11779
11780#[derive(Debug, Clone, Serialize, Deserialize)]
11781pub struct SeisNaming {
11782    #[serde(
11783        alias = "$text",
11784        rename = "value",
11785        default,
11786        deserialize_with = "trim_string"
11787    )]
11788    pub value: String,
11789    /// 英語の命名
11790    ///
11791    /// 英語版の命名の内容
11792    #[serde(
11793        alias = "@english",
11794        rename = "english",
11795        skip_serializing_if = "Option::is_none"
11796    )]
11797    pub english: Option<String>,
11798}
11799
11800#[derive(Debug, Clone, Serialize, Deserialize)]
11801pub struct SeisSva {
11802    #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
11803    pub value: f64,
11804    /// 単位
11805    #[serde(alias = "@unit", rename = "unit")]
11806    pub unit: String,
11807}
11808
11809#[derive(Debug, Clone, Serialize, Deserialize)]
11810pub struct SeisSvaPerPeriod {
11811    #[serde(alias = "$text", rename = "value", deserialize_with = "float_or_null")]
11812    pub value: f64,
11813    /// 絶対速度応答スペクトルの単位
11814    #[serde(alias = "@unit", rename = "unit")]
11815    pub unit: String,
11816    /// 対象とする周期帯
11817    #[serde(
11818        alias = "@PeriodicBand",
11819        rename = "periodicBand",
11820        skip_serializing_if = "Option::is_none"
11821    )]
11822    pub periodic_band: Option<i64>,
11823    /// 対象とする周期
11824    ///
11825    /// 対象とする周期を示す(現状使用しない)
11826    #[serde(
11827        alias = "@Period",
11828        rename = "period",
11829        skip_serializing_if = "Option::is_none"
11830    )]
11831    pub period: Option<f64>,
11832    /// 対象とする周期帯の単位
11833    #[serde(
11834        alias = "@PeriodUnit",
11835        rename = "periodUnit",
11836        skip_serializing_if = "Option::is_none"
11837    )]
11838    pub period_unit: Option<String>,
11839}
11840
11841#[derive(Debug, Clone, Serialize, Deserialize)]
11842pub struct SeisTokai {
11843    /// 情報名称
11844    ///
11845    /// 情報名を示す
11846    #[serde(
11847        alias = "InfoKind",
11848        rename = "infoKind",
11849        deserialize_with = "trim_string"
11850    )]
11851    pub info_kind: String,
11852    /// 情報番号
11853    #[serde(
11854        alias = "InfoSerial",
11855        rename = "infoSerial",
11856        skip_serializing_if = "Option::is_none"
11857    )]
11858    pub info_serial: Option<SeisInfoSerial>,
11859    /// 情報本文
11860    ///
11861    /// 東海関連情報本文を示す
11862    #[serde(alias = "Text", rename = "text", deserialize_with = "trim_string")]
11863    pub text: String,
11864}
11865
11866#[derive(Debug, Clone, Serialize, Deserialize)]
11867pub struct SeisTsunami {
11868    /// 津波注警報発表状況
11869    ///
11870    /// 津波注警報の発表状況を示す
11871    #[serde(
11872        alias = "Release",
11873        rename = "release",
11874        skip_serializing_if = "Option::is_none",
11875        deserialize_with = "trim_opt_string",
11876        default
11877    )]
11878    pub release: Option<String>,
11879    /// 津波観測
11880    ///
11881    /// 津波観測の諸要素を示す
11882    #[serde(
11883        alias = "Observation",
11884        rename = "observation",
11885        skip_serializing_if = "Option::is_none"
11886    )]
11887    pub observation: Option<SeisTsunamiDetail>,
11888    /// 津波推測
11889    ///
11890    /// 津波の早期推測の諸要素を示す
11891    #[serde(
11892        alias = "Estimation",
11893        rename = "estimation",
11894        skip_serializing_if = "Option::is_none"
11895    )]
11896    pub estimation: Option<SeisTsunamiDetail>,
11897    /// 津波注警報・予報
11898    ///
11899    /// 津波注警報・予報の諸要素を示す
11900    #[serde(
11901        alias = "Forecast",
11902        rename = "forecast",
11903        skip_serializing_if = "Option::is_none"
11904    )]
11905    pub forecast: Option<SeisTsunamiDetail>,
11906}
11907
11908#[derive(Debug, Clone, Serialize, Deserialize)]
11909pub struct SeisTsunamiDetail {
11910    /// 使うコード体系の定義
11911    ///
11912    /// 各item個要素内におけるcodeのコード体系を定義する。
11913    #[serde(
11914        alias = "CodeDefine",
11915        rename = "codeDefine",
11916        skip_serializing_if = "Option::is_none"
11917    )]
11918    pub code_define: Option<SeisCodeDefine>,
11919    /// 個々の警報事項
11920    ///
11921    /// 個々の予報区毎の警報事項を示す
11922    #[serde(alias = "Item", rename = "items")]
11923    pub items: Vec<SeisTsunamiItem>,
11924}
11925
11926#[derive(Debug, Clone, Serialize, Deserialize)]
11927pub struct SeisTsunamiItem {
11928    /// 津波予報区
11929    ///
11930    /// 津波予報区の要素を示す
11931    #[serde(alias = "Area", rename = "area")]
11932    pub area: SeisForecastArea,
11933    /// 予報カテゴリー
11934    ///
11935    /// 予報カテゴリーの要素を示す
11936    #[serde(
11937        alias = "Category",
11938        rename = "category",
11939        skip_serializing_if = "Option::is_none"
11940    )]
11941    pub category: Option<SeisCategory>,
11942    /// 第1波
11943    ///
11944    /// 第1波の要素を示す
11945    #[serde(
11946        alias = "FirstHeight",
11947        rename = "firstHeight",
11948        skip_serializing_if = "Option::is_none"
11949    )]
11950    pub first_height: Option<SeisFirstHeight>,
11951    /// 最大波
11952    ///
11953    /// 最大波の要素を示す
11954    #[serde(
11955        alias = "MaxHeight",
11956        rename = "maxHeight",
11957        skip_serializing_if = "Option::is_none"
11958    )]
11959    pub max_height: Option<SeisMaxHeight>,
11960    /// 継続時間
11961    ///
11962    /// 津波の予想継続時間を示す
11963    #[serde(
11964        alias = "Duration",
11965        rename = "duration",
11966        skip_serializing_if = "Option::is_none"
11967    )]
11968    pub duration: Option<Duration>,
11969    /// 津波観測点
11970    ///
11971    /// 津波観測点の要素を示す
11972    #[serde(
11973        alias = "Station",
11974        rename = "stations",
11975        skip_serializing_if = "Vec::is_empty",
11976        default
11977    )]
11978    pub stations: Vec<SeisTsunamiStation>,
11979}
11980
11981#[derive(Debug, Clone, Serialize, Deserialize)]
11982pub struct SeisTsunamiStation {
11983    /// 潮位観測点名
11984    ///
11985    /// 潮位観測点名称を示す
11986    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
11987    pub name: String,
11988    /// 潮位観測点コード
11989    ///
11990    /// 潮位観測点のコードを示す
11991    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
11992    pub code: String,
11993    /// 観測機器
11994    ///
11995    /// 特殊観測機器のみ名称を示す
11996    #[serde(
11997        alias = "Sensor",
11998        rename = "sensor",
11999        skip_serializing_if = "Option::is_none",
12000        deserialize_with = "trim_opt_string",
12001        default
12002    )]
12003    pub sensor: Option<String>,
12004    /// 満潮時刻
12005    #[serde(
12006        alias = "HighTideDateTime",
12007        rename = "highTideDateTime",
12008        skip_serializing_if = "Option::is_none"
12009    )]
12010    pub high_tide_date_time: Option<DateTime>,
12011    /// 第1波
12012    ///
12013    /// 第1波の要素を示す
12014    #[serde(alias = "FirstHeight", rename = "firstHeight")]
12015    pub first_height: SeisFirstHeight,
12016    /// 最大波
12017    ///
12018    /// 最大波の要素を示す
12019    #[serde(
12020        alias = "MaxHeight",
12021        rename = "maxHeight",
12022        skip_serializing_if = "Option::is_none"
12023    )]
12024    pub max_height: Option<SeisMaxHeight>,
12025    /// 現在波
12026    ///
12027    /// 現在波の要素を示す
12028    #[serde(
12029        alias = "CurrentHeight",
12030        rename = "currentHeight",
12031        skip_serializing_if = "Option::is_none"
12032    )]
12033    pub current_height: Option<SeisCurrentHeight>,
12034}
12035
12036#[derive(Debug, Clone, Serialize, Deserialize)]
12037pub struct VolcBody {
12038    /// お知らせ
12039    ///
12040    /// お知らせの文章を示す。
12041    #[serde(
12042        alias = "Notice",
12043        rename = "notice",
12044        skip_serializing_if = "Option::is_none",
12045        deserialize_with = "trim_opt_string",
12046        default
12047    )]
12048    pub notice: Option<String>,
12049    /// 防災気象情報
12050    #[serde(
12051        alias = "VolcanoInfo",
12052        rename = "volcanoInfos",
12053        skip_serializing_if = "Vec::is_empty",
12054        default
12055    )]
12056    pub volcano_infos: Vec<VolcVolcanoInfo>,
12057    /// 降灰に関する情報
12058    ///
12059    /// 降灰に関する情報の詳細予報事項を示す。
12060    #[serde(
12061        alias = "AshInfos",
12062        rename = "ashInfos",
12063        skip_serializing_if = "Option::is_none"
12064    )]
12065    pub ash_infos: Option<VolcAshInfos>,
12066    /// 本文
12067    ///
12068    /// 噴火警報・予報、解説情報、海上警報・予報の本文を示す。
12069    #[serde(
12070        alias = "VolcanoInfoContent",
12071        rename = "volcanoInfoContent",
12072        skip_serializing_if = "Option::is_none"
12073    )]
12074    pub volcano_info_content: Option<VolcVolcanoInfoContent>,
12075    /// 本文
12076    ///
12077    /// 噴火に関する火山観測報の本文を示す。
12078    #[serde(
12079        alias = "VolcanoObservation",
12080        rename = "volcanoObservation",
12081        skip_serializing_if = "Option::is_none"
12082    )]
12083    pub volcano_observation: Option<VolcVolcanoObservation>,
12084    /// テキスト要素
12085    ///
12086    /// お知らせ、自由文の要素を示す
12087    #[serde(
12088        alias = "Text",
12089        rename = "text",
12090        skip_serializing_if = "Option::is_none",
12091        deserialize_with = "trim_opt_string",
12092        default
12093    )]
12094    pub text: Option<String>,
12095}
12096
12097#[derive(Debug, Clone, Serialize, Deserialize)]
12098pub struct VolcArea {
12099    /// 対象地域・地点名称
12100    ///
12101    /// 対象火山名・対象市町村等を示す。
12102    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
12103    pub name: String,
12104    /// 対象地域・地点コード
12105    ///
12106    /// 対象火山コード・対象市町村コードを示す。
12107    #[serde(alias = "Code", rename = "code", deserialize_with = "trim_string")]
12108    pub code: String,
12109    /// 対象火山座標
12110    ///
12111    /// 対象火山の緯度経度を示す。
12112    #[serde(
12113        alias = "Coordinate",
12114        rename = "coordinate",
12115        skip_serializing_if = "Option::is_none"
12116    )]
12117    pub coordinate: Option<EbCoordinate>,
12118    /// 基準ポイントからみた位置
12119    ///
12120    /// 対象火山の位置を示すための基準ポイントからみた位置の情報
12121    #[serde(
12122        alias = "AreaFromMark",
12123        rename = "areaFromMark",
12124        skip_serializing_if = "Option::is_none",
12125        deserialize_with = "trim_opt_string",
12126        default
12127    )]
12128    pub area_from_mark: Option<String>,
12129    /// 対象火口名称
12130    ///
12131    /// 対象火口名を示す。
12132    #[serde(
12133        alias = "CraterName",
12134        rename = "craterName",
12135        skip_serializing_if = "Option::is_none",
12136        deserialize_with = "trim_opt_string",
12137        default
12138    )]
12139    pub crater_name: Option<String>,
12140    /// 対象火口座標
12141    #[serde(
12142        alias = "CraterCoordinate",
12143        rename = "craterCoordinate",
12144        skip_serializing_if = "Option::is_none"
12145    )]
12146    pub crater_coordinate: Option<EbCoordinate>,
12147}
12148
12149#[derive(Debug, Clone, Serialize, Deserialize)]
12150pub struct VolcAreas {
12151    /// 対象地域・地点コード種別
12152    ///
12153    /// この要素下に存在するcodeの種別を示す。
12154    #[serde(alias = "@codeType", rename = "codeType")]
12155    pub code_type: String,
12156    /// 対象地域・地点
12157    ///
12158    /// 個々の対象地域・地点を示す。
12159    #[serde(alias = "Area", rename = "areas")]
12160    pub areas: Vec<VolcArea>,
12161}
12162
12163#[derive(Debug, Clone, Serialize, Deserialize)]
12164pub struct VolcAshInfo {
12165    /// 降灰予報の時刻
12166    #[serde(alias = "@type", rename = "type")]
12167    pub ty: String,
12168    /// 予報の開始時刻
12169    #[serde(alias = "StartTime", rename = "startTime")]
12170    pub start_time: DateTime,
12171    /// 予報の終了時刻
12172    #[serde(alias = "EndTime", rename = "endTime")]
12173    pub end_time: DateTime,
12174    /// 個々の防災気象情報要素
12175    ///
12176    /// 防災気象情報事項について、防災気象情報要素と地点等の一組の防災気象情報要素を示す。
12177    #[serde(alias = "Item", rename = "items")]
12178    pub items: Vec<VolcItem>,
12179}
12180
12181#[derive(Debug, Clone, Serialize, Deserialize)]
12182pub struct VolcAshInfos {
12183    /// 降灰予報の種別
12184    ///
12185    /// この要素が示す降灰予報の種別を示す。個々の種別間は独立している。
12186    #[serde(alias = "@type", rename = "type")]
12187    pub ty: String,
12188    /// 個々の時間における降灰予報
12189    ///
12190    /// 防災気象情報を示す。
12191    #[serde(alias = "AshInfo", rename = "ashInfos")]
12192    pub ash_infos: Vec<VolcAshInfo>,
12193}
12194
12195#[derive(Debug, Clone, Serialize, Deserialize)]
12196pub struct VolcDistance {
12197    #[serde(
12198        alias = "$text",
12199        rename = "value",
12200        default,
12201        deserialize_with = "trim_string"
12202    )]
12203    pub value: String,
12204    /// 分類
12205    #[serde(
12206        alias = "@type",
12207        rename = "type",
12208        skip_serializing_if = "Option::is_none"
12209    )]
12210    pub ty: Option<String>,
12211    /// 単位
12212    #[serde(
12213        alias = "@unit",
12214        rename = "unit",
12215        skip_serializing_if = "Option::is_none"
12216    )]
12217    pub unit: Option<String>,
12218    /// 文字列表現
12219    ///
12220    /// 値を文字列で表示する場合の表記法を記述する。
12221    #[serde(
12222        alias = "@description",
12223        rename = "description",
12224        skip_serializing_if = "Option::is_none"
12225    )]
12226    pub description: Option<String>,
12227}
12228
12229#[derive(Debug, Clone, Serialize, Deserialize)]
12230pub struct VolcEventTime {
12231    /// 現象の日本時間での日時
12232    #[serde(
12233        alias = "EventDateTime",
12234        rename = "eventDateTime",
12235        skip_serializing_if = "Option::is_none"
12236    )]
12237    pub event_date_time: Option<EbDateTime>,
12238    /// 現象の世界標準時での日時
12239    #[serde(
12240        alias = "EventDateTimeUTC",
12241        rename = "eventDateTimeUTC",
12242        skip_serializing_if = "Option::is_none"
12243    )]
12244    pub event_date_time_utc: Option<EbDateTime>,
12245    /// 現象の日時についての付加文
12246    #[serde(
12247        alias = "EventDateTimeComment",
12248        rename = "eventDateTimeComment",
12249        skip_serializing_if = "Option::is_none",
12250        deserialize_with = "trim_opt_string",
12251        default
12252    )]
12253    pub event_date_time_comment: Option<String>,
12254}
12255
12256#[derive(Debug, Clone, Serialize, Deserialize)]
12257pub struct VolcItem {
12258    /// 現象の日時
12259    #[serde(
12260        alias = "EventTime",
12261        rename = "eventTime",
12262        skip_serializing_if = "Option::is_none"
12263    )]
12264    pub event_time: Option<VolcEventTime>,
12265    /// 防災気象情報要素
12266    #[serde(alias = "Kind", rename = "kind")]
12267    pub kind: VolcKind,
12268    /// 直前の防災気象情報要素
12269    ///
12270    /// 直前の防災気象情報要素の状況を示す。
12271    #[serde(
12272        alias = "LastKind",
12273        rename = "lastKind",
12274        skip_serializing_if = "Option::is_none"
12275    )]
12276    pub last_kind: Option<VolcKind>,
12277    /// 対象地域・地点全体
12278    ///
12279    /// 対象となる地域・地点群を示す。
12280    #[serde(alias = "Areas", rename = "areas")]
12281    pub areas: VolcAreas,
12282}
12283
12284#[derive(Debug, Clone, Serialize, Deserialize)]
12285pub struct VolcKind {
12286    /// 防災気象情報要素名
12287    #[serde(alias = "Name", rename = "name", deserialize_with = "trim_string")]
12288    pub name: String,
12289    /// 防災気象情報要素名(正式名称)
12290    ///
12291    /// 防災気象情報要素の正式名称を示す。
12292    #[serde(
12293        alias = "FormalName",
12294        rename = "formalName",
12295        skip_serializing_if = "Option::is_none",
12296        deserialize_with = "trim_opt_string",
12297        default
12298    )]
12299    pub formal_name: Option<String>,
12300    /// 防災気象情報要素コード
12301    ///
12302    /// 防災気象情報要素コードを示す。(コード辞書参考)
12303    #[serde(
12304        alias = "Code",
12305        rename = "code",
12306        skip_serializing_if = "Option::is_none",
12307        deserialize_with = "trim_opt_string",
12308        default
12309    )]
12310    pub code: Option<String>,
12311    /// 状況
12312    ///
12313    /// 防災気象情報要素やこの防災気象情報事項について状況を示す。
12314    #[serde(
12315        alias = "Condition",
12316        rename = "condition",
12317        skip_serializing_if = "Option::is_none",
12318        deserialize_with = "trim_opt_string",
12319        default
12320    )]
12321    pub condition: Option<String>,
12322    /// 火山現象の要素
12323    ///
12324    /// 量的予想などの詳細事項を示す。
12325    #[serde(
12326        alias = "Property",
12327        rename = "property",
12328        skip_serializing_if = "Option::is_none"
12329    )]
12330    pub property: Option<VolcProperty>,
12331}
12332
12333#[derive(Debug, Clone, Serialize, Deserialize)]
12334pub struct VolcPlume {
12335    /// 火口縁上噴煙高度
12336    #[serde(alias = "PlumeHeightAboveCrater", rename = "plumeHeightAboveCrater")]
12337    pub plume_height_above_crater: EbPlumeHeight,
12338    /// 海抜噴煙高度
12339    #[serde(
12340        alias = "PlumeHeightAboveSeaLevel",
12341        rename = "plumeHeightAboveSeaLevel",
12342        skip_serializing_if = "Option::is_none"
12343    )]
12344    pub plume_height_above_sea_level: Option<EbPlumeHeight>,
12345    /// 噴煙の流向
12346    #[serde(alias = "PlumeDirection", rename = "plumeDirection")]
12347    pub plume_direction: EbPlumeDirection,
12348    /// 噴煙についての付加文
12349    #[serde(
12350        alias = "PlumeComment",
12351        rename = "plumeComment",
12352        skip_serializing_if = "Option::is_none",
12353        deserialize_with = "trim_opt_string",
12354        default
12355    )]
12356    pub plume_comment: Option<String>,
12357}
12358
12359#[derive(Debug, Clone, Serialize, Deserialize)]
12360pub struct VolcProperty {
12361    /// 現象の量や大きさ
12362    ///
12363    /// 発生する現象の量や大きさを示す。
12364    #[serde(
12365        alias = "Size",
12366        rename = "size",
12367        skip_serializing_if = "Option::is_none"
12368    )]
12369    pub size: Option<VolcSize>,
12370    /// 多角形
12371    ///
12372    /// 等値線の座標を示す(閉じている場合)。
12373    #[serde(alias = "Polygon", rename = "polygons")]
12374    pub polygons: Vec<EbCoordinate>,
12375    /// 影響範囲の方向
12376    #[serde(alias = "PlumeDirection", rename = "plumeDirection")]
12377    pub plume_direction: EbPlumeDirection,
12378    /// 影響範囲の距離
12379    ///
12380    /// 影響範囲の火口からの距離を示す。
12381    #[serde(alias = "Distance", rename = "distance")]
12382    pub distance: VolcDistance,
12383    /// 注意事項・付加事項
12384    #[serde(
12385        alias = "Remark",
12386        rename = "remark",
12387        skip_serializing_if = "Option::is_none",
12388        deserialize_with = "trim_opt_string",
12389        default
12390    )]
12391    pub remark: Option<String>,
12392}
12393
12394#[derive(Debug, Clone, Serialize, Deserialize)]
12395pub struct VolcSize {
12396    #[serde(
12397        alias = "$text",
12398        rename = "value",
12399        skip_serializing_if = "Option::is_none"
12400    )]
12401    pub value: Option<f64>,
12402    /// 分類
12403    #[serde(
12404        alias = "@type",
12405        rename = "type",
12406        skip_serializing_if = "Option::is_none"
12407    )]
12408    pub ty: Option<String>,
12409    /// 単位
12410    #[serde(
12411        alias = "@unit",
12412        rename = "unit",
12413        skip_serializing_if = "Option::is_none"
12414    )]
12415    pub unit: Option<String>,
12416}
12417
12418#[derive(Debug, Clone, Serialize, Deserialize)]
12419pub struct VolcVolcanoInfo {
12420    /// 防災気象情報事項の種別
12421    ///
12422    /// この要素が示す防災気象情報事項の種別を示す。個々の種別間は独立している。
12423    #[serde(alias = "@type", rename = "type")]
12424    pub ty: String,
12425    /// 個々の防災気象情報要素
12426    ///
12427    /// 防災気象情報事項について、防災気象情報要素と地点等の一組の防災気象情報要素を示す。
12428    #[serde(alias = "Item", rename = "items")]
12429    pub items: Vec<VolcItem>,
12430}
12431
12432#[derive(Debug, Clone, Serialize, Deserialize)]
12433pub struct VolcVolcanoInfoContent {
12434    /// 見出し
12435    ///
12436    /// 防災気象情報の見出し文を入れる
12437    #[serde(
12438        alias = "VolcanoHeadline",
12439        rename = "volcanoHeadline",
12440        skip_serializing_if = "Option::is_none",
12441        deserialize_with = "trim_opt_string",
12442        default
12443    )]
12444    pub volcano_headline: Option<String>,
12445    /// 火山の活動状況等
12446    ///
12447    /// 本文中の火山活動状況及び予報警報事項を示す。
12448    #[serde(
12449        alias = "VolcanoActivity",
12450        rename = "volcanoActivity",
12451        skip_serializing_if = "Option::is_none",
12452        deserialize_with = "trim_opt_string",
12453        default
12454    )]
12455    pub volcano_activity: Option<String>,
12456    /// 防災上の警戒事項
12457    ///
12458    /// 本文中の防災上の警戒事項を示す。
12459    #[serde(
12460        alias = "VolcanoPrevention",
12461        rename = "volcanoPrevention",
12462        skip_serializing_if = "Option::is_none",
12463        deserialize_with = "trim_opt_string",
12464        default
12465    )]
12466    pub volcano_prevention: Option<String>,
12467    /// 次の情報発表日時の予告
12468    ///
12469    /// 次情報の発表時刻を示す。(噴火予報・警報の場合は空)
12470    #[serde(
12471        alias = "NextAdvisory",
12472        rename = "nextAdvisory",
12473        skip_serializing_if = "Option::is_none",
12474        deserialize_with = "trim_opt_string",
12475        default
12476    )]
12477    pub next_advisory: Option<String>,
12478    /// その他必要と認める事項
12479    ///
12480    /// 本文中のその他必要と認める事項を示す。
12481    #[serde(
12482        alias = "OtherInfo",
12483        rename = "otherInfo",
12484        skip_serializing_if = "Option::is_none",
12485        deserialize_with = "trim_opt_string",
12486        default
12487    )]
12488    pub other_info: Option<String>,
12489    /// 補足
12490    ///
12491    /// 本文の補足事項を示す。
12492    #[serde(
12493        alias = "Appendix",
12494        rename = "appendix",
12495        skip_serializing_if = "Option::is_none",
12496        deserialize_with = "trim_opt_string",
12497        default
12498    )]
12499    pub appendix: Option<String>,
12500    /// テキスト要素
12501    ///
12502    /// 追加的な情報を記載する。
12503    #[serde(
12504        alias = "Text",
12505        rename = "text",
12506        skip_serializing_if = "Option::is_none",
12507        deserialize_with = "trim_opt_string",
12508        default
12509    )]
12510    pub text: Option<String>,
12511}
12512
12513#[derive(Debug, Clone, Serialize, Deserialize)]
12514pub struct VolcVolcanoObservation {
12515    /// 現象の日時
12516    #[serde(
12517        alias = "EventTime",
12518        rename = "eventTime",
12519        skip_serializing_if = "Option::is_none"
12520    )]
12521    pub event_time: Option<VolcEventTime>,
12522    /// 有色噴煙の状況
12523    #[serde(
12524        alias = "ColorPlume",
12525        rename = "colorPlume",
12526        skip_serializing_if = "Option::is_none"
12527    )]
12528    pub color_plume: Option<VolcPlume>,
12529    /// 白色噴煙の状況
12530    #[serde(
12531        alias = "WhitePlume",
12532        rename = "whitePlume",
12533        skip_serializing_if = "Option::is_none"
12534    )]
12535    pub white_plume: Option<VolcPlume>,
12536    /// 火口直上の風の状況
12537    #[serde(
12538        alias = "WindAboveCrater",
12539        rename = "windAboveCrater",
12540        skip_serializing_if = "Option::is_none"
12541    )]
12542    pub wind_above_crater: Option<VolcWindAboveCrater>,
12543    /// 付加文
12544    #[serde(
12545        alias = "OtherObservation",
12546        rename = "otherObservation",
12547        skip_serializing_if = "Option::is_none",
12548        deserialize_with = "trim_opt_string",
12549        default
12550    )]
12551    pub other_observation: Option<String>,
12552    /// 補足
12553    ///
12554    /// その他の補足事項を示す。
12555    #[serde(
12556        alias = "Appendix",
12557        rename = "appendix",
12558        skip_serializing_if = "Option::is_none",
12559        deserialize_with = "trim_opt_string",
12560        default
12561    )]
12562    pub appendix: Option<String>,
12563}
12564
12565#[derive(Debug, Clone, Serialize, Deserialize)]
12566pub struct VolcWindAboveCrater {
12567    /// 火口直上の風の日本時間での予想時刻
12568    #[serde(alias = "DateTime", rename = "dateTime")]
12569    pub date_time: EbDateTime,
12570    /// 火口直上の風の要素
12571    #[serde(
12572        alias = "WindAboveCraterElements",
12573        rename = "windAboveCraterElementses",
12574        skip_serializing_if = "Vec::is_empty",
12575        default
12576    )]
12577    pub wind_above_crater_elementses: Vec<VolcWindAboveCraterElements>,
12578}
12579
12580#[derive(Debug, Clone, Serialize, Deserialize)]
12581pub struct VolcWindAboveCraterElements {
12582    /// 代表高度
12583    #[serde(
12584        alias = "@heightProperty",
12585        rename = "heightProperty",
12586        skip_serializing_if = "Option::is_none"
12587    )]
12588    pub height_property: Option<String>,
12589    /// 文字列表現
12590    ///
12591    /// 値を文字列で表示する場合の表記法を記述する。
12592    #[serde(
12593        alias = "@description",
12594        rename = "description",
12595        skip_serializing_if = "Option::is_none"
12596    )]
12597    pub description: Option<String>,
12598    /// 火口直上の風の海抜高度
12599    #[serde(alias = "WindHeightAboveSeaLevel", rename = "windHeightAboveSeaLevel")]
12600    pub wind_height_above_sea_level: EbPlumeHeight,
12601    /// 火口直上の風の風向
12602    #[serde(alias = "WindDegree", rename = "windDegree")]
12603    pub wind_degree: EbWindDegree,
12604    /// 火口直上の風の風速
12605    #[serde(alias = "WindSpeed", rename = "windSpeed")]
12606    pub wind_speed: EbWindSpeed,
12607}