else if (!strcmp(rolestr,""))
role=geom_poly_segment_type_way_unknown;
else {
- printf("Unknown role %s\n",rolestr);
+ osm_warning("relation",item_bin_get_relationid(ib),0,"Unknown role %s in member ",rolestr);
+ osm_warning("way",wayid,1,"\n");
role=geom_poly_segment_type_none;
}
relations_add_func(relations, relations_func, boundary, (gpointer)role, 2, wayid);
strcat(newprefix," ");
while (l) {
struct boundary *boundary=l->data;
- printf("%s:%s\n",prefix,osm_tag_name(boundary->ib));
+ fprintf(stderr,"%s:%s (0x%x,0x%x)-(0x%x,0x%x)\n",prefix,osm_tag_name(boundary->ib),boundary->r.l.x,boundary->r.l.y,boundary->r.h.x,boundary->r.h.y);
dump_hierarchy(boundary->children, newprefix);
l=g_list_next(l);
}
}
static GList *
+process_boundaries_insert(GList *list, struct boundary *boundary)
+{
+ GList *l=list;
+ while (l) {
+ struct boundary *b=l->data;
+ if (bbox_contains_bbox(&boundary->r, &b->r)) {
+ list=g_list_remove(list, b);
+ boundary->children=g_list_prepend(boundary->children, b);
+ l=list;
+ } else if (bbox_contains_bbox(&b->r, &boundary->r)) {
+ b->children=process_boundaries_insert(b->children, boundary);
+ return list;
+ } else
+ l=g_list_next(l);
+ }
+ return g_list_prepend(list, boundary);
+}
+
+
+static GList *
process_boundaries_finish(GList *boundaries_list)
{
GList *l,*sl,*l2,*ln;
+ GList *ret=NULL;
l=boundaries_list;
while (l) {
struct boundary *boundary=l->data;
#endif
sl=g_list_next(sl);
}
+ ret=process_boundaries_insert(ret, boundary);
l=g_list_next(l);
if (f)
fclose(f);
#if 0
printf("hierarchy\n");
#endif
+#if 0
boundaries_list=g_list_sort(boundaries_list, boundary_bbox_compare);
l=boundaries_list;
while (l) {
}
l=ln;
}
+ dump_hierarchy(boundaries_list,"");
#if 0
printf("hierarchy done\n");
- dump_hierarchy(boundaries_list,"");
printf("test\n");
test(boundaries_list);
#endif
- return boundaries_list;
+#endif
+ return ret;
}
GList *