-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOSMType.cs
118 lines (89 loc) · 2.63 KB
/
OSMType.cs
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
using System;
using System.Collections.Generic;
using System.Text;
namespace OsmGlommer
{
public class BaseOSM
{
public BaseOSM()
{
InnerAttributes = new Dictionary<string, string>();
Tags = new Dictionary<string, string>();
}
public Dictionary<string, string> InnerAttributes { get; set; }
public Dictionary<string, string> Tags { get; set; }
public Int64 ID { get; set; }
public double Lat { get; set; } // Address of node or center of polygon
public double Lon { get; set; } // Address of node or center of polygon
}
//public class OSMTags
//{
// public OSMTags()
// {
// InnerAttributes = new Dictionary<string, string>();
// Tags = new Dictionary<string, string>();
// }
// public Dictionary<string, string> InnerAttributes { get; set; }
// public Dictionary<string, string> Tags { get; set; }
//}
public class BBox
{
public BBox()
{
MinLat = 999.0;
MaxLat = -999.0;
MinLon = 999.0;
MaxLon = -999.0;
}
public double MinLat { get; set; }
public double MaxLat { get; set; }
public double MinLon { get; set; }
public double MaxLon { get; set; }
}
public class OSMNode : BaseOSM
{
public OSMNode() : base()
{
}
public Int64 NewID { get; set; }
public bool IsUsed { get; set; }
}
public class OSMWay : BaseOSM
{
public OSMWay() : base()
{
Bbox = new BBox();
NodeList = new List<OSMNode>();
}
public void SetCenter()
{
Lat = (Bbox.MaxLat + Bbox.MinLat) / 2.0;
Lon = (Bbox.MaxLon + Bbox.MinLon) / 2.0;
}
public List<OSMNode> NodeList { get; set; }
public BBox Bbox { get; set; }
public bool IsUsed { get; set; }
}
public class OSMRelation : BaseOSM
{
public OSMRelation() : base()
{
OSMWays = new List<OSMWay>();
Members = new List<RelationMember>();
}
public void SetCenter()
{
Lat = (Bbox.MaxLat + Bbox.MinLat) / 2.0;
Lon = (Bbox.MaxLon + Bbox.MinLon) / 2.0;
}
public List<OSMWay> OSMWays { get; set; }
public List<RelationMember> Members { get; set; }
public BBox Bbox { get; set; }
}
public class RelationMember
{
public string MemberType { get; set; }
public Int64 Ref { get; set; }
public string Role { get; set; }
}
}