summaryrefslogtreecommitdiff
path: root/navit/maptool
diff options
context:
space:
mode:
authormdankov <mdankov@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-02-17 21:07:58 +0000
committermdankov <mdankov@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-02-17 21:07:58 +0000
commit4f013c6f3b0d28ac89a8d71106c7e2eb7879c652 (patch)
treef401bc7ba681f555bd8763663884e2c0a79daea8 /navit/maptool
parent77dca73c4f832fa7257cdd2b7c37ede74d659d34 (diff)
downloadnavit-svn-4f013c6f3b0d28ac89a8d71106c7e2eb7879c652.tar.gz
Fix:maptool:Make expiremental feature to skip extra administrative subdivisions (svn 5380) work.
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5384 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/maptool')
-rw-r--r--navit/maptool/boundaries.c6
-rw-r--r--navit/maptool/osm.c11
2 files changed, 8 insertions, 9 deletions
diff --git a/navit/maptool/boundaries.c b/navit/maptool/boundaries.c
index bf9ceb3c..b3fd63f0 100644
--- a/navit/maptool/boundaries.c
+++ b/navit/maptool/boundaries.c
@@ -108,9 +108,9 @@ process_boundaries_setup(FILE *boundaries, struct relations *relations)
rolestr=member+read;
if(member_type==1) {
- if(!strcmp(rolestr,"admin_centre") || !strcmp(rolestr,"admin_center"))
- boundary->admin_centre=osm_id;
- }
+ if(!strcmp(rolestr,"admin_centre") || !strcmp(rolestr,"admin_center"))
+ boundary->admin_centre=osm_id;
+ }
if(member_type==2) {
enum geom_poly_segment_type role;
if (!strcmp(rolestr,"outer") || !strcmp(rolestr,"exclave"))
diff --git a/navit/maptool/osm.c b/navit/maptool/osm.c
index fc6696cf..52cfdbfd 100644
--- a/navit/maptool/osm.c
+++ b/navit/maptool/osm.c
@@ -1837,15 +1837,14 @@ osm_process_town_by_boundary(GList *bl, struct item_bin *ib, struct coord *c, st
if (match) {
if (match && match->country && match->country->admin_levels) {
- char *nodeid=item_bin_get_attr(ib, attr_osm_nodeid, NULL);
- long long node_id;
+ long long *nodeid=item_bin_get_attr(ib, attr_osm_nodeid, NULL);
+ long long node_id=0;
int end=strlen(match->country->admin_levels)+3;
int a;
- int max_adm_level=end;
+ int max_adm_level=0;
if(nodeid)
- if(sscanf(nodeid,LONGLONG_FMT,&node_id)<1)
- node_id=0;
+ node_id=*nodeid;
l=matches;
while (l) {
@@ -1889,7 +1888,7 @@ osm_process_town_by_boundary(GList *bl, struct item_bin *ib, struct coord *c, st
/* Administrative centres are not to be contained in their own districts. */
if(experimental && max_adm_level>0)
- for(a=end-1;a>max_adm_level;a--)
+ for(a=end-1;a>max_adm_level && a>2;a--)
attrs[a-2].type=type_none;
}