mirror of
https://github.com/felt/tippecanoe.git
synced 2026-10-02 16:35:40 +02:00
Don't spend geometry space on index or extent unless it is needed
This commit is contained in:
+15
-3
@@ -178,7 +178,15 @@ void serialize_feature(FILE *geomfile, serial_feature *sf, long long *geompos, c
|
||||
serialize_byte(geomfile, sf->t, geompos, fname);
|
||||
serialize_long_long(geomfile, sf->seq, geompos, fname);
|
||||
|
||||
serialize_long_long(geomfile, (sf->layer << 3) | (sf->has_id ? 4 : 0) | (sf->has_tippecanoe_minzoom ? 2 : 0) | (sf->has_tippecanoe_maxzoom ? 1 : 0), geompos, fname);
|
||||
long long layer = 0;
|
||||
layer |= sf->layer << 5;
|
||||
layer |= (sf->index != 0) << 4;
|
||||
layer |= (sf->extent != 0) << 3;
|
||||
layer |= sf->has_id << 2;
|
||||
layer |= sf->has_tippecanoe_minzoom << 1;
|
||||
layer |= sf->has_tippecanoe_maxzoom << 0;
|
||||
|
||||
serialize_long_long(geomfile, layer, geompos, fname);
|
||||
if (sf->has_tippecanoe_minzoom) {
|
||||
serialize_int(geomfile, sf->tippecanoe_minzoom, geompos, fname);
|
||||
}
|
||||
@@ -193,8 +201,12 @@ void serialize_feature(FILE *geomfile, serial_feature *sf, long long *geompos, c
|
||||
|
||||
write_geometry(sf->geometry, geompos, geomfile, fname, wx, wy);
|
||||
serialize_byte(geomfile, VT_END, geompos, fname);
|
||||
serialize_ulong_long(geomfile, sf->index, geompos, fname);
|
||||
serialize_long_long(geomfile, sf->extent, geompos, fname);
|
||||
if (sf->index != 0) {
|
||||
serialize_ulong_long(geomfile, sf->index, geompos, fname);
|
||||
}
|
||||
if (sf->extent != 0) {
|
||||
serialize_long_long(geomfile, sf->extent, geompos, fname);
|
||||
}
|
||||
|
||||
serialize_int(geomfile, sf->m, geompos, fname);
|
||||
serialize_long_long(geomfile, sf->metapos, geompos, fname);
|
||||
|
||||
Reference in New Issue
Block a user