Gonna get it right this time

This commit is contained in:
Erica Fischer
2024-09-06 12:57:31 -07:00
parent 8232993342
commit 2b54558257
10 changed files with 3642 additions and 19 deletions
+8
View File
@@ -371,6 +371,14 @@ overzoom-test: tippecanoe-overzoom
./tippecanoe-decode tests/pbf/0-0-0-pop-2-0-1.pbf.out 2 0 1 > tests/pbf/0-0-0-pop-2-0-1.pbf.out.json.check ./tippecanoe-decode tests/pbf/0-0-0-pop-2-0-1.pbf.out 2 0 1 > tests/pbf/0-0-0-pop-2-0-1.pbf.out.json.check
cmp tests/pbf/0-0-0-pop-2-0-1.pbf.out.json.check tests/pbf/0-0-0-pop-2-0-1.pbf.out.json cmp tests/pbf/0-0-0-pop-2-0-1.pbf.out.json.check tests/pbf/0-0-0-pop-2-0-1.pbf.out.json
rm tests/pbf/0-0-0-pop-2-0-1.pbf.out tests/pbf/0-0-0-pop-2-0-1.pbf.out.json.check rm tests/pbf/0-0-0-pop-2-0-1.pbf.out tests/pbf/0-0-0-pop-2-0-1.pbf.out.json.check
./tippecanoe-overzoom -o tests/pbf/0-0-0-pop-1-1-0.pbf.out --assign-to-bins tests/pbf/h3-1-1-0.geojson tests/pbf/0-0-0.pbf 1/1/0 1/1/0
./tippecanoe-decode tests/pbf/0-0-0-pop-1-1-0.pbf.out 1 1 0 > tests/pbf/0-0-0-pop-1-1-0.pbf.out.json.check
cmp tests/pbf/0-0-0-pop-1-1-0.pbf.out.json.check tests/pbf/0-0-0-pop-1-1-0.pbf.out.json
rm tests/pbf/0-0-0-pop-1-1-0.pbf.out tests/pbf/0-0-0-pop-1-1-0.pbf.out.json.check
./tippecanoe-overzoom -o tests/pbf/0-0-0-pop-0-0-0.pbf.out --assign-to-bins tests/pbf/h3-0-0-0.geojson tests/pbf/0-0-0.pbf 0/0/0 0/0/0
./tippecanoe-decode tests/pbf/0-0-0-pop-0-0-0.pbf.out 0 0 0 > tests/pbf/0-0-0-pop-0-0-0.pbf.out.json.check
cmp tests/pbf/0-0-0-pop-0-0-0.pbf.out.json.check tests/pbf/0-0-0-pop-0-0-0.pbf.out.json
rm tests/pbf/0-0-0-pop-0-0-0.pbf.out tests/pbf/0-0-0-pop-0-0-0.pbf.out.json.check
join-test: tippecanoe tippecanoe-decode tile-join join-test: tippecanoe tippecanoe-decode tile-join
./tippecanoe -q -f -z12 -o tests/join-population/tabblock_06001420.mbtiles -YALAND10:'Land area' -L'{"file": "tests/join-population/tabblock_06001420.json", "description": "population"}' ./tippecanoe -q -f -z12 -o tests/join-population/tabblock_06001420.mbtiles -YALAND10:'Land area' -L'{"file": "tests/join-population/tabblock_06001420.json", "description": "population"}'
+1 -1
View File
@@ -197,7 +197,7 @@ int main(int argc, char **argv) {
exit(EXIT_OPEN); exit(EXIT_OPEN);
} }
bins = parse_layers(f, nz, nx, ny, 1LL << detail); bins = parse_layers(f, nz, nx, ny, 1LL << detail, true);
fclose(f); fclose(f);
} }
+1 -1
View File
@@ -82,7 +82,7 @@ std::vector<mvt_layer> parse_layers(int fd, int z, unsigned x, unsigned y, std::
exit(EXIT_OPEN); exit(EXIT_OPEN);
} }
std::vector<mvt_layer> out = parse_layers(f, z, x, y, extent); std::vector<mvt_layer> out = parse_layers(f, z, x, y, extent, true);
if (fclose(f) != 0) { if (fclose(f) != 0) {
perror("fclose postfilter output"); perror("fclose postfilter output");
+6 -6
View File
@@ -178,7 +178,7 @@ static std::vector<mvt_geometry> to_feature(drawvec &geom) {
return out; return out;
} }
std::vector<mvt_layer> parse_layers(FILE *fp, int z, unsigned x, unsigned y, int extent) { std::vector<mvt_layer> parse_layers(FILE *fp, int z, unsigned x, unsigned y, int extent, bool fix_longitudes) {
std::map<std::string, mvt_layer> ret; std::map<std::string, mvt_layer> ret;
std::shared_ptr<std::string> tile_stringpool = std::make_shared<std::string>(); std::shared_ptr<std::string> tile_stringpool = std::make_shared<std::string>();
@@ -282,7 +282,6 @@ std::vector<mvt_layer> parse_layers(FILE *fp, int z, unsigned x, unsigned y, int
dv = fix_polygon(dv, false, false); dv = fix_polygon(dv, false, false);
} }
if (z > 0) {
// handle longitude wraparound // handle longitude wraparound
// //
// this is supposed to be data for a single tile, // this is supposed to be data for a single tile,
@@ -294,14 +293,15 @@ std::vector<mvt_layer> parse_layers(FILE *fp, int z, unsigned x, unsigned y, int
// reasonable to have a big, world-spanning polygon, // reasonable to have a big, world-spanning polygon,
// and I'm not sure what to do about that.) // and I'm not sure what to do about that.)
if (fix_longitudes) {
for (size_t i = 0; i < dv.size(); i++) { for (size_t i = 0; i < dv.size(); i++) {
if (i > 0) { if (i > 0) {
if ((dv[0].x < (1LL << 31)) && if ((dv[0].x < (1LL << 30)) &&
(dv[i].x > (1LL << 31))) { (dv[i].x > 3 * (1LL << 30))) {
dv[i].x -= 1LL << 32; dv[i].x -= 1LL << 32;
} }
if ((dv[0].x > (1LL << 31)) && if ((dv[0].x > 3 * (1LL << 30)) &&
(dv[i].x < (1LL << 31))) { (dv[i].x < (1LL << 30))) {
dv[i].x += 1LL << 32; dv[i].x += 1LL << 32;
} }
} }
+1 -1
View File
@@ -12,6 +12,6 @@ extern int mb_geometry[GEOM_TYPES];
void json_context(json_object *j); void json_context(json_object *j);
void parse_geometry(int t, json_object *j, drawvec &out, int op, const char *fname, int line, json_object *feature); void parse_geometry(int t, json_object *j, drawvec &out, int op, const char *fname, int line, json_object *feature);
std::vector<mvt_layer> parse_layers(FILE *fp, int z, unsigned x, unsigned y, int extent); std::vector<mvt_layer> parse_layers(FILE *fp, int z, unsigned x, unsigned y, int extent, bool fix_longitudes);
serial_val stringify_value(json_object *value, const char *reading, int line, json_object *feature); serial_val stringify_value(json_object *value, const char *reading, int line, json_object *feature);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long