summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--navit/attr_def.h2
-rw-r--r--navit/maptool/maptool.c3
-rw-r--r--navit/maptool/maptool.h1
-rw-r--r--navit/maptool/osm.c8
4 files changed, 14 insertions, 0 deletions
diff --git a/navit/attr_def.h b/navit/attr_def.h
index 2f92a563..1b3c099a 100644
--- a/navit/attr_def.h
+++ b/navit/attr_def.h
@@ -480,6 +480,8 @@ ATTR2(0x000c0000,type_int64_begin)
ATTR(osm_nodeid)
ATTR(osm_wayid)
ATTR(osm_relationid)
+ATTR(osm_nodeid_first_node)
+ATTR(osm_nodeid_last_node)
ATTR2(0x000cffff,type_int64_end)
ATTR2(0x000d0000,type_group_begin)
ATTR(speed_dep)
diff --git a/navit/maptool/maptool.c b/navit/maptool/maptool.c
index d35994e9..067c8289 100644
--- a/navit/maptool/maptool.c
+++ b/navit/maptool/maptool.c
@@ -442,6 +442,7 @@ osm_collect_data(struct maptool_params *p, char *suffix)
if (p->process_relations) {
p->osm.boundaries=tempfile(suffix,"boundaries",1);
p->osm.associated_streets=tempfile(suffix,"associated_streets",1);
+ p->osm.house_number_interpolations=tempfile(suffix,"house_number_interpolations",1);
}
#ifdef HAVE_POSTGRESQL
if (p->dbstr)
@@ -483,6 +484,8 @@ osm_collect_data(struct maptool_params *p, char *suffix)
fclose(p->osm.turn_restrictions);
if (p->osm.associated_streets)
fclose(p->osm.associated_streets);
+ if (p->osm.house_number_interpolations)
+ fclose(p->osm.house_number_interpolations);
if (p->osm.boundaries)
fclose(p->osm.boundaries);
if (p->osm.poly2poi)
diff --git a/navit/maptool/maptool.h b/navit/maptool/maptool.h
index 22f36b5e..1b7fc5c3 100644
--- a/navit/maptool/maptool.h
+++ b/navit/maptool/maptool.h
@@ -258,6 +258,7 @@ struct maptool_osm {
FILE *boundaries;
FILE *turn_restrictions;
FILE *associated_streets;
+ FILE *house_number_interpolations;
FILE *nodes;
FILE *ways;
FILE *line2poi;
diff --git a/navit/maptool/osm.c b/navit/maptool/osm.c
index c7716bbe..eb080192 100644
--- a/navit/maptool/osm.c
+++ b/navit/maptool/osm.c
@@ -1755,6 +1755,14 @@ osm_end_way(struct maptool_osm *osm)
if(i>0)
item_bin_add_attr_int(item_bin, attr_duplicate, 1);
item_bin_write(item_bin,osm->ways);
+
+ if (types[i]>=type_house_number_interpolation_even && types[i]<=type_house_number_interpolation_alphabetic){
+ struct item_bin *item_bin_interpolation_way=init_item(types[i]);
+ item_bin_add_attr_longlong(item_bin, attr_osm_wayid, osmid_attr_value);
+ item_bin_add_attr_longlong(item_bin, attr_osm_nodeid_first_node, GET_REF(coord_buffer[0]));
+ item_bin_add_attr_longlong(item_bin, attr_osm_nodeid_last_node, GET_REF(coord_buffer[coord_count-1]));
+ item_bin_write(item_bin_interpolation_way, osm->house_number_interpolations);
+ }
}
if(osm->line2poi) {
count=attr_longest_match(attr_mapping_way2poi, attr_mapping_way2poi_count, types, sizeof(types)/sizeof(enum item_type));