1 | *** ../../sdk/navit/navit/maptool/osm.c 2011-01-15 15:27:20.002572453 +0100 |
---|
2 | --- maptool/osm.c 2011-01-15 15:45:56.606644045 +0100 |
---|
3 | *************** |
---|
4 | *** 20,25 **** |
---|
5 | --- 20,27 ---- |
---|
6 | |
---|
7 | |
---|
8 | int maxspeed_attr_value; |
---|
9 | + int maxspeed_forward_attr_value; |
---|
10 | + int maxspeed_backward_attr_value; |
---|
11 | |
---|
12 | char debug_attr_buffer[BUFFER_SIZE]; |
---|
13 | |
---|
14 | *************** |
---|
15 | *** 930,935 **** |
---|
16 | --- 932,957 ---- |
---|
17 | flags[0] |= AF_SPEED_LIMIT; |
---|
18 | level=5; |
---|
19 | } |
---|
20 | + if (! strcmp(k,"maxspeed:forward")) { |
---|
21 | + if (strstr(v, "mph")) { |
---|
22 | + maxspeed_forward_attr_value = (int)floor(atof(v) * 1.609344); |
---|
23 | + } else { |
---|
24 | + maxspeed_forward_attr_value = atoi(v); |
---|
25 | + } |
---|
26 | + if (maxspeed_backward_attr_value >= 0) |
---|
27 | + flags[0] |= AF_SPEED_LIMIT; |
---|
28 | + level=5; |
---|
29 | + } |
---|
30 | + if (! strcmp(k,"maxspeed:backward")) { |
---|
31 | + if (strstr(v, "mph")) { |
---|
32 | + maxspeed_backward_attr_value = (int)floor(atof(v) * 1.609344); |
---|
33 | + } else { |
---|
34 | + maxspeed_backward_attr_value = atoi(v); |
---|
35 | + } |
---|
36 | + if (maxspeed_backward_attr_value >= 0) |
---|
37 | + flags[0] |= AF_SPEED_LIMIT; |
---|
38 | + level=5; |
---|
39 | + } |
---|
40 | if (! strcmp(k,"access")) { |
---|
41 | flags[access_value(v)] |= AF_DANGEROUS_GOODS|AF_EMERGENCY_VEHICLES|AF_TRANSPORT_TRUCK|AF_DELIVERY_TRUCK|AF_PUBLIC_BUS|AF_TAXI|AF_HIGH_OCCUPANCY_CAR|AF_CAR|AF_MOTORCYCLE|AF_MOPED|AF_HORSE|AF_BIKE|AF_PEDESTRIAN; |
---|
42 | level=5; |
---|
43 | *************** |
---|
44 | *** 1348,1353 **** |
---|
45 | --- 1370,1377 ---- |
---|
46 | item.type=type_street_unkn; |
---|
47 | debug_attr_buffer[0]='\0'; |
---|
48 | maxspeed_attr_value=0; |
---|
49 | + maxspeed_forward_attr_value=0; |
---|
50 | + maxspeed_backward_attr_value=0; |
---|
51 | flags_attr_value = 0; |
---|
52 | memset(flags, 0, sizeof(flags)); |
---|
53 | debug_attr_buffer[0]='\0'; |
---|
54 | *************** |
---|
55 | *** 1531,1538 **** |
---|
56 | item_bin_add_attr_string(item_bin, attr_debug, debug_attr_buffer); |
---|
57 | if (add_flags) |
---|
58 | item_bin_add_attr_int(item_bin, attr_flags, flags_attr_value); |
---|
59 | ! if (maxspeed_attr_value) |
---|
60 | ! item_bin_add_attr_int(item_bin, attr_maxspeed, maxspeed_attr_value); |
---|
61 | item_bin_write(item_bin,out); |
---|
62 | } |
---|
63 | } |
---|
64 | --- 1555,1623 ---- |
---|
65 | item_bin_add_attr_string(item_bin, attr_debug, debug_attr_buffer); |
---|
66 | if (add_flags) |
---|
67 | item_bin_add_attr_int(item_bin, attr_flags, flags_attr_value); |
---|
68 | ! |
---|
69 | ! if (flags[0] & AF_SPEED_LIMIT) { |
---|
70 | ! // We must have valid speed limits for all 3 fields - determine them if not defined on map, at least one of them is filled... |
---|
71 | ! |
---|
72 | ! if (maxspeed_attr_value == 0) { // no "default" speed |
---|
73 | ! printf("%d %d %d -> ", maxspeed_attr_value, maxspeed_forward_attr_value, maxspeed_backward_attr_value); |
---|
74 | ! if (maxspeed_forward_attr_value > 0) { |
---|
75 | ! if (maxspeed_backward_attr_value > 0) { |
---|
76 | ! if (maxspeed_forward_attr_value < maxspeed_backward_attr_value) |
---|
77 | ! maxspeed_attr_value = maxspeed_forward_attr_value; |
---|
78 | ! else |
---|
79 | ! maxspeed_attr_value = maxspeed_backward_attr_value; |
---|
80 | ! } else { |
---|
81 | ! maxspeed_attr_value = maxspeed_forward_attr_value; |
---|
82 | ! maxspeed_backward_attr_value = maxspeed_forward_attr_value; |
---|
83 | ! } |
---|
84 | ! } else { // we only have a backward speed |
---|
85 | ! maxspeed_attr_value = maxspeed_backward_attr_value; |
---|
86 | ! maxspeed_forward_attr_value = maxspeed_backward_attr_value; |
---|
87 | ! } |
---|
88 | ! printf("%d %d %d\n", maxspeed_attr_value, maxspeed_forward_attr_value, maxspeed_backward_attr_value); |
---|
89 | ! } |
---|
90 | ! |
---|
91 | ! if (maxspeed_forward_attr_value == 0) { // no "forward" speed |
---|
92 | ! if (maxspeed_attr_value > 0) { |
---|
93 | ! if (maxspeed_backward_attr_value > 0) { |
---|
94 | ! if (maxspeed_attr_value < maxspeed_backward_attr_value) |
---|
95 | ! maxspeed_forward_attr_value = maxspeed_attr_value; |
---|
96 | ! else |
---|
97 | ! maxspeed_forward_attr_value = maxspeed_backward_attr_value; |
---|
98 | ! } else { |
---|
99 | ! maxspeed_forward_attr_value = maxspeed_attr_value; |
---|
100 | ! maxspeed_backward_attr_value = maxspeed_attr_value; |
---|
101 | ! } |
---|
102 | ! } else { // we only have a backward speed |
---|
103 | ! maxspeed_forward_attr_value = maxspeed_backward_attr_value; |
---|
104 | ! maxspeed_attr_value = maxspeed_backward_attr_value; |
---|
105 | ! } |
---|
106 | ! } |
---|
107 | ! |
---|
108 | ! if (maxspeed_backward_attr_value == 0) { // no "backward" speed |
---|
109 | ! if (maxspeed_attr_value > 0) { |
---|
110 | ! if (maxspeed_forward_attr_value > 0) { |
---|
111 | ! if (maxspeed_attr_value < maxspeed_forward_attr_value) |
---|
112 | ! maxspeed_backward_attr_value = maxspeed_attr_value; |
---|
113 | ! else |
---|
114 | ! maxspeed_backward_attr_value = maxspeed_forward_attr_value; |
---|
115 | ! } else { |
---|
116 | ! maxspeed_forward_attr_value = maxspeed_attr_value; |
---|
117 | ! maxspeed_backward_attr_value = maxspeed_attr_value; |
---|
118 | ! } |
---|
119 | ! } else { // we only have a forward speed |
---|
120 | ! maxspeed_backward_attr_value = maxspeed_forward_attr_value; |
---|
121 | ! maxspeed_attr_value = maxspeed_forward_attr_value; |
---|
122 | ! } |
---|
123 | ! } |
---|
124 | ! |
---|
125 | ! |
---|
126 | ! item_bin_add_attr_int(item_bin, attr_maxspeed, maxspeed_attr_value); |
---|
127 | ! item_bin_add_attr_int(item_bin, attr_maxspeed_forward, maxspeed_forward_attr_value); |
---|
128 | ! item_bin_add_attr_int(item_bin, attr_maxspeed_backward, maxspeed_backward_attr_value); |
---|
129 | ! } |
---|
130 | ! |
---|
131 | item_bin_write(item_bin,out); |
---|
132 | } |
---|
133 | } |
---|