//获取旧图幅号
private string GetOldTFBH(decimal old_d_B, decimal old_f_B, decimal old_s_B, decimal old_d_L, decimal old_f_L, decimal old_s_L, AbstractMapScale mapScale)
{
decimal a = 0M;
decimal b = 0M;
//西南图廓点 转为度
decimal B = old_d_B + old_f_B / 60M + old_s_B / 3600M;
decimal L = old_d_L + old_f_L / 60M + old_s_L / 3600M;
//
string bit_1 = "";
string bit_2 = "";
//-----
a = Math.Floor(B / 4.0M) + 1; //商取整【B/4】+1
b = Math.Floor(L / 6.0M) + 31; //商取整【L/6】+31
//
switch (a.ToString())
{
case "1": bit_1 = "A"; break;
case "2": bit_1 = "B"; break;
case "3": bit_1 = "C"; break;
case "4": bit_1 = "D"; break;
case "5": bit_1 = "E"; break;
case "6": bit_1 = "F"; break;
case "7": bit_1 = "G"; break;
case "8": bit_1 = "H"; break;
case "9": bit_1 = "I"; break;
case "10": bit_1 = "J"; break;
case "11": bit_1 = "K"; break;
case "12": bit_1 = "L"; break;
case "13": bit_1 = "M"; break;
case "14": bit_1 = "N"; break;
case "15": bit_1 = "O"; break;
case "16": bit_1 = "P"; break;
case "17": bit_1 = "Q"; break;
case "18": bit_1 = "R"; break;
case "19": bit_1 = "S"; break;
default:
break;
}
bit_2 = b.ToString();
//-----
if (mapScale.MapScale == EnumMapScale.EnumMapScale_1000000)
{
//返回1:100万图幅号
return bit_1 + "-" + bit_2;
}
else
{
string bit_3 = "";
string bit_4 = "";
string bit_5 = "";
//获取新编号的行,列号
decimal c = 0M;
decimal d = 0M;
GetMapScaleRowsCols(B, L, mapScale, ref c, ref d);
//
switch (mapScale.MapScale)
{
case EnumMapScale.EnumMapScale_500000: //1:50万
{
bit_3 = "";
decimal X50 = (c - 1) * 2 + (d - 1) + 1; //旧图幅号对应的地图代码 50W
switch (X50.ToString())
{
case "1": bit_3 = "A"; break;
case "2": bit_3 = "B"; break;
case "3": bit_3 = "C"; break;
case "4": bit_3 = "D"; break;
}
return bit_1 + "-" + bit_2 + "-" + bit_3;
}
break;
case EnumMapScale.EnumMapScale_B_250000:
{
bit_3 = "";
decimal X25 = (c - 1) * 4 + (d - 1) + 1; //旧图幅号对应的地图代码 25W
bit_3 = X25.ToString();
bit_3 = bit_3.PadLeft(2, '0');
return bit_1 + "-" + bit_2 + "-[" + bit_3 + "]";
}
break;
case EnumMapScale.EnumMapScale_C_200000:
{
bit_3 = "";
decimal X25 = (c - 1) * 6 + (d - 1) + 1; //旧图幅号对应的地图代码 20W
bit_3 = X25.ToString();
bit_3 = bit_3.PadLeft(2, '0');
return bit_1 + "-" + bit_2 + "-(" + bit_3 + ")";
}
break;
case EnumMapScale.EnumMapScale_D_100000:
{
bit_3 = "";
decimal X10 = (c - 1) * 12 + (d - 1) + 1; //旧图幅号对应的地图代码 10W
bit_3 = X10.ToString();
bit_3 = bit_3.PadLeft(3, '0');
return bit_1 + "-" + bit_2 + "-" + bit_3;
}
break;
case EnumMapScale.EnumMapScale_E_50000:
{
bit_3 = "";
decimal c10 = Math.Floor((c - 1) / 2) + 1;
decimal d10 = Math.Floor((d - 1) / 2) + 1;
decimal X10 = (c10 - 1) * 12 + (d10 - 1) + 1; //10W
bit_3 = X10.ToString();
bit_3 = bit_3.PadLeft(3, '0');
//
bit_4 = "";
decimal X5 = (c - 2 * c10 + 1) * 2 + (d - 2 * d10 + 1) + 1; //旧图幅号对应的地图代码 5W
switch (X5.ToString())
{
case "1": bit_4 = "A"; break;
case "2": bit_4 = "B"; break;
case "3": bit_4 = "C"; break;
case "4": bit_4 = "D"; break;
}
return bit_1 + "-" + bit_2 + "-" + bit_3+"-"+bit_4;
}
break;
case EnumMapScale.EnumMapScale_F_25000:
{
decimal c5 = Math.Floor((c - 1) / 2) + 1;
decimal d5 = Math.Floor((d - 1) / 2) + 1;
bit_3 = "";
decimal c10 = Math.Floor((c5 - 1) / 2) + 1;
decimal d10 = Math.Floor((d5 - 1) / 2) + 1;
decimal X10 = (c10 - 1) * 12 + (d10 - 1) + 1; //10W
bit_3 = X10.ToString();
bit_3 = bit_3.PadLeft(3, '0');
//
bit_4 = "";
decimal X5 = (c5 - 2 * c10 + 1) * 2 + (d5 - 2 * d10 + 1) + 1; //旧图幅号对应的地图代码 5W by 10W
switch (X5.ToString())
{
case "1": bit_4 = "A"; break;
case "2": bit_4 = "B"; break;
case "3": bit_4 = "C"; break;
case "4": bit_4 = "D"; break;
}
decimal X2_5 = (c - 2*c5+1) * 2 + (d - 2*d5+1) + 1; //旧图幅号对应的地图代码 2.5w by 5W
bit_5 = X2_5.ToString();
//
return bit_1 + "-" + bit_2 + "-" + bit_3 + "-" + bit_4+"-"+ bit_5;
}
break;
case EnumMapScale.EnumMapScale_G_10000:
{
bit_3 = "";
decimal c10 = Math.Floor((c - 1) / 8) + 1;
decimal d10 = Math.Floor((d - 1) / 8) + 1;
decimal X10 = (c10 - 1) * 12 + (d10 - 1) + 1; //10W
bit_3 = X10.ToString();
bit_3 = bit_3.PadLeft(3, '0');
//
bit_4 = "";
decimal X1 = (c - 8 * c10 + 7) * 8 + (d - 8 * d10 + 1) +7; //旧图幅号对应的地图代码 1W
bit_4 = X1.ToString();
bit_4 = bit_4.PadLeft(2, '0');
return bit_1 + "-" + bit_2 + "-" + bit_3 + "-(" + bit_4+")";
}
break;
case EnumMapScale.EnumMapScale_H_5000:
{
//计算1w的新行,列号c1,d1
decimal c1 = Math.Floor((c - 1) / 2) + 1;
decimal d1 = Math.Floor((d - 1) / 2) + 1;
bit_3 = "";
decimal c10 = Math.Floor((c1 - 1) / 8) + 1;
decimal d10 = Math.Floor((d1 - 1) / 8) + 1;
decimal X10 = (c10 - 1) * 12 + (d10 - 1) + 1; //10W
bit_3 = X10.ToString();
bit_3 = bit_3.PadLeft(3, '0');
//
bit_4 = "";
decimal X1 = (c1 - 8 * c10 + 7) * 8 + (d1 - 8 * d10 + 7) + 1; //旧图幅号对应的地图代码 1W by 10W
bit_4 = X1.ToString();
bit_4 = bit_4.PadLeft(2, '0');
//5K
bit_5 = "";
decimal X5 = (c - 2*c1+1) * 2 + (d - 2*d1+1) + 1; //旧图幅号对应的地图代码 5k by 1W
switch (X5.ToString())
{
case "1": bit_5 = "a"; break;
case "2": bit_5 = "b"; break;
case "3": bit_5 = "c"; break;
case "4": bit_5 = "d"; break;
}
return bit_1 + "-" + bit_2 + "-" + bit_3 + "-(" + bit_4 + ")-"+ bit_5;
}
break;
case EnumMapScale.EnumMapScale_I_2000:
{
//计算1w的新行,列号c1,d1
decimal c1 = Math.Floor((c - 1) / 6) + 1;
decimal d1 = Math.Floor((d - 1) / 6) + 1;
bit_3 = "";
decimal c10 = Math.Floor((c1 - 1) / 8) + 1;
decimal d10 = Math.Floor((d1 - 1) / 8) + 1;
decimal X10 = (c10 - 1) * 12 + (d10 - 1) + 1; //10W
bit_3 = X10.ToString();
bit_3 = bit_3.PadLeft(3, '0');
//
bit_4 = "";
decimal X1 = (c1 - 8 * c10 + 7) * 8 + (d1 - 8 * d10 + 1) + 7; //旧图幅号对应的地图代码 1W by 10W
bit_4 = X1.ToString();
bit_4 = bit_4.PadLeft(2, '0');
//2K
bit_5 = "";
decimal X2 = (c - 6 * c1 + 5) * 6 + (d - 6 * d1 + 5) + 1; //旧图幅号对应的地图代码 2k by 1W
bit_5 = X2.ToString();
bit_5 = bit_5.PadLeft(2, '0');
return bit_1 + "-" + bit_2 + "-" + bit_3 + "-(" + bit_4 + ")-" + bit_5;
}
break;
default:
break;
}
//
}
return "";
}
旧图幅号计算
最新推荐文章于 2021-09-14 09:24:52 发布