Skip to content

Commit

Permalink
Calculate an antimeridian-adjusted bounding box in tileset metadata (f…
Browse files Browse the repository at this point in the history
…elt#82)

* Calculate a new antimeridian-adjusted bounding box

* Add antimeridian bounding box to pmtiles, dirtiles, and tile-join

* Don't take out-of-bounds latitudes into account in the adjusted bbox

* Update changelog

* Forgot to adjust tests after the last change
  • Loading branch information
e-n-f authored Mar 10, 2023
1 parent 329dd86 commit afc7ca0
Show file tree
Hide file tree
Showing 195 changed files with 297 additions and 13 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
# 2.24.0

* Add --cluster-maxzoom option to limit zoom levels that receive clustering
* Add `point_count_abbreviated` attribute to clustered features, for consistency with supercluster
* Makefile changes to support FreeBSD
* Add -r option to tile-join to provide a file containing a list of input files
* Add antimeridian_adjusted_bounds field to tileset metadata

## 2.23.0

Expand Down
1 change: 1 addition & 0 deletions dirtiles.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,7 @@ void dir_write_metadata(const char *outdir, const metadata &m) {
out(state, "maxzoom", std::to_string(m.maxzoom));
out(state, "center", std::to_string(m.center_lon) + "," + std::to_string(m.center_lat) + "," + std::to_string(m.center_z));
out(state, "bounds", std::to_string(m.minlon) + "," + std::to_string(m.minlat) + "," + std::to_string(m.maxlon) + "," + std::to_string(m.maxlat));
out(state, "antimeridian_adjusted_bounds", std::to_string(m.minlon2) + "," + std::to_string(m.minlat2) + "," + std::to_string(m.maxlon2) + "," + std::to_string(m.maxlat2));
out(state, "type", m.type);
if (m.attribution.size() > 0) {
out(state, "attribution", m.attribution);
Expand Down
35 changes: 30 additions & 5 deletions main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1113,7 +1113,7 @@ void radix(std::vector<struct reader> &readers, int nreaders, FILE *geomfile, FI
}
}

void choose_first_zoom(long long *file_bbox, std::vector<struct reader> &readers, unsigned *iz, unsigned *ix, unsigned *iy, int minzoom, int buffer) {
void choose_first_zoom(long long *file_bbox, long long *file_bbox1, long long *file_bbox2, std::vector<struct reader> &readers, unsigned *iz, unsigned *ix, unsigned *iy, int minzoom, int buffer) {
for (size_t i = 0; i < CPUS; i++) {
if (readers[i].file_bbox[0] < file_bbox[0]) {
file_bbox[0] = readers[i].file_bbox[0];
Expand All @@ -1127,6 +1127,16 @@ void choose_first_zoom(long long *file_bbox, std::vector<struct reader> &readers
if (readers[i].file_bbox[3] > file_bbox[3]) {
file_bbox[3] = readers[i].file_bbox[3];
}

file_bbox1[0] = std::min(file_bbox1[0], readers[i].file_bbox1[0]);
file_bbox1[1] = std::min(file_bbox1[1], readers[i].file_bbox1[1]);
file_bbox1[2] = std::max(file_bbox1[2], readers[i].file_bbox1[2]);
file_bbox1[3] = std::max(file_bbox1[3], readers[i].file_bbox1[3]);

file_bbox2[0] = std::min(file_bbox2[0], readers[i].file_bbox2[0]);
file_bbox2[1] = std::min(file_bbox2[1], readers[i].file_bbox2[1]);
file_bbox2[2] = std::max(file_bbox2[2], readers[i].file_bbox2[2]);
file_bbox2[3] = std::max(file_bbox2[3], readers[i].file_bbox2[3]);
}

// If the bounding box extends off the plane on either side,
Expand Down Expand Up @@ -1164,7 +1174,7 @@ void choose_first_zoom(long long *file_bbox, std::vector<struct reader> &readers
}
}

std::pair<int, metadata> read_input(std::vector<source> &sources, char *fname, int maxzoom, int minzoom, int basezoom, double basezoom_marker_width, sqlite3 *outdb, const char *outdir, std::set<std::string> *exclude, std::set<std::string> *include, int exclude_all, json_object *filter, double droprate, int buffer, const char *tmpdir, double gamma, int read_parallel, int forcetable, const char *attribution, bool uses_gamma, long long *file_bbox, const char *prefilter, const char *postfilter, const char *description, bool guess_maxzoom, bool guess_cluster_maxzoom, std::map<std::string, int> const *attribute_types, const char *pgm, std::map<std::string, attribute_op> const *attribute_accum, std::map<std::string, std::string> const &attribute_descriptions, std::string const &commandline, int minimum_maxzoom) {
std::pair<int, metadata> read_input(std::vector<source> &sources, char *fname, int maxzoom, int minzoom, int basezoom, double basezoom_marker_width, sqlite3 *outdb, const char *outdir, std::set<std::string> *exclude, std::set<std::string> *include, int exclude_all, json_object *filter, double droprate, int buffer, const char *tmpdir, double gamma, int read_parallel, int forcetable, const char *attribution, bool uses_gamma, long long *file_bbox, long long *file_bbox1, long long *file_bbox2, const char *prefilter, const char *postfilter, const char *description, bool guess_maxzoom, bool guess_cluster_maxzoom, std::map<std::string, int> const *attribute_types, const char *pgm, std::map<std::string, attribute_op> const *attribute_accum, std::map<std::string, std::string> const &attribute_descriptions, std::string const &commandline, int minimum_maxzoom) {
int ret = EXIT_SUCCESS;

std::vector<struct reader> readers;
Expand Down Expand Up @@ -1938,7 +1948,7 @@ std::pair<int, metadata> read_input(std::vector<source> &sources, char *fname, i
unlink(geomname);

unsigned iz = 0, ix = 0, iy = 0;
choose_first_zoom(file_bbox, readers, &iz, &ix, &iy, minzoom, buffer);
choose_first_zoom(file_bbox, file_bbox1, file_bbox2, readers, &iz, &ix, &iy, minzoom, buffer);

if (justx >= 0) {
iz = minzoom;
Expand Down Expand Up @@ -2512,6 +2522,7 @@ std::pair<int, metadata> read_input(std::vector<source> &sources, char *fname, i
perror("close pool");
}

// mbtiles-style bounding box and center
double minlat = 0, minlon = 0, maxlat = 0, maxlon = 0, midlat = 0, midlon = 0;

tile2lonlat(midx, midy, maxzoom, &minlon, &maxlat);
Expand All @@ -2536,14 +2547,25 @@ std::pair<int, metadata> read_input(std::vector<source> &sources, char *fname, i
midlon = maxlon;
}

// antimeridian-aware bounding box
double minlat2 = 0, minlon2 = 0, maxlat2 = 0, maxlon2 = 0;
// choose whichever of the two calculated bboxes is narrower
if (file_bbox2[2] - file_bbox2[0] < file_bbox1[2] - file_bbox1[0]) {
tile2lonlat(file_bbox2[0], file_bbox2[1], 32, &minlon2, &maxlat2);
tile2lonlat(file_bbox2[2], file_bbox2[3], 32, &maxlon2, &minlat2);
} else {
tile2lonlat(file_bbox1[0], file_bbox1[1], 32, &minlon2, &maxlat2);
tile2lonlat(file_bbox1[2], file_bbox1[3], 32, &maxlon2, &minlat2);
}

std::map<std::string, layermap_entry> merged_lm = merge_layermaps(layermaps);

for (auto ai = merged_lm.begin(); ai != merged_lm.end(); ++ai) {
ai->second.minzoom = minzoom;
ai->second.maxzoom = maxzoom;
}

metadata m = make_metadata(fname, minzoom, maxzoom, minlat, minlon, maxlat, maxlon, midlat, midlon, attribution, merged_lm, true, description, !prevent[P_TILE_STATS], attribute_descriptions, "tippecanoe", commandline, strategies);
metadata m = make_metadata(fname, minzoom, maxzoom, minlat, minlon, maxlat, maxlon, minlat2, minlon2, maxlat2, maxlon2, midlat, midlon, attribution, merged_lm, true, description, !prevent[P_TILE_STATS], attribute_descriptions, "tippecanoe", commandline, strategies);
if (outdb != NULL) {
mbtiles_write_metadata(outdb, m, forcetable);
} else {
Expand Down Expand Up @@ -3499,9 +3521,12 @@ int main(int argc, char **argv) {

long long file_bbox[4] = {UINT_MAX, UINT_MAX, 0, 0};

long long file_bbox1[4] = {0xFFFFFFFF, 0xFFFFFFFF, 0, 0}; // standard -180 to 180 world plane
long long file_bbox2[4] = {0x1FFFFFFFF, 0xFFFFFFFF, 0x100000000, 0}; // 0 to 360 world plane

auto input_ret = read_input(sources, name ? name : out_mbtiles ? out_mbtiles
: out_dir,
maxzoom, minzoom, basezoom, basezoom_marker_width, outdb, out_dir, &exclude, &include, exclude_all, filter, droprate, buffer, tmpdir, gamma, read_parallel, forcetable, attribution, gamma != 0, file_bbox, prefilter, postfilter, description, guess_maxzoom, guess_cluster_maxzoom, &attribute_types, argv[0], &attribute_accum, attribute_descriptions, commandline, minimum_maxzoom);
maxzoom, minzoom, basezoom, basezoom_marker_width, outdb, out_dir, &exclude, &include, exclude_all, filter, droprate, buffer, tmpdir, gamma, read_parallel, forcetable, attribution, gamma != 0, file_bbox, file_bbox1, file_bbox2, prefilter, postfilter, description, guess_maxzoom, guess_cluster_maxzoom, &attribute_types, argv[0], &attribute_accum, attribute_descriptions, commandline, minimum_maxzoom);

ret = std::get<0>(input_ret);

Expand Down
16 changes: 15 additions & 1 deletion mbtiles.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,15 @@ void mbtiles_write_metadata(sqlite3 *db, const metadata &m, bool forcetable) {
}
sqlite3_free(sql);

sql = sqlite3_mprintf("INSERT INTO metadata (name, value) VALUES ('antimeridian_adjusted_bounds', '%f,%f,%f,%f');", m.minlon2, m.minlat2, m.maxlon2, m.maxlat2);
if (sqlite3_exec(db, sql, NULL, NULL, &err) != SQLITE_OK) {
fprintf(stderr, "set bounds: %s\n", err);
if (!forcetable) {
exit(EXIT_SQLITE);
}
}
sqlite3_free(sql);

sql = sqlite3_mprintf("INSERT INTO metadata (name, value) VALUES ('type', %Q);", m.type.c_str());
if (sqlite3_exec(db, sql, NULL, NULL, &err) != SQLITE_OK) {
fprintf(stderr, "set type: %s\n", err);
Expand Down Expand Up @@ -629,7 +638,7 @@ void mbtiles_write_metadata(sqlite3 *db, const metadata &m, bool forcetable) {
}
}

metadata make_metadata(const char *fname, int minzoom, int maxzoom, double minlat, double minlon, double maxlat, double maxlon, double midlat, double midlon, const char *attribution, std::map<std::string, layermap_entry> const &layermap, bool vector, const char *description, bool do_tilestats, std::map<std::string, std::string> const &attribute_descriptions, std::string const &program, std::string const &commandline, std::vector<strategy> const &strategies) {
metadata make_metadata(const char *fname, int minzoom, int maxzoom, double minlat, double minlon, double maxlat, double maxlon, double minlat2, double minlon2, double maxlat2, double maxlon2, double midlat, double midlon, const char *attribution, std::map<std::string, layermap_entry> const &layermap, bool vector, const char *description, bool do_tilestats, std::map<std::string, std::string> const &attribute_descriptions, std::string const &program, std::string const &commandline, std::vector<strategy> const &strategies) {
metadata m;

m.name = fname;
Expand All @@ -646,6 +655,11 @@ metadata make_metadata(const char *fname, int minzoom, int maxzoom, double minla
m.maxlat = maxlat;
m.maxlon = maxlon;

m.minlat2 = minlat2;
m.minlon2 = minlon2;
m.maxlat2 = maxlat2;
m.maxlon2 = maxlon2;

m.center_lat = midlat;
m.center_lon = midlon;
m.center_z = maxzoom;
Expand Down
3 changes: 2 additions & 1 deletion mbtiles.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ struct metadata {
int maxzoom;

double minlat, minlon, maxlat, maxlon;
double minlat2, minlon2, maxlat2, maxlon2; // antimeridian-aware

double center_lon, center_lat;
int center_z;
Expand All @@ -74,7 +75,7 @@ sqlite3 *mbtiles_open(char *dbname, char **argv, int forcetable);
void mbtiles_write_tile(sqlite3 *outdb, int z, int tx, int ty, const char *data, int size);
void mbtiles_erase_zoom(sqlite3 *outdb, int z);

metadata make_metadata(const char *fname, int minzoom, int maxzoom, double minlat, double minlon, double maxlat, double maxlon, double midlat, double midlon, const char *attribution, std::map<std::string, layermap_entry> const &layermap, bool vector, const char *description, bool do_tilestats, std::map<std::string, std::string> const &attribute_descriptions, std::string const &program, std::string const &commandline, std::vector<strategy> const &strategies);
metadata make_metadata(const char *fname, int minzoom, int maxzoom, double minlat, double minlon, double maxlat, double maxlon, double minlat2, double minlon2, double maxlat2, double maxlon2, double midlat, double midlon, const char *attribution, std::map<std::string, layermap_entry> const &layermap, bool vector, const char *description, bool do_tilestats, std::map<std::string, std::string> const &attribute_descriptions, std::string const &program, std::string const &commandline, std::vector<strategy> const &strategies);
void mbtiles_write_metadata(sqlite3 *db, const metadata &m, bool forcetable);

void mbtiles_close(sqlite3 *outdb, const char *pgm);
Expand Down
3 changes: 3 additions & 0 deletions pmtiles_file.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ std::string metadata_to_pmtiles_json(metadata m) {
out(state, "generator", m.generator);
out(state, "generator_options", m.generator_options);

std::string bounds2 = std::to_string(m.minlon2) + "," + std::to_string(m.minlat2) + "," + std::to_string(m.maxlon2) + "," + std::to_string(m.maxlat2);
out(state, "antimeridian_adjusted_bounds", bounds2);

if (m.vector_layers_json.size() > 0) {
state.json_comma_newline();
state.json_write_string("vector_layers");
Expand Down
28 changes: 28 additions & 0 deletions serial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,34 @@ int serialize_feature(struct serialization_state *sst, serial_feature &sf) {
sf.bbox[2] = LLONG_MIN;
sf.bbox[3] = LLONG_MIN;

for (size_t i = 0; i < sf.geometry.size(); i++) {
if (sf.geometry[i].op == VT_MOVETO || sf.geometry[i].op == VT_LINETO) {
if (sf.geometry[i].y > 0 && sf.geometry[i].y < 0xFFFFFFFF) {
// standard -180 to 180 world plane

long long x = sf.geometry[i].x & 0xFFFFFFFF;
long long y = sf.geometry[i].y & 0xFFFFFFFF;

r->file_bbox1[0] = std::min(r->file_bbox1[0], x);
r->file_bbox1[1] = std::min(r->file_bbox1[1], y);
r->file_bbox1[2] = std::max(r->file_bbox1[2], x);
r->file_bbox1[3] = std::max(r->file_bbox1[3], y);

// printf("%llx,%llx %llx,%llx %llx,%llx ", x, y, r->file_bbox1[0], r->file_bbox1[1], r->file_bbox1[2], r->file_bbox1[3]);

// shift the western hemisphere 360 degrees to the east
if (x < 0x80000000) { // prime meridian
x += 0x100000000;
}

r->file_bbox2[0] = std::min(r->file_bbox2[0], x);
r->file_bbox2[1] = std::min(r->file_bbox2[1], y);
r->file_bbox2[2] = std::max(r->file_bbox2[2], x);
r->file_bbox2[3] = std::max(r->file_bbox2[3], y);
}
}
}

// try to remind myself that the geometry in this function is in SCALED COORDINATES
drawvec scaled_geometry = sf.geometry;
sf.geometry.clear();
Expand Down
3 changes: 3 additions & 0 deletions serial.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ struct reader {

long long file_bbox[4] = {0, 0, 0, 0};

long long file_bbox1[4] = {0xFFFFFFFF, 0xFFFFFFFF, 0, 0}; // standard -180 to 180 world plane
long long file_bbox2[4] = {0x1FFFFFFFF, 0xFFFFFFFF, 0x100000000, 0}; // 0 to 360 world plane

struct stat geomst {};

char *geom_map = NULL;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "3.757458,-84.969764,359.744029,85.007238",
"bounds": "-179.320808,-85.051129,177.449262,85.051129",
"center": "112.500000,20.489949,3",
"description": "tests/accumulate/out/-z3_-Ethesum@sum_-Etheproduct@product_-Ethemax@max_-Ethemin@min_-Ethemean@mean_-Etheconcat@concat_-Ethecomma@comma_-r1_-K100.json.check.mbtiles",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "3.757458,-84.969764,359.744029,85.007238",
"bounds": "-179.320808,-85.051129,177.449262,85.051129",
"center": "-174.375000,-52.349536,5",
"description": "tests/accumulate/out/-z5_-Ethesum@sum_-Etheproduct@product_-Ethemax@max_-Ethemin@min_-Ethemean@mean_-Etheconcat@[email protected]",
Expand Down
1 change: 1 addition & 0 deletions tests/allow-existing/both.mbtiles.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "-122.373782,37.454389,-121.469214,37.905824",
"bounds": "-122.373782,37.454389,-121.469214,37.905824",
"center": "-121.992188,37.454389,9",
"description": "tests/allow-existing/both.mbtiles",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "0.000000,0.000000,0.000000,0.000000",
"bounds": "0.000000,0.000000,0.000000,0.000000",
"center": "0.000000,0.000000,0",
"description": "tests/attribute-type/out/-z0_-Tinttype@int_-Tfloattype@float_-Tbooltype@[email protected]",
Expand Down
1 change: 1 addition & 0 deletions tests/attribute-type/out/-z0_-pN.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "0.000000,0.000000,0.000000,0.000000",
"bounds": "0.000000,0.000000,0.000000,0.000000",
"center": "0.000000,0.000000,0",
"description": "tests/attribute-type/out/-z0_-pN.json.check.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/border/out/-z1_--detect-shared-borders.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "13.365261,39.637013,23.009582,46.863962",
"bounds": "13.365261,39.637013,23.009582,46.863962",
"center": "23.009582,42.525564,1",
"description": "tests/border/out/-z1_--detect-shared-borders.json.check.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/coalesce-id/out/-z1_--coalesce_--reorder.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "0.023803,-85.040752,359.950215,83.645130",
"bounds": "-180.000000,-85.051129,180.000000,83.645130",
"center": "90.000000,42.525564,1",
"description": "tests/coalesce-id/out/-z1_--coalesce_--reorder.json.check.mbtiles",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "-123.173825,37.454389,-121.469214,37.929824",
"bounds": "-123.173825,37.454389,-121.469214,37.929824",
"center": "-122.255859,37.788049,11",
"description": "tests/coalesce-tract/out/-P_--coalesce_--reorder_-z11_-Z11_-y_STATEFP10_-y_COUNTYFP10_-l_merged.json.check.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/csv/out-null.mbtiles.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "-175.220565,-41.299988,179.216647,64.150024",
"bounds": "-180.000000,-41.299988,180.000000,85.051129",
"center": "0.000000,0.000000,0",
"description": "tests/csv/out-null.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/csv/out.mbtiles.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "-175.220565,-41.299988,179.216647,64.150024",
"bounds": "-180.000000,-41.299988,180.000000,85.051129",
"center": "0.000000,0.000000,0",
"description": "tests/csv/out.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/curve/out/-z2.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "90.000000,-82.000000,332.000000,83.000000",
"bounds": "-139.000000,-82.000000,170.000000,83.000000",
"center": "-135.000000,75.782195,2",
"description": "tests/curve/out/-z2.json.check.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/curve/out/-z2_--no-clipping.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "90.000000,-82.000000,332.000000,83.000000",
"bounds": "-139.000000,-82.000000,170.000000,83.000000",
"center": "-135.000000,75.782195,2",
"description": "tests/curve/out/-z2_--no-clipping.json.check.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/curve/out/-z2_--no-duplication.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "90.000000,-82.000000,332.000000,83.000000",
"bounds": "-139.000000,-82.000000,170.000000,83.000000",
"center": "45.000000,33.256630,2",
"description": "tests/curve/out/-z2_--no-duplication.json.check.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/dateline/out/-z5.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "-180.000000,0.000000,177.539063,68.269386",
"bounds": "-180.000000,0.000000,180.000000,68.269386",
"center": "-174.375000,16.560724,5",
"description": "tests/dateline/out/-z5.json.check.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/dateline/out/-z5_-b0.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "-180.000000,0.000000,177.539063,68.269386",
"bounds": "-180.000000,0.000000,180.000000,68.269386",
"center": "174.375000,44.951199,5",
"description": "tests/dateline/out/-z5_-b0.json.check.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/empty-linestring/out/-ac.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "-122.822234,37.723073,-122.249782,38.090533",
"bounds": "-122.822234,37.723073,-122.249782,38.090533",
"center": "-122.249782,37.796763,14",
"description": "tests/empty-linestring/out/-ac.json.check.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/epsg-3857/out/[email protected]
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "-175.220565,-41.299974,179.216647,64.150024",
"bounds": "-175.220565,-41.299974,179.216647,64.150024",
"center": "16.875000,44.951199,5",
"description": "tests/epsg-3857/out/[email protected]",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "-101.000000,0.000000,1.000000,1.000000",
"bounds": "-101.000000,0.000000,1.000000,1.000000",
"center": "0.000000,0.000000,0",
"description": "tests/feature-filter/out/-z0_-Jtests%feature-filter%filter.json.check.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/feature-filter/out/filtered.json.standard
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "-180.000000,-85.051129,180.000000,85.051129",
"bounds": "-180.000000,-85.051129,180.000000,85.051129",
"center": "0.000000,0.000000,0",
"description": "tests/feature-filter/out/all.mbtiles",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "-175.781250,-42.032974,180.000000,64.168107",
"bounds": "-175.781250,-42.032974,180.000000,64.168107",
"center": "-62.578125,17.307462,8",
"description": "tests/feature-filter/out/places.mbtiles",
Expand Down
1 change: 1 addition & 0 deletions tests/geometry/out/-z3.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ "type": "FeatureCollection", "properties": {
"antimeridian_adjusted_bounds": "-122.000000,-23.563987,102.000000,59.900000",
"bounds": "-122.000000,-23.563987,102.000000,59.900000",
"center": "22.500000,20.489949,3",
"description": "tests/geometry/out/-z3.json.check.mbtiles",
Expand Down
Loading

0 comments on commit afc7ca0

Please sign in to comment.