double ImageTile::scale2Level(double scale) // //比例转换为层级
{
//实际距离
double mapdis = 0.0254 * ((double)tilesize / 96.0)*scale;
double x, y, x1, y1;
ImageRowCol2Projection(m_adfGeoTransform, 0, 0, x, y);
ImageRowCol2Projection(m_adfGeoTransform, tilesize, tilesize, x1, y1);
double srcscale = (x1 - x) / (0.0254 * ((double)tilesize / 96.0));
if (scale >= srcscale)
{
double level = mapdis / (x1 - x);
return fabs(level)*m_adfGeoTransform[1];
}
else
{
double s = mapdis / (x1 - x);
return fabs(s)*m_adfGeoTransform[1];
}
return 1;
}
double ImageTile::level2scale(double level) //计算当前层级比例尺
{
//return 1.0 / (0.0254 / (2 * 96));
//地图距离
double mapdis = 0.0254 * ((double)tilesize / 96.0);
//实际距离
double x, y, x1, y1;
TDRasterCommon::ImageRowCol2Projection(m_adfGeoTransform, 0, 0, x, y);
TDRasterCommon::ImageRowCol2Projection(m_adfGeoTransform, tilesize*level, tilesize*level, x1, y1);
return (x1 - x) / mapdis;
}