1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
use super::{IdxLL, LL, LLH, XYZ};
use serde::Deserialize;

#[derive(Debug, Deserialize, PartialEq, Clone)]
pub struct GeoData {
    #[serde(rename = "EarthModel")]
    pub earth_model: EarthModel,
    #[serde(rename = "SCP")]
    pub scp: SCP,
    #[serde(rename = "ImageCorners")]
    pub image_corners: ImageCorners,
    #[serde(rename = "ValidData")]
    pub valid_data: Option<ValidDataLL>,
    #[serde(rename = "GeoInfo")]
    pub geo_info: Option<Vec<GeoInfo>>,
}
#[derive(Debug, Deserialize, PartialEq, Clone)]
pub struct EarthModel {
    #[serde(rename = "$text")]
    pub value: EarthModelEnum,
}
#[derive(Debug, Deserialize, PartialEq, Clone)]
pub enum EarthModelEnum {
    #[serde(rename = "WGS_84")]
    WGS84,
}
#[derive(Debug, Deserialize, PartialEq, Clone)]
pub struct SCP {
    #[serde(rename = "ECF")]
    pub ecf: XYZ,
    #[serde(rename = "LLH")]
    pub llh: LLH,
}
#[derive(Debug, Deserialize, PartialEq, Clone)]
pub struct ImageCorners {
    #[serde(rename = "ICP")]
    pub icp: Vec<ICP>,
}
#[derive(Debug, Deserialize, PartialEq, Clone)]
pub struct ICP {
    #[serde(rename = "@index")]
    pub index: String,
    #[serde(rename = "Lat")]
    pub lat: f64,
    #[serde(rename = "Lon")]
    pub lon: f64,
}
#[derive(Debug, Deserialize, PartialEq, Clone)]
pub struct ValidDataLL {
    #[serde(rename = "@size")]
    pub size: u64,
    #[serde(rename = "Vertex")]
    pub vertex: Vec<IdxLL>,
}
#[derive(Debug, Deserialize, PartialEq, Clone)]
pub struct GeoInfo {
    #[serde(rename = "@name")]
    pub name: String,
    #[serde(rename = "Desc")]
    pub desc: Option<Vec<Desc>>,
    #[serde(rename = "Point")]
    pub point: Option<LL>,
    #[serde(rename = "Line")]
    pub line: Option<Line>,
    #[serde(rename = "Polygon")]
    pub polygon: Option<Polygon>,
}
#[derive(Debug, Deserialize, PartialEq, Clone)]
pub struct Desc {
    #[serde(rename = "@name")]
    pub name: String,
    #[serde(rename = "$value")]
    pub value: String,
}
#[derive(Debug, Deserialize, PartialEq, Clone)]
pub struct Line {
    #[serde(rename = "@size")]
    pub size: u64,
    #[serde(rename = "Endpoint")]
    pub endpoint: Vec<IdxLL>,
}
#[derive(Debug, Deserialize, PartialEq, Clone)]
pub struct Polygon {
    #[serde(rename = "@size")]
    pub size: u64,
    #[serde(rename = "Vertex")]
    pub vertex: Vec<IdxLL>,
}