Don't serialize the per-feature minzoom until geometry merging time

This commit is contained in:
Eric Fischer 2016-10-10 15:31:09 -07:00
parent 04157e7728
commit c8a1b082e0
5 changed files with 8 additions and 5 deletions

View File

@ -424,7 +424,7 @@ int serialize_geometry(json_object *geometry, json_object *properties, json_obje
}
}
serialize_feature(geomfile, &sf, geompos, fname, *initial_x >> geometry_scale, *initial_y >> geometry_scale);
serialize_feature(geomfile, &sf, geompos, fname, *initial_x >> geometry_scale, *initial_y >> geometry_scale, false);
struct index index;
index.start = geomstart;

View File

@ -223,6 +223,7 @@ static void merge(struct mergelist *merges, int nmerges, unsigned char *map, FIL
struct index *ix = (struct index *) (map + head->start);
fwrite_check(geom_map + ix->start, 1, ix->end - ix->start, geom_out, "merge geometry");
*geompos += ix->end - ix->start;
serialize_byte(geom_out, 0, geompos, "merge geometry");
// Count this as an 75%-accomplishment, since we already 25%-counted it
*progress += (ix->end - ix->start) * 3 / 4;

View File

@ -174,7 +174,7 @@ static void write_geometry(drawvec const &dv, long long *fpos, FILE *out, const
}
}
void serialize_feature(FILE *geomfile, serial_feature *sf, long long *geompos, const char *fname, long long wx, long long wy) {
void serialize_feature(FILE *geomfile, serial_feature *sf, long long *geompos, const char *fname, long long wx, long long wy, bool include_minzoom) {
serialize_byte(geomfile, sf->t, geompos, fname);
serialize_long_long(geomfile, sf->seq, geompos, fname);
@ -207,5 +207,7 @@ void serialize_feature(FILE *geomfile, serial_feature *sf, long long *geompos, c
serialize_long_long(geomfile, sf->values[i], geompos, fname);
}
serialize_byte(geomfile, sf->feature_minzoom, geompos, fname);
if (include_minzoom) {
serialize_byte(geomfile, sf->feature_minzoom, geompos, fname);
}
}

View File

@ -44,4 +44,4 @@ struct serial_feature {
long long metapos;
};
void serialize_feature(FILE *geomfile, serial_feature *sf, long long *geompos, const char *fname, long long wx, long long wy);
void serialize_feature(FILE *geomfile, serial_feature *sf, long long *geompos, const char *fname, long long wx, long long wy, bool include_minzoom);

View File

@ -361,7 +361,7 @@ void rewrite(drawvec &geom, int z, int nextzoom, int maxzoom, long long *bbox, u
}
}
serialize_feature(geomfile[j], &sf, &geompos[j], fname, initial_x[segment] >> geometry_scale, initial_y[segment] >> geometry_scale);
serialize_feature(geomfile[j], &sf, &geompos[j], fname, initial_x[segment] >> geometry_scale, initial_y[segment] >> geometry_scale, true);
}
}
}