mirror of
https://github.com/felt/tippecanoe.git
synced 2026-10-02 08:25:40 +02:00
Don't serialize the per-feature minzoom until geometry merging time
This commit is contained in:
+1
-1
@@ -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;
|
struct index index;
|
||||||
index.start = geomstart;
|
index.start = geomstart;
|
||||||
|
|||||||
@@ -223,6 +223,7 @@ static void merge(struct mergelist *merges, int nmerges, unsigned char *map, FIL
|
|||||||
struct index *ix = (struct index *) (map + head->start);
|
struct index *ix = (struct index *) (map + head->start);
|
||||||
fwrite_check(geom_map + ix->start, 1, ix->end - ix->start, geom_out, "merge geometry");
|
fwrite_check(geom_map + ix->start, 1, ix->end - ix->start, geom_out, "merge geometry");
|
||||||
*geompos += ix->end - ix->start;
|
*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
|
// Count this as an 75%-accomplishment, since we already 25%-counted it
|
||||||
*progress += (ix->end - ix->start) * 3 / 4;
|
*progress += (ix->end - ix->start) * 3 / 4;
|
||||||
|
|||||||
+4
-2
@@ -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_byte(geomfile, sf->t, geompos, fname);
|
||||||
serialize_long_long(geomfile, sf->seq, 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_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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -44,4 +44,4 @@ struct serial_feature {
|
|||||||
long long metapos;
|
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);
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user