summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Wildemann <gta04@metalstrolche.de>2019-07-28 01:10:30 +0200
committerStefan Wildemann <gta04@metalstrolche.de>2019-07-28 12:33:49 +0200
commit7661afa5369c6e11da9995b551546fe16a0e0ed7 (patch)
tree4ca3eaa8b2c777f0a1a73647d956164a14217483
parentf99e5245364d2b7cf9eb1d6c9ad8a09b263f7498 (diff)
downloadnavit-7661afa5369c6e11da9995b551546fe16a0e0ed7.tar.gz
Fix coord count on attr_poly_hole. Forward name to multipolygons.
-rw-r--r--navit/maptool/osm.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/navit/maptool/osm.c b/navit/maptool/osm.c
index 00257129b..166f57e31 100644
--- a/navit/maptool/osm.c
+++ b/navit/maptool/osm.c
@@ -1623,6 +1623,7 @@ void osm_end_relation(struct maptool_osm *osm) {
fprintf(stderr,"relation_type=%s\n", relation_type);
if ((!g_strcmp0(relation_type, "multipolygon")) && (!boundary)) {
+ item_bin_add_attr_string(tmp_item_bin, attr_label, attr_strings[attr_string_label]);
item_bin_write(tmp_item_bin, osm->multipolygons);
}
@@ -1681,6 +1682,8 @@ static void relation_add_tag(char *k, char *v) {
}
} else if (!g_strcmp0(k,"ISO3166-1") || !g_strcmp0(k,"ISO3166-1:alpha2")) {
g_strlcpy(iso_code, v, sizeof(iso_code));
+ } else if (! g_strcmp0(k,"name")) {
+ attr_strings_save(attr_string_label, v);
}
if (add_tag) {
char *tag;
@@ -2689,6 +2692,7 @@ static void process_multipolygons_finish(GList *tr, FILE *out) {
item_bin_init(ib,multipolygon->rel->type);
item_bin_copy_coord(ib,multipolygon->outer[0],1);
item_bin_copy_attr(ib,multipolygon->rel,attr_osm_relationid);
+ item_bin_copy_attr(ib,multipolygon->rel,attr_label);
for(a = 0; a < multipolygon->inner_count; a ++) {
int hole_len;
@@ -2702,6 +2706,9 @@ static void process_multipolygons_finish(GList *tr, FILE *out) {
if(id !=NULL)
memcpy(&(buffer[used]), id, sizeof(id));
used += sizeof(id);
+ /* item_bin gives the coordinate count in 32bit values. We want to have it in
+ * number of coordinates. So divide by 2. Then we can memcopy*/
+ multipolygon->inner[a]->clen /= 2;
memcpy(&(buffer[used]), &(multipolygon->inner[a]->clen), hole_len - used);
item_bin_add_attr_data(ib, attr_poly_hole, buffer, hole_len);
}