UTM投影正转算法实现

原创 2007年09月17日 16:10:00
    在Gissky上发现了戴勤奋老师关于坐标转换的程序以及公式,程序的界面和转换精度都值得称赞,只是可惜没有提供实现的源码,最近由于工作需要正好需要实现这部分功能,通过对戴勤奋老师提供的公式以及OGP(欧洲石油勘探组织)最新的《Coordinate Conversions and Transformations including Formulas》文档进行了研究,利用程序将UTM投影正转实现,现发布出来供大家共同学习,也希望大家指出程序中的不足。
 
/**//****************************************************************************
 ** 函数名:LLtoUTM
 ** 输入:   a                 椭球体长半轴
 **          f                 椭球体扁率  f=(a-b)/a 其中b代表椭球体的短半轴
 **          Lat               经过UTM投影之前的纬度
 **          Long              经过UTM投影之前的经度
 **          LongOrigin        中央经度线
 **          FN                纬度起始点,北半球为0,南半球为10000000.0m
 **          UTMNorthing 经过UTM投影后的纬度方向的坐标
 **          UTMEasting  经过UTM投影后的经度方向的坐标      
 ** 功能描述:UTM投影正转
 ** 作者:   CiCi
**  单位:   中国地质大学(北京)地球科学与资源学院
 ** 创建日期:2007年3月28日
 ** 版本:1.0
 **************************************************************************
*/

LLtoUTM(
double a,double f,const double Lat, const double Long,
          
double LongOrigin,double FN,double &UTMNorthing,double &UTMEasting)
...{
      
//e表示WGS84第一偏心率,eSquare表示e的平方,
     double eSquare =(2*f-f*f) ;
     
double k0 = 0.9996;
     
double e2Square;
     
double V, T, C, A, M;
 
      
//确保longtitude位于-180.00----179.9之间
     double LongTemp = (Long+180)-int((Long+180)/360)*360-180
     
double LatRad = Lat*PI/180;
     
double LongRad = LongTemp*PI/180;
     
double LongOriginRad;
     LongOriginRad 
= LongOrigin * PI/180;
     e2Square 
= (eSquare)/(1-eSquare);


     V 
= a/sqrt(1-eSquare*sin(LatRad)*sin(LatRad));
     T 
= tan(LatRad)*tan(LatRad);
     C 
= e2Square*cos(LatRad)*cos(LatRad);
     A 
= cos(LatRad)*(LongRad-LongOriginRad);
     M 
= a*((1-eSquare/4-3*eSquare*eSquare/64-5*eSquare*eSquare*eSquare/256)*LatRad
         
-(3*eSquare/8+3*eSquare*eSquare/32+45*eSquare*eSquare*eSquare/1024)*sin(2*LatRad)
         
+(15*eSquare*eSquare/256+45*eSquare*eSquare*eSquare/1024)*sin(4*LatRad)
         
-(35*eSquare*eSquare*eSquare/3072)*sin(6*LatRad));
 
     UTMEasting 
= (double)(k0*V*(A+(1-T+C)*A*A*A/6
                        
+ (5-18*T+T*T+72*C-58*e2Square)*A*A*A*A*A/120)+ 500000.0);
     UTMNorthing 
= (double)(k0*(M+V*tan(LatRad)*(A*A/2+(5-T+9*C+4*C*C)*A*A*A*A/24
                        
+(61-58*T+T*T+600*C-330*e2Square)*A*A*A*A*A*A/720)));
     
//南半球纬度起点为10000000.0m
     UTMNorthing=UTMNorthing+FN;
}


本程序实现的公式请参考《Coordinate Conversions and Transformations including Formulas》文档第35页,如果你需要此文档,请和我联系!也欢迎大家提出程序的不足。
[转载请注明出处,谢谢!]

UTM投影分带标准及投影转换

转自:http://blog.sina.com.cn/s/blog_6e51df7f010130qo.html 参考资料 :http://fengm.blog.hexun.com/4164482...
  • dreamgis
  • dreamgis
  • 2014年11月24日 16:26
  • 2057

UTM投影换带计算

  • 2014年12月17日 12:29
  • 19KB
  • 下载

【源代码】GIS投影-球面坐标转换小程序

  • 2015年09月30日 10:58
  • 95KB
  • 下载

如何用arcgis进行WGS84的投影坐标变换

UTM投影全称为“通用横轴墨卡托投影”UNIVERSAL TRANSVERSE MERCATOR PROJECTION ,是一种“等 角横轴割圆柱投影”,椭圆柱割地球于南纬80度、北纬84度两条等...
  • u012839396
  • u012839396
  • 2014年06月03日 21:06
  • 7016

WGS1984 -UTM投影问题

关于WGS1984投影坐标系的相关知识: 打开WGS1984投影文件,仔细看看,我们可以发现里面中有三种不同的投影文件:如下: WGS1984 BLM Zone 14N(ftvs).prj WGS 1...
  • liyanzhong
  • liyanzhong
  • 2014年03月21日 09:05
  • 4988

常用地图投影系列小程序

  • 2011年11月12日 17:43
  • 1.76MB
  • 下载

UTM介绍

UTM介绍UTM(Unified Threat Management)市场成长迅速,已经成为安全网关的主流,对于UTM定义,很多人在问:UTM究竟是什么?作为一个安全网关设备,笔者认为UTM的定义至少...
  • wenjjing2lianee
  • wenjjing2lianee
  • 2009年12月28日 16:48
  • 708

高斯-克吕格(Gauss-Kruger)投影与UTM投影的区别

高斯-克吕格(Gauss-Kruger)投影与UTM投影(Universal Transverse Mercator,通用横轴墨卡托投影)都是横轴墨卡托投影的变种,目前一些国外的软件或国外进口仪器的配...
  • shmiloy001
  • shmiloy001
  • 2011年10月09日 10:22
  • 5781

UTM投影分带标准

1.UTM简介UTM (Universal Transverse Mercator)坐标系是由美国军方在1947提出的。虽然我们仍然将其看作与“高斯-克吕格”相似的坐标系统,但实际上UTM采用了网格的...
  • IvanLJF
  • IvanLJF
  • 2016年09月23日 13:40
  • 5026

UTM-wgs84投影坐标系

北京54,西安80,wgs84坐标都是是大地坐标,也就是我们通常所说的经纬度坐标,但是它们基于的椭球体不同,我国当前的基本比例尺地形图都是基于北京54和西安80的,而GPS接受的定位数据是基于WGS8...
  • uqocean
  • uqocean
  • 2013年12月30日 21:01
  • 2589
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UTM投影正转算法实现
举报原因:
原因补充:

(最多只允许输入30个字)