【最新精选】根据图幅左下角经纬度计算其所在图幅号

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【最新精选】根据图幅左下角经纬度计算其所在图幅号//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动力站| 原文链接:

问:

想把一些数字格式化为字符串,并在不足的位置补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

答5:

int k=99;

string s = k.ToString();

s = Right("0000" + s , 4);

____________________________________________________________________ __________________________

答6:

谢谢

本文来自: 站长() 详细出处参考:

#region 好像没用的分幅

/*class MapFenfu

{

public enum ScaleMark { A, B, C, D, E, F, G, H };//不同比例尺的号码private int m_1s1000000_row;//1:100万图幅行

private int m_1s1000000_list;//1:100万图幅列

private int m_assign_row;//指定比例尺图幅行

private int m_assign_list;//指定比例尺图幅列

private int m_scale;//指定比例尺;

private esriUnits m_CurMapUnits;

private IMap curMap = new MapClass();

///

/// 构造函数,初始化类中的私有变量

///

public MapFenfu(int rowIn100,int columIn100, int rowAssigned,int columAssigned,int scale,IMap m_map)

{

相关文档
最新文档