Skip to content

Commit

Permalink
Update mapcache_detail
Browse files Browse the repository at this point in the history
  • Loading branch information
jbo-ads committed Jan 29, 2020
1 parent 1834d3d commit 283a70a
Showing 1 changed file with 39 additions and 14 deletions.
53 changes: 39 additions & 14 deletions contrib/mapcache_detail/mapcache_detail.c
Expand Up @@ -1269,6 +1269,7 @@ int main(int argc, char * argv[])
mapcache_extent_i db_region_bbox;
int dbx_has_inv = FALSE;
int dby_has_inv = FALSE;
int file_zoom_level;

// Select cache according to zoom level
for ( cid=0 ; cid < caches->nelts ; cid++ ) {
Expand All @@ -1292,10 +1293,22 @@ int main(int argc, char * argv[])

// Compute region bounding box expressed in tiles and in DB files for the
// current zoom level
mapcache_grid_get_xy(&ctx, grid, region_bbox.minx, region_bbox.miny, iz,
&(til_region_bbox.minx), &(til_region_bbox.miny));
mapcache_grid_get_xy(&ctx, grid, region_bbox.maxx, region_bbox.maxy, iz,
&(til_region_bbox.maxx), &(til_region_bbox.maxy));
file_zoom_level = iz;
if (cache->top > 0) file_zoom_level = cache->top;
mapcache_grid_get_xy(&ctx, grid, region_bbox.minx, region_bbox.miny,
file_zoom_level, &(til_region_bbox.minx), &(til_region_bbox.miny));
mapcache_grid_get_xy(&ctx, grid, region_bbox.maxx, region_bbox.maxy,
file_zoom_level, &(til_region_bbox.maxx), &(til_region_bbox.maxy));
if (til_region_bbox.minx > til_region_bbox.maxx) {
int swap = til_region_bbox.maxx;
til_region_bbox.maxx = til_region_bbox.minx;
til_region_bbox.minx = swap;
}
if (til_region_bbox.miny > til_region_bbox.maxy) {
int swap = til_region_bbox.maxy;
til_region_bbox.maxy = til_region_bbox.miny;
til_region_bbox.miny = swap;
}

dbx_has_inv = strstr(cache->dbfile,"{inv_x}")
|| strstr(cache->dbfile,"{inv_div_x}")
Expand All @@ -1304,10 +1317,6 @@ int main(int argc, char * argv[])
|| strstr(cache->dbfile,"{inv_div_y}")
|| strstr(cache->dbfile,"{inv_top_y}");
if (cache->top > 0) {
mapcache_grid_get_xy(&ctx, grid, region_bbox.minx, region_bbox.miny,
cache->top, &(til_region_bbox.minx), &(til_region_bbox.miny));
mapcache_grid_get_xy(&ctx, grid, region_bbox.maxx, region_bbox.maxy,
cache->top, &(til_region_bbox.maxx), &(til_region_bbox.maxy));
if (dbx_has_inv) {
db_region_bbox.minx = grid->levels[cache->top]->maxx-1 - til_region_bbox.maxx;
db_region_bbox.maxx = grid->levels[cache->top]->maxx-1 - til_region_bbox.minx;
Expand Down Expand Up @@ -1360,7 +1369,6 @@ int main(int argc, char * argv[])
apr_finfo_t fileinfo;
mapcache_extent_i til_file_bbox;
mapcache_extent file_bbox;
int file_zoom_level;
mapcache_extent temp_bbox;
mapcache_extent region_in_file_bbox;
#ifdef USE_CLIPPERS
Expand Down Expand Up @@ -1434,23 +1442,21 @@ int main(int argc, char * argv[])

// Compute file bounding box expressed in tiles
if (cache->top > 0) {
file_zoom_level = cache->top;
if (dbx_has_inv) {
til_file_bbox.minx = grid->levels[file_zoom_level]->maxx-1 - ix;
til_file_bbox.minx = grid->levels[cache->top]->maxx-1 - ix;
til_file_bbox.maxx = til_file_bbox.minx;
} else {
til_file_bbox.minx = ix;
til_file_bbox.maxx = til_file_bbox.minx;
}
if (dby_has_inv) {
til_file_bbox.miny = grid->levels[file_zoom_level]->maxy-1 - iy;
til_file_bbox.miny = grid->levels[cache->top]->maxy-1 - iy;
til_file_bbox.maxy = til_file_bbox.miny;
} else {
til_file_bbox.miny = iy;
til_file_bbox.maxy = til_file_bbox.miny;
}
} else if ((cache->xcount > 0) && (cache->ycount > 0)) {
file_zoom_level = iz;
if (dbx_has_inv) {
til_file_bbox.maxx = grid->levels[iz]->maxx-1 - ix * cache->xcount;
til_file_bbox.minx = til_file_bbox.maxx + cache->xcount + 1;
Expand All @@ -1474,7 +1480,6 @@ int main(int argc, char * argv[])
til_file_bbox.maxy = grid->levels[iz]->maxy - 1;
}
} else {
file_zoom_level = iz;
til_file_bbox.minx = 0;
til_file_bbox.miny = 0;
til_file_bbox.maxx = grid->levels[iz]->maxx - 1;
Expand All @@ -1493,6 +1498,16 @@ int main(int argc, char * argv[])
if (GC_HAS_ERROR(&ctx)) goto failure;
file_bbox.maxx = temp_bbox.maxx;
file_bbox.maxy = temp_bbox.maxy;
if (file_bbox.minx > file_bbox.maxx) {
int swap = file_bbox.maxx;
file_bbox.maxx = file_bbox.minx;
file_bbox.minx = swap;
}
if (file_bbox.miny > file_bbox.maxy) {
int swap = file_bbox.maxy;
file_bbox.maxy = file_bbox.miny;
file_bbox.miny = swap;
}

// Compute part of region of interest within file bounding box
#ifdef USE_CLIPPERS
Expand Down Expand Up @@ -1559,6 +1574,16 @@ int main(int argc, char * argv[])
mapcache_grid_get_xy(&ctx, grid, region_in_file_bbox.maxx-res,
region_in_file_bbox.maxy-res, iz, &(til_region_in_file_bbox.maxx),
&(til_region_in_file_bbox.maxy));
if (til_region_in_file_bbox.minx > til_region_in_file_bbox.maxx) {
int swap = til_region_in_file_bbox.maxx;
til_region_in_file_bbox.maxx = til_region_in_file_bbox.minx;
til_region_in_file_bbox.minx = swap;
}
if (til_region_in_file_bbox.miny > til_region_in_file_bbox.maxy) {
int swap = til_region_in_file_bbox.maxy;
til_region_in_file_bbox.maxy = til_region_in_file_bbox.miny;
til_region_in_file_bbox.miny = swap;
}
if ((cache->xcount > 0) && (cache->ycount > 0)) {
if (til_region_in_file_bbox.maxx>(til_file_bbox.minx+cache->xcount-1))
{
Expand Down

0 comments on commit 283a70a

Please sign in to comment.