//char *MapNo:图幅号
//int lon_deg:经度-度
//lon_min:经度-分
//lon_sec:经度-秒
//lat_deg:纬度-度
//lat_min:纬度-分
//lat_sec:纬度-秒
//long lscale:比例尺
bool Trans(char *MapNo,int lon_deg,lon_min,lon_sec,lat_deg,lat_min,lat_sec,long lscale)
{
int ScaleID;
char buf[10];
char S[] = "ABCDEFGHIJKLMNOPQRSTUV"; // 1:1000000地形图图幅所在纬度带字符码
long Scale[] = {1000000,500000,250000,100000,50000,25000,10000,5000}; // 图幅比例尺
double df[] = {14400,7200,3600,1200,600,300,150,75}; // 图幅纬差,单位秒
double dr[] = {21600,10800,5400,1800,900,450,225,112.5}; // 图幅经差单位秒
long r=lon_deg*3600+lon_min*60+lon_sec; // 经度, 单位秒
long f=lat_deg*3600+lat_min*60+lat_sec; // 纬度单位秒
for(ScaleID=0;ScaleID<8;ScaleID++){
if(Scale[ScaleID]==lscale){
break;
}
}
if(ScaleID==8){
return false;
}
int a = f/(4*3600);
int b = r/(6*3600)+31;
int c = (int)(4*3600/df[ScaleID])-(int)((f%(4*3600))/df[ScaleID]);
int d = (int)((r%(6*3600))/dr[ScaleID])+1;
MapNo[0] = S[a];
strcpy(MapNo+1,itoa(b,buf,10));
if(ScaleID==0){
return true;
}
MapNo[3] = S[ScaleID];
itoa(c,buf,10);
if(c<10){
MapNo[4]=MapNo[5]='0';
strcpy(MapNo+6,buf);
}else if(c<100) {
MapNo[4]='0';
strcpy(MapNo+5,buf);}
else if(c<1000){
strcpy(MapNo+4,buf);
}else{
return false;
}
itoa(d,buf,10);
if(d<10){
MapNo[7]=MapNo[8]='0';
strcpy(MapNo+9,buf);
}else if(d<100) {
MapNo[7]='0';
strcpy(MapNo+8,buf);
}else if(d<1000){
strcpy(MapNo+7,buf);
}else{
return false;
}
MapNo[10] = '"0';
return true;
}
本篇文章来源于GIS动力站|www.gispower.org 原文链接:http://www.gispower.org/article/dev/2009/720/0972093211BBBBG0BB3063IEDH8F8I.html
问:
想把一些数字格式化为字符串,并在不足的位置补0
______________________________________________________________________________________________
答1:
int i = 1;
string j = string.Format("{0:D4}",i);
Response.Write(j);
______________________________________________________________________________________________
答2:
int k=99;
string s = k.ToString("d4"); s-->0099
______________________________________________________________________________________________
答3:
or
int i,e;//i=1--99
string e=i.Tostring().PadLeft(4, '0');
______________________________________________________________________________________________
答4:
http://expert.csdn.net/Expert/topic/1781/1781640.xml?temp=.246731
______________________________________________________________________________________________
答5:
int k=99;
string s = k.ToString();
s = Right("0000" + s , 4);
_________________________________________________________