void set_north_east_bounds_from_ix_iy_zoom( image_tile_t * image_tile) { double lat_center,lon_center; lat_lon_centered_from_ix_iy_zoom( &lat_center, &lon_center, image_tile->ix, image_tile->iy, image_tile->zoom_level); int num_segments = (1 << image_tile->zoom_level); double lat_degrees_per_segment = 360.0/num_segments; double lon_degrees_per_segment = 360.0/num_segments; double lat_min = lat_center - 0.5*lat_degrees_per_segment; double lat_max = lat_center + 0.5*lat_degrees_per_segment; double lon_min = lon_center - 0.5*lon_degrees_per_segment; double lon_max = lon_center + 0.5*lon_degrees_per_segment; image_tile->x_min = (lat_min - lat0)*M_PI*EARTH_RADIUS/180.0*cos(lat0*M_PI/180.0); image_tile->x_max = (lat_max - lat0)*M_PI*EARTH_RADIUS/180.0*cos(lat0*M_PI/180.0); image_tile->y_min = (lon_min - lon0)*M_PI*EARTH_RADIUS/180.0*cos(lat0*M_PI/180.0); image_tile->y_max = (lon_max - lon0)*M_PI*EARTH_RADIUS/180.0*cos(lat0*M_PI/180.0); double x_mean = 0.5*(image_tile->x_max + image_tile->x_min); image_tile->x_max = x_mean + 0.5*(image_tile->y_max - image_tile->y_min); image_tile->x_min = x_mean - 0.5*(image_tile->y_max - image_tile->y_min); }
void start_tile_download( image_tile_t * image_tile) { image_tile->status = TILE_DOWNLOADING; double lat,lon; lat_lon_centered_from_ix_iy_zoom( &lat, &lon, image_tile->ix, image_tile->iy, image_tile->zoom_level); char filename[MAX_FILENAME_LENGTH]; filename_of_ix_iy_zoom( filename, image_tile->ix, image_tile->iy, image_tile->zoom_level ); printf("downloading %s\n", filename); char system_call[1024]; sprintf(system_call, "sh shake_n_bake.sh 'http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=256x256&maptype=satellite&format=png32&sensor=false' %s &", lat, lon, zoom_level, filename); system(system_call); }