summaryrefslogtreecommitdiff
path: root/navit
diff options
context:
space:
mode:
authortinloaf <tinloaf@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-02-21 17:52:21 +0000
committertinloaf <tinloaf@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-02-21 17:52:21 +0000
commite0e415b298b8e256bf42b8d90a00c1880b4e5a13 (patch)
tree174aa9e6e2587981b1d8c6ab35adb85b434e696d /navit
parent7bb3d09cf8aba76dbc0d7619d324e6e750481377 (diff)
downloadnavit-e0e415b298b8e256bf42b8d90a00c1880b4e5a13.tar.gz
Add:Osm2Navit:Implementing speedlimits
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@2060 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit')
-rw-r--r--navit/navit/osm2navit.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/navit/navit/osm2navit.c b/navit/navit/osm2navit.c
index aac389c7d..92fd8d3fb 100644
--- a/navit/navit/osm2navit.c
+++ b/navit/navit/osm2navit.c
@@ -549,6 +549,11 @@ struct attr_bin label_attr = {
};
char label_attr_buffer[BUFFER_SIZE];
+struct attr_bin maxspeed_attr = {
+ 0, attr_maxspeed
+};
+int maxspeed_attr_value;
+
struct attr_bin house_number_attr = {
0, attr_house_number
};
@@ -716,11 +721,11 @@ add_tag(char *k, char *v)
v="1";
if (! strcmp(k,"oneway")) {
if (!strcmp(v,"1")) {
- flags_attr_value=AF_ONEWAY;
+ flags_attr_value |= AF_ONEWAY;
flags_attr.len=2;
}
if (! strcmp(v,"-1")) {
- flags_attr_value=AF_ONEWAYREV;
+ flags_attr_value |= AF_ONEWAYREV;
flags_attr.len=2;
}
if (!in_way)
@@ -730,11 +735,17 @@ add_tag(char *k, char *v)
}
if (! strcmp(k,"junction")) {
if (! strcmp(v,"roundabout")) {
- flags_attr_value=AF_ONEWAY;
+ flags_attr_value |= AF_ONEWAY;
flags_attr.len=2;
}
}
if (! strcmp(k,"maxspeed")) {
+ maxspeed_attr_value = atoi(v);
+ if (maxspeed_attr_value) {
+ maxspeed_attr.len = 2;
+ flags_attr_value |= AF_SPEED_LIMIT;
+ flags_attr.len = 2;
+ }
level=5;
}
if (! strcmp(k,"bicycle")) {
@@ -1062,7 +1073,9 @@ add_way(int id)
street_name_attr.len=0;
street_name_systematic_attr.len=0;
debug_attr.len=0;
+ maxspeed_attr.len=0;
flags_attr.len=0;
+ flags_attr_value = 0;
debug_attr_buffer[0]='\0';
osmid_attr.type=attr_osm_wayid;
osmid_attr.len=3;
@@ -1212,6 +1225,8 @@ end_way(FILE *out)
alen+=debug_attr.len+1;
if (flags_attr.len)
alen+=flags_attr.len+1;
+ if (maxspeed_attr.len)
+ alen+=maxspeed_attr.len+1;
if (osmid_attr.len)
alen+=osmid_attr.len+1;
if (count)
@@ -1233,6 +1248,7 @@ end_way(FILE *out)
write_attr(out, &osmid_attr, &osmid_attr_value);
write_attr(out, &debug_attr, debug_attr_buffer);
write_attr(out, &flags_attr, &flags_attr_value);
+ write_attr(out, &maxspeed_attr, &maxspeed_attr_value);
}
static void