坐标系转换c语言作业

坐标系转换c语言作业
坐标系转换c语言作业

《程序设计语言(C)》大作业报告

题目:坐标系的转换

完成人:

小组构成及分工:

*******独自完成程序的书写及调试.

问题定义: 大地坐标和空间直角坐标系以及其他坐标系之间转换在卫星大地测量中经常用到的坐标系有,空间直角坐标系和大地直角坐标。为了实现测量数据的快速高效的在不同的坐标系的转换,方便在学习及应用的中。需要编写一程序实现数据的转换,实现空间直角坐标系与大地直角坐标之间在同一个系统中转换。

开发工具:Visual C++ 6.0

数据结构描述:

用不同的变量表示不同的坐标,变量选择时根据使用的习惯方便使用者的识别。

X:表示大地直角坐标的纵坐标;

Y:表示大地直角坐标的横坐标;

Z表示大地直角坐标的竖坐标

L:表示空间直角坐标的经度;

B:表示空间直角坐标的纬度;

H:表示空间直角坐标的高度;

算法描述:

通过编写一个主函数描述出整个程序的主体不分,然后通过调用函数实现坐标的转换。

程序调试情况:

坐标由大地直角坐标系中的转换为空间直角坐标系的坐标:

大地直角坐标转换后空间直角坐标:

B=60; X=2055059.130122;

L=50; Y=2449123.986892;

H=100; Z=5500477.615329;

坐标由空间直角坐标系中的坐标转换为大地直角坐标系中的坐标;

空间直角坐标转换后大地直角坐标;

X=100; B=-127.103127844;

Y=100; L=45.000000000;

Z=10000; H=-6391994.685276;

参考文献或网站:

1.《控制测量学》(下册)第三版孔祥元郭际明主编武汉大学出版社;

2. 《数字测图原理与方法》第二版潘正风程效军成枢王腾军宋伟东

邹进贵编著武汉大学出版社;

3.《C 程序设计语言》魏东平朱连章于广斌编著;电子工业出版社

心得体会:

写这个大作业确实让我收获了许多!

1.写这次计算机大作业,让我经历了一个难忘的过程。自己的是必须得自己独立自主的想办法去解决,没人会为与自己没多大关系的事分很多神的!

2.经历了过程,让我学到了些东西也在解决困难的过程中认识了些学长,他们也教会了我许多学习经验。

3.在自己调试程序的过程中也知道了点以前写程序时不知道的细节问题,如:数据的类型在计算时会起到一定的限制,计算三角函数时数值向角度的转换.....;这就是知识!

4.这次写的作业题目是出自本专业的题,这次写计算机作业的所有收获都是以后学习的经验、财富.....!

5.在本次作业的调试中真的是考验了我的耐性。因为一个函数中的数据类型的错误,导致调了近两天。

6.知识水平的有限,所以让我学会了怎样以更好的方式去向别人请教学问!

C语言中的整型数据类型转换以及格式化输出问题

C语言中的整型数据类型转换以及格式化输出问题 先附上两张图片 i. Printf()函数的格式转换参数 ii. 各数据类型的长度和表示范围 首先我们来谈整型数据的转换问题,不同类型的整型数据所占的字节数不同,在转换时需要格外留心。 分为两种情况: 第一种情况为将所占字节大的类型数据转换为所占字节小的类型数据,这种情况下只需要截取合适位数的大字节的类型数据到小字节类型数据中即可,例如:unsigned short a=256;char b=a; 则b中的数据为00000000,截取了a的低八位。 第二种情况为将所占字节小的类型数据转换为所占字节大的类型数据,这种情况下需要涉及到扩展问题,所谓扩展分为两种情况,当需要扩展的小类型数据为有符号数时,即将过小数据的最高位即符号位复制到扩展的位上,比如一个char类型的数据char a=128,二进制表示10000000,则将其转换为整型数据b即int b=a,相应的b即为1….10000000,又或者一个char类型数据127,二进制表示01111111,则将其转换为整型数据b相应的b即为0…. 01111111;当需扩展的小类型数据为无符号数时,扩展位为全部为0。 另外对于同等大小的不同数据类型之间转换,则是相应的二进制码全额复制。 下面我们来讨论%d和%u的格式化输出问题 我们都知道%d表示输出十进制有符号整数,然而很少有人会注意到%d表示的格式类型其实相当于int类型,即有符号整型数据,占用4个字节,最高位表示符号位,输出的范围在-2147483648到2147483647间。 当我们在用%d输出数据是需要注意类型间的转换问题的。 不同类型的整型数据所占的字节数不同,在转换时需要格外留心,因为%d表示的4字节数

基于MATLAB的七参数坐标系统转换问题分析(精)

基于 MATLAB 的七参数法坐标系统转换问题分析 1 张鲜妮 21, ,王磊 21, 1、中国矿业大学环境与测绘学院,江苏徐州 (221008 2、江苏省资源环境信息工程重点实验室,江苏徐州 (221008 E-mail: 摘要:GPS 测量的坐标是基于 WGS-84坐标系下的,而我国实用的测量成果大多都是基于北京 54坐标系下的。随着 GPS 测量技术的广泛使用,由 WGS-84坐标向北京 54坐标系下坐标的转换问题一直是一个可探讨的问题, 坐标系统转换的现有模型很多, 但常用的还是经典的七参数转换模型。随着不断的实践研究, 发现七参数在进行坐标系统转换时有一定的局限性。本文采用 MATLAB 语言编写了七参数法坐标系统转换程序,并对七参数坐标系统转换的若干问题进行了分析讨论。分析结果表明, 小区域范围内用正常高代替大地高对坐标转换精度影响很小; 公共点分布情况对坐标转换精度影响显著; 合适的公共点密度有利于提高坐标转换精度。 关键词:七参数法;坐标系统; MATLAB ;转换问题 1. 引言 随着 GPS 空间定位技术的发展, GPS 技术以其快速、精确、全天候在测量中的应用变的越来越广泛, GPS 成为建立基础控制网的首选手段 ]1[,由于 GPS 系统采用的是 WGS-84坐标系, 是一种地心坐标系, 而我国目前常用的两个坐标系 1954年北京坐标系 (以下称 BJ54 和 1980年国家大地坐标系,是一种参心坐标系,采用克拉所夫斯基椭球为参考椭球,并采用高斯克吕格投影方式进行投影, 我国的国土测量成果和在进行工程施工时大都是基于这两个坐标系下的。所以在利用 GPS 技术进行测量过程中必然存在由 WGS-84坐标向北京 54坐标系下的转换问题。现有的转换模型已经成熟,归纳起来主要有布尔莎 -沃尔夫模型(七参数法、莫洛登斯基 -巴代卡

C语言中的强制类型转换运算

C语言中的强制类型转换运算 C语言中的强制类型转换是通过类型转换运算来实现的。 其一般形式为: (类型说明符)(表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。 例如: (float)a 把a转换为实型 (int)(x+y)把x+y的结果转换为整形 在使用强制转换时应注意以下问题: 1)类型说明符和表达式都必须加括号(单个变量可以不加括号),如果把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。 2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性的转换,而不改变数据说明时对该变量定义的类型。 【例1】 #include int main (void) { float f = 3.14; printf("(int)f = %d,f = %.2f\n",(int)f,f); return 0; } 本例表明,f虽强制转为int型,但只在运算中起作用,是临时的,而f本身的类型并不改变。因此,(int)f的值为5(删去了小数)而f的值仍为5.75. 1、求余运算符(模运算符)“%”:双目运算,具有左结合性。要求参与运算的量均为整型。求余运算的结果等于两数相除后的余数。 #include int main (void) { printf(" %d\n",110%3);

return 0; } 本例输出110除以3所得的余数2。 2、算数表达式和运算符的优先级和结合性 表达式是由常量、变量、函数和运算符组合起来的式子。一个表达式有一个值及其类型,他们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级和结合性规定的顺序进行。单个的常量、变量、函数可以看作是表达式的特例。 算数表达式是由算术运算符和括号连接起来的式子。 算数表达式:用算数运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子。 以下是算数表达式的例子: a+b; (a*2)/c; (x+r)*8-(a+b)/7; ++I; Sin(x)+sin(y); (++i)-(j++)+(k--); 运算符的优先级:C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。 运算符的结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z,则先执行x-y运算,然后再执行+z运算。这是左结合性。右结合性最典型的是赋值运算符。如x=y=z. 3、强制类型转换运算符 其一般形式为: (类型说明符)(表达式)

Java中几种常用的数据类型之间转换方法

Java中几种常用的数据类型之间转换方法:1.短整型-->整型 如: short shortvar=0; int intvar=0; shortvar= (short) intvar 2.整型-->短整型 如: short shortvar=0; int intvar=0; intvar=shortvar; 3.整型->字符串型 如: int intvar=1; String stringvar; Stringvar=string.valueOf (intvar); 4.浮点型->字符串型 如: float floatvar=9.99f; String stringvar; Stringvar=String.valueOf (floatvar); 5.双精度型->字符串型 如: double doublevar=99999999.99; String stringvar; Stringvar=String.valueOf (doublevar); 6. 字符型->字符串型 如:char charvar=’a’; String stringvar;

Stringvar=String.valueOf (charvar); 7字符串型->整型、浮点型、长整型、双精度型如:String intstring=”10”; String floatstring=”10.1f”; String longstring=”99999999”; String doubleString=”99999999.9”; Int I=Integer.parseInt (intstring); Float f= Integer.parseInt (floatstring); Long lo=long. parseInt (longstring); Double d=double. parseInt (doublestring); 8字符串型->字节型、短整型 如:String s=”0”; Byte b=Integer.intValue(s); Short sh=Integer.intValue(s); 9字符串型->字符型 如: String s=”abc”; Char a=s.charAt(0); 10字符串型-->布尔型 String s=”true”; Boolean flag=Boolean.valueOf (“s”);

ArcGis中三参数和七参数转换

在ArcGIS Desktop中进行三参数或七参数精确投影转换ArcGIS中定义的投影转换方法,在对数据的空间信息要求较高的工程中往往不能适用,有比较明显的偏差。在项目的前期数据准备工作中,需要进行更加精确的三参数或七参数投影转换。下面介绍两种办法来在ArcGIS Desktop中进行这种转换。方法1:在ArcMap 中进行动态转换(On the fly) 假设原投影坐标系统为Xian80坐标系统,本例选择为系统预设的Projected Coordinate Systems\Gauss Kruger\Xian 1980\Xian 1980 GK Zone 20投影,中央经线为117度,要转换成Beijing 1954\Beijing 1954 GK Zone 20N。在ArcMap中加载了图层之后,打开View-Data Frame Properties对话框,显示当前的投影坐标系统为Xian 1980 GK Zone 20,在下面的选择坐标系统框中选择Beijing 1954 GK Zone 20N,在右边有一个按钮为Transformations...

点击打开一个投影转换对话框,可以在对话框中看到Convert from和Into表明了我们想从什么坐标系统转换到什么坐标系统。

在下方的using下拉框右边,点击New...,新建一个投影转换公式,在Method下拉框中可以选择一系列转换方法,其中有一些是三参数的,有一些是七参数的,然后在参数表中输入各个转换参数。 输入完毕以后,点击OK,回到之前的投影转换对话框,再点击OK,就完成了对当前地图的动态投影转换。这时还没有对图层文件本身的投影进行转换,要转换图层文件本身的投影,再使用数据导出,导出时选择投影为当前地图的投影即可。

施工测量坐标转换中的七参数详谈

施工测量坐标转换中的七参数详谈 坐标转换永远是测绘工作离不开的一个话题。坐标转换的方法很多,有的方法可以用相应的参数来描述,其中使用较广的一个是七参数。七参数大多用于不同坐标系统间的基准变换。 七参数的由来 对于非测绘的专业人士可能不太能理解“基准”这个词语。简单的理解就是坐标数值的零点,比如空间坐标的原点,再比如大地坐标的起算面。定义一个坐标系的三个基本要素是原点、指向、尺度。原点即坐标系的原点,指向即坐标轴的指向,尺度即长度单位和椭球。由于各个坐标系,或者说定义坐标系的组织所确定的这三个要素都有所区别,这就产生基准的变换,并且使用七参数在空间坐标中进行基准变换。

什么是七参数,又有哪七个参数呢? 七参数主要分为3类参数,旋转、缩放和平移。缩放,表示为k,主要是由于测量误差产生的;平移为3个坐标轴方向上的平移,表示为dX、dY、dZ,这是由于原点不一样产生的;旋转为3个坐标轴的旋转,表示为rX、rY、rZ,这是坐标轴指向不一致产生的。 值得注意的是,旋转存在方向的问题;不同的软件,或者说不同地域的人的习惯差异,致使旋转方向不一致,比如南方集团与天宝七参数旋转方向一致,但与ArcGIS的就相反。因此同一个七参数在不同软件中使用时需要考虑旋转方向的问题,适当的时候做相应的变换才能完成正确的坐标转换,即旋转方向定义相反时,旋转角取其相反数。 平移的单位为对应的长度单位,我们常用米;旋转的单位为秒,原因是各个坐标系间指向的差异都很小;缩放的单位是PPM(part(s)

per million,百万分之一),也就是说缩放是一个特别小的数值,这是因为坐标转换前我们都会率先统一单位,所以缩放数值也就体现了测量误差等因素的影响。 七参数的应用 参数的应用过程细分为旋转、缩放、平移三个过程。这三个过程的顺序是如何的,我们来看一下公式: 简化为: 上式中,X1为原始空间坐标,X2为目标空间坐标,K为缩放,R为旋转,dX为平移。 可以看出,该顺序是先旋转,再缩放,最后平移。当然与之相反的是先平移,再缩放,最后旋转,这是一个可逆的过程,方便了两个空间坐标来回的转换。这里为了方便说明,我们将旋转、缩放、

MAPGIS中坐标转换中七参数法

MAPGIS 中坐标转换中七参数法 京54坐标系和西安80坐标系之间的转换其实是两种不同的椭球参数之间的转换,一般而言比较严密的是用七参数布尔莎模型,即X 平移,丫平移,Z平移,X旋转(WX,丫旋转(WY,Z旋转(WY,尺度变化(DM。若得七参数就需要在一个地区提供3个以上的公共点坐标对(即北京54坐标下x、y、z和西安80坐标系下x、y、z),可以向地方测绘局获取。 下面具体的步骤: 启动“投影变换模块”,单击“文件”菜单下“打开文件”命 令,将演示数据“演示数据_北京54.WT、“演示数据_北京 54.WL、“演示数据—北京54.WP打开。1、单击“投影转换” 菜单下“S坐标系转换”命令,系统弹出“转换坐标值” “话框⑴、在“输入”一栏中,坐标系设置为“北京54坐标系”,单位设置为“线类单位—米”;⑵、在“输出”一栏中,坐标系设置为“西 安80坐标系”,单位设置为“线类单位—米”;⑶、在“转换方法”一栏中,单击“公共点操作求系数”项;⑷、在“输入”一栏中, 输入北京54坐标系下一个公共点的(x、y、z),如图2所示;⑸、在“输出”一栏中,输入西安80坐标系下对应的公共点的(x、y、z), 如图2所示;⑹、在窗口右下角,单击“输入公共点”按钮,右边的数字变为1,表示输入了一个公共点对,如图2所示;⑺、依照相同的方法,再输入另外的2个公共点对;⑻、在“转换方法”一

栏中,单击“七参数布尔莎模型”项,将右边的转换系数项激活;⑼、 单击“求转换系数”菜单下“求转换系数”命令,系统根据输入的3个公共点对坐标自动计算出7个参数,如图3所示,将其记录下来;2、单击“投影转换”菜单下“编辑坐标转换参数”命令,系统弹出“不同地理坐标系转换参数设置”对话框,如图4所示;在“坐标系选项”一栏中,设置各项参数如下:源坐标系:北京54坐标系;目的坐标系:西安80坐标系;转换方法:七参数布尔莎模型;长度单位:米;角度单位:弧度;然后单击“添加项”按钮,则在窗口左边的“不同椭球间转换”列表中将该转换关系列出;在窗口下方的“参数设置”一栏中,将上一步得到的七个参数依次输入到相应的文本框中,如图4所示;单击“修改项”按钮,输入转换关系,并单击“确定”按钮;接下来就是文件投影的操作过程了。 3、单击“投影转换”菜单下“ MAPGI毀影转换/选转换线文件”命令,系统弹出“选择文件”对话框 选中待转换的文件“演示数据_北京54.WL',单击“确定”按 钮; 4、设置文件的Tic点,在“投影变换”模块下提供了两种方法:手工设置和文件间拷贝,这里不作详细的说明; 5、单击“投影转换”菜单下“编辑当前投影参数”命令,系统弹出 “输入投影参数”对话框,如图6所示,根据数据的实际情况来设置 其地图参数坐标系类型:大地坐标系 椭球参数:北京54投影类型:高斯-克吕格投影比例尺分母:1坐标单

C语言中不同的结构体类型的指针间的强制转换详解

C语言中不同类型的结构体的指针间可以强制转换,很自由,也很危险。只要理解了其内部机制,你会发现C是非常灵活的。 一. 结构体声明如何内存的分布, 结构体指针声明结构体的首地址, 结构体成员声明该成员在结构体中的偏移地址。 变量的值是以二进制形式存储在内存中的,每个内存字节对应一个内存地址,而内存存储的值本身是没有整型,指针,字符等的区别的,区别的存在是因为我们对它们有不同的解读,param的值就是一个32位值,并且存储在某个内存单元中,通过这个32位值就能找到param所指向的结构的起始地址,通过这个起始地址和各个结构所包含变量离起始地址的偏移对这些变量进行引用, param->bIsDisable只是这种引用更易读的写法,只要param是指向 PAINT_PARAM的指针,那么param的值就肯定存在,param存在,偏移量已知,那么param->bIsDisable就肯定存在,只是要记住,param->bIsDisable只是代表了对param一定偏移地址的值。 不是说某个地址有那个结构体你才能引用,即使没有,你也能引用,因为你已经告诉了编译器param变量就是指向一个PAINT_PARAM结构体的变量并且指明了param的值,机器码的眼中是没有数据结构一说的,它只是机械的按照 指令的要求从内存地址取值,那刚才的例子来说,peg->x,peg->y的引用无论 0x30000000是否存在一个eg结构体都是合法的,如果0x30000000开始的8 个字节存在eg结构体,那么引用的就是这个结构体的值,如果这个位置是未定义的值,那么引用的结果就是这8个字节中的未定义值,内存位置总是存在的,而对内存中值的引用就是从这些内存位置对应的内存单元取值。 举个例子: typedefstruct_eg { int x; int y; }eg;

c各种数据类型之间相互转化

⑴. char *转换到BSTR BSTR b = _com_util::ConvertStringToBSTR("数据"); SysFreeString(bstrValue); (2).BSTR转换到char* char *p=_com_util::ConvertBSTRToString(b); delete p; 12.typedef和typename要害字 这两个要害字在运用的时辰时例会令人迷惑,其实很简单,typedef是类型定义, 而typename是类型解释2009年04月20日 类型转换是将一种类型的值映射为另一种类型的值进行数据类型的转换 是在实际代码编写中经常遇到的问题,出格是字符串和其它类型的转换 1.将字符串转换为整儿 (1).转换函数 // 双精度函数 double atof( const char *string ); double _wtof( const wchar_t *string ); 自适应 TCHAR:_tstof 、_ttof VS2005:_atof_l 、_wtof_l 、_atodbl 、_atodbl_l // 整型函数 int atoi( const char *string ); _int64 _atoi64( const char *string ); int _wtoi( const wchar_t *string ); _int64 _ wtoi64( const char *string ); 自适应 TCHAR:_tstoi 、_ttoi 、_tstoi64 、_ttoi64 VS2005:_atoi_l 、_wtoi_l 、_atoi64_l 、_wtoi64_l //长整形函数 long atol( const char * string ); long _wtol(

MAPGIS中坐标转换中七参数法

MAPGIS中坐标转换中七参数法 京54坐标系和西安80坐标系之间的转换其实是两种不同的椭球参数之间的转换,一般而言比较严密的是用七参数布尔莎模型,即X平移,Y平移,Z平移,X旋转(WX),Y旋转(WY),Z旋转(WY),尺度变化(DM)。若得七参数就需要在一个地区提供3个以上的公共点坐标对(即北京54坐标下x、y、z和西安80坐标系下x、y、z),可以向地方测绘局获取。 下面具体的步骤: 启动“投影变换模块”,单击“文件”菜单下“打开文件”命令,将演示数据“演示数据_北京54.WT”、“演示数据_北京54.WL”、“演示数据_北京54.WP”打开。1、单击“投影转换”菜单下“S坐标系转换”命令,系统弹出“转换坐标值”“话框 ⑴、在“输入”一栏中,坐标系设置为“北京54坐标系”,单位设置为“线类单位-米”;⑵、在“输出”一栏中,坐标系设置为“西安80坐标系”,单位设置为“线类单位-米”;⑶、在“转换方法”一栏中,单击“公共点操作求系数”项;⑷、在“输入”一栏中,输入北京54坐标系下一个公共点的(x、y、z),如图2所示;⑸、在“输出”一栏中,输入西安80坐标系下对应的公共点的(x、y、z),如图2所示;⑹、在窗口右下角,单击“输入公共点”按钮,右边的数字变为1,表示输入了一个公共点对,如图2所示;⑺、依照相同的方法,再输入另外的2个公共点对;⑻、在“转换方法”一栏中,单击“七参数布尔莎模型”项,将右边的转换系数项激活;⑼、单击“求转换系数”菜单下“求转换系数”命令,系统根据输入的3个公共点对坐标自动计算出7个参数,如图3所示,将其记录下来; 2、单击“投影转换”菜单下“编辑坐标转换参数”命令,系统弹出“不同地理坐标系转换参数设置”对话框,如图4所示; 在“坐标系选项”一栏中,设置各项参数如下:源坐标系:北京54坐标系;目的坐标系:

C语言数据类型与表达式习题及答案

第一章数据类型,运算符与表达式 一.选择题 1.不合法的常量是A。 A)‘/2’B) “”C)‘’D)“483” 2. B 是C语言提供的合法的数据类型关键字。 A)Float B)signed C)integer D)Char 3.在以下各组标识符中,合法的标识符是(1)A,(2) C ,(3) D 。 (1)A)B01 B)table_1 C)0_t D)k% Int t*.1 W10 point (2)A)Fast_ B)void C)pbl D) Fast+Big abs fabs beep (3)A)xy_ B)longdouble C)*p D)CHAR 变量1 signed history Flaut 4. 不属于合法的C语言长整型常量的是 C 。 A)5876273 B)0L C)2E10 D)(long)5876273 7.下面选项中,均是合法浮点数的是 B 。 A)+1e+1 B)-0.60 C)123e D)-e3 5e-9.4 12e-4 1.2e-.4 .8e-4 03e2 -8e5 +2e-1 5.e-0 8.在C语言中,要求参加运算的数必须是整数的运算符是 C 。 A)/ B)* C)% D) = 9.在C语言中,字符型数据在内存中以 D 形式存放。 A)原码B)BCD码C)反码D)ASCII码10.下列语句中,符合语法的赋值语句是 C 。 A)a=7+b+c=a+7;B)a=7+b++=a+7; C)a=7+b,b++,a+7;D)a=7+b = c=a+7; 11. B 是非法的C语言转义字符。 A)‘\b’B)‘\0xf’C)‘\037’D)‘\’’12.对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中, B 是正确的。 A)语法错误B)f为5.0 C)f为0.0 D)f为2.0 13.与代数式x y u v ? ? 不等价的C语言表达式是A。 A)x*y/u*v B)x*y/u/v C)x*y/(u*v) D)x/(u*v)*y 14.在C语言中,数字029是一个 D 。 A)八进制数B)十六进制数C)十进制数D)非法数 16.对于char cx=?\039?;语句,正确的是A。 A)不合法B)cx的值是?\03? C)cx的值为四个字符D)cx的值为三个字符 17.若int k=7,x=12;则能使值为3的表达式是 D 。 A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5) 18.为了计算s=10!(即10的阶乘),则s变量应定义为 C 。 A)int B)unsigned C)long D)以上三种类型均可

RTK坐标转换中四参数法与七参数法精度比较

2006年第5期(第24卷262期)东北水利水电67[文章编号]1002--0624(2006)05一0067一02 RTK坐标转换中四参数法与七参数法精度比较 茹树青t,吉长东z,王宏宇, (1.阜新市水利勘测设计研究院,辽宁阜新123000;2.辽宁工程技术大学,辽宁阜新123000; 3.阜新蒙古族自治县河道站,辽宁阜新123100;) [摘要]文章探讨了P.TK坐标转换中的参数法和七参数法的原理,并对观测的平面坐标进行了精度 的分析和比较。 [关键词]四参数;七参数;IkTK;坐标转换 [中图分类号]P204 随着GPSrZTK技术的出现,其以精度高、速度快和不存在误差累积等优点在各行各业中被广泛应用。坐标转换是R.TK技术里不可缺少的重要部分。不同的空间直角坐标系之间的转换一般采用布尔萨(Bursa)七参数模型,本文在研究布尔萨模型的基础上导出四参数模型。GPS接收机一般是利用三个以上的重合点的两套坐标值通过七参数(或三参数)和四参数来实现坐标转换。在常用的GPS接收机中Ashtechz—x采用的是四参数模型。而Trimble5700采用的则是七参数模型。 本文利用Ashtechz—x和Trimble5700双频GPS接收机(均是4台套(1+3),水平方向标称精度均是10mm+lppm),采用实时载波相位差分技术(R.TK)完成了某工程GPS测量工作。用两种型号的GPSIkTK.对135个图根点分别独立观测2次,并用GTS一6全站仪(标称精度为2”,3mm+2ppm),采用全站仪导线的方法,按I级导线要求,对上述点中的50个点进行检测(抽检比例为37%),总结出在该地区,只有2个已知点的情况下,四参数法要优于七参数法。 1七参数模型 设x压和xa分别为地面网点和GPS网点的 [文献标识码]B 参心和地心坐标向量。由布尔萨(Bursa)模型可知: X压=AX+(1+南)R(8:)尺(s,)R(8;)x伍(1)式中x口=(x赝,Y口,磊),Xa.=(Xa,Y盘,玩),△x=(AX,AY,△z)为平移参数矩阵;k为尺度变化参数:旋转参数矩阵为 FCOSs.sine,0] R(乞)。J-sine,co嗡0I, 【-001j ~P000。5i1吩], R(岛)2lI, [sine,0COSSyj r100] R(&)=10COS,fix—sirle,l Lo—sine,co沾,j 通常将AX,AY,△z,k,8:,岛,吼称为坐标系问的转换参数。为了简化计算,当k,£,占,,8,为微小量时,忽略其间的互乘项,且COS8—1,sirls—s。则上述模型变为: 【收稿日期】2005—12—12 【作者简介】茹树青(1965一),男,辽宁阜新市人。工程师,从事工程测量工作。 卦、,七+‘l,k+XyZ△△△

C语言类型强制转换

C语言类型强制转换 本篇主要介绍 C语言类型强制转换。 强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。 自动转换是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型到另一类的转换。例如: (float) a 把a转换为实型(int)(x+y) 把x+y的结果转换为整型在使用强制转换时应注意以下问题: 1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y) 写成(int)x+y则成了把x转换成int型之后再与y相加了。 2.无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进 行的临时性转换,而不改变数据说明时对该变量定义的类型。 例1: main() { float f=5.75; printf("(int)f=%d,f=%f\n",(int)f,f); } f<--5.75 将float f强制转换成int f float f=5.75;printf("(int)f=%d,f=%f\n",(int)f,f); 本例表明,f虽强制转为int 型,但只在运算中起作用,是临时的,而f本身的类型并不改变。因此,(int)f 的值为 5(删去了小数)而f的值仍为5.75。 例2:比如我们可以(int)'A',这样转换后的结果为A的ASCII码数值,因为那块内存本来就存的那个数,只是换个形式使用而已。知道上面的原则,我们 可以对任何数据类型进行转换,但是转换的结果可能不是你想像的结果,举例 (int)'9'的结果为多少?不是9而是0x39。来个高深点的printf("%d",'12'); 的输出是什么?正确答案是12594,因为printf("%d",'12'),打印的是存储12 的内存地址上的内容,即ASCII码值2存储在低位,1储在高位地址,0x32就是2 的ASCII码,0x31就是1的ASCII码,所以是0x3132,转换成10进制就是12594!

C语言数据类型及转换

C语言的数据类型 C语言提供的数据结构,是以数据类型形式出现的。具体分类如下: 1.基本类型 分为整型、实型(又称浮点型)、字符型和枚举型四种。 2.构造类型 分为数组类型、结构类型和共用类型三种。 3.指针类型。在第9章中介绍。 4.空类型 C语言中的数据,有常量和变量之分,它们分别属于上述这些类型。 本章将介绍基本类型中的整型、实型和字符型三种数据。 2.3 常量和变量 2.3.1 常量 1.常量的概念 在程序运行过程中,其值不能被改变的量称为常量。 2.常量的分类 (1)整型常量 (2)实型常量 (3)字符常量。 (4)符号常量。 常量的类型,可通过书写形式来判别。 2.3.2 变量 1.变量的概念 在程序运行过程中,其值可以被改变的量称为变量。 2.变量的两个要素 (1)变量名。每个变量都必须有一个名字──变量名,变量命名遵循标识符命名规则。(2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。 3.标识符命名规则 (1)有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。 (2)有效长度:随系统而异,但至少前8个字符有效。如果超长,则超长部分被舍弃。 例如,由于student_name和student_number的前8个字符相同,有的系统认为这两个变量,是一回事而不加区别。 在TC V2.0中,变量名(标识符)的有效长度为1~32个字符,缺省值为32。 (3)C语言的关键字不能用作变量名。 注意:C语言对英文字母的大小敏感,即同一字母的大小写,被认为是两个不同的字符。 习惯上,变量名和函数名中的英文字母用小写,以增加可读性。 思考题:在C语言中,变量名total与变量名TOTAL、ToTaL、tOtAl等是同一个变量吗?标识符命名的良好习惯──见名知意: 所谓“见名知意”是指,通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。 例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。 4.变量的定义与初始化 在C语言中,要求对所有用到的变量,必须先定义、后使用;且称在定义变量的同时进行赋初值的操作为变量初始化。

三参数与七参数的区别

参数问题一直是测量方面最大的问题,我简单的解释一下, 首先说七参,就是两个空间坐标系之间的旋转,平移和缩放,这三步就会产生必须的七个参数,平移有三个变量Dx,Dy,DZ;旋转有三个变量,再加上一个尺度缩放,这样就可以把一个空间坐标系转变成需要的目标坐标系了,这就是七参的作用。如果说你要转换的坐标系XYZ三个方向上是重合的,那么我们仅通过平移就可以实现目标,平移只需要三个参数,并且现在的坐标比例大多数都是一致的,缩放比默认为一,这样就产生了三参数,三参就是七参的特例,旋转为零,尺度缩放为一。四参是应用在两个平面之间转换的,还没有形成统一的标准,说的有点乱,如果还是不明白可以给我留言。希望有帮助。 1.2 四参数 操作:设置→求转换参数(控制点坐标库) 四参数是同一个椭球内不同坐标系之间进行转换的参数。在工程之星软件中的四参数指的是在投影设置下选定的椭球内 GPS 坐标系和施工测量坐标系之间的转换参数。工程之星提供的四参数的计算方式有两种,一种是利用“工具/参数计算/计算四参数”来计算,另一种是用“控制点坐标库”计算。。需要特别注意的是参予计算的控制点原则上至少要用两个或两个以上的点,控制点等级的高低和分布直接决定了四参数的控制范围。经验上四参数理想的控制范围一般都在 5-7 公里以内。 四参数的四个基本项分别是:X 平移、Y 平移、旋转角和比例。 从参数来看,这里没有高程改正,所以建议采用“控制点坐标库”来

求取参数,而根据已知点个数的不同所求取的参数也会不同,具体有以下几种。 1.2.1 四参数+校正参数:所需已知点个数:2个 1.2.2 四参数+高程拟合 GPS 的高程系统为大地高(椭球高),而测量中常用的高程为正常高。所以 GPS 测得的高程需要改正才能使用,高程拟合参数就是完成这种拟和的参数。计算高程拟和参数时,参予计算的公共控制点数目不同时计算拟和所采用的模型也不一样,达到的效果自然也不一样。 高程拟后有三种拟合方式: a.高程加权平均:所需已知点个数:3个 b.高程平面拟合:所需已知点个数:4 ~ 6个 c.高程曲面拟合:所需已知点个数:7个以上 二、七参数 操作:工具→参数计算→计算七参数 所需已知点个数:3个或3个以上 七参数的应用范围较大(一般大于 50 平方公里),计算时用户需要知道三个已知点的地方坐标和 WGS-84 坐标,即 WGS-84 坐标转换到地方坐标的七个转换参数。注意:三个点组成的区域最好能覆盖整个测区,这样的效果较好。七参数的格式是,X平移,Y平移,Z 平移,X 轴旋转,Y 轴旋转,Z 轴旋转,缩放比例(尺度比)。 七参数的控制范围和精度虽然增加了,但七个转换参数都有参

c语言强制转换四舍五入

在C语言中,强制转换后的数是四舍五入还是去尾? 去尾 要想四舍五入的话 (int)(number+0.5) 都是直接去尾的。当为数太多时直接截断。所以在强制转换时要很注意 C语言有没有数据的四舍五入?什么情况下会用到四舍五入?数据类型转换?有四舍五入的情况,在你想要保留几位小数的时候,多余的紧接着的一位要四舍五入 不过C里面没有提供四舍五入的函数,不过你可以这样 a = (int)(a*100 + 0.5)/100 这只是一个小技巧,对a的第三位进行四舍五入 提问者评价 +0.5可以解决这个问题!谢谢你! C语言中的float和double类型数据是浮点数,所以小数部分就存在四舍五入问题,当指定输出位数在精度范围之内时,系统会自动舍入,无需人工干预,如果小数部分也在精度范围内,比如10.0/2.0 = 5.0,2位以上的输出位数时,后面的都是0,此时,当然不需要舍入了。 数据类型转换有两种方式,一种是默认强制转换,比如将char、short、Int、Long和float类型数据赋给double类型变量时,编译程序会自动实施转换,这是因为,在精度更高时,这样的转换是内有损失的。另一种是手动强制类型转换,比如dnum = (double)inum;,意思是将整形变量inum首先转换为双精度数据,然后再付给dnum。当将高精度类型变量赋给低精度类型变量时,除非手动强制转换,否则,编译程序会有提示的。 数据强制转换是用舍弃的方法,不会用四舍五入,什么时候用四舍五入是需要详细说明的,也就是你的业务需求而定,你可以把数字+0.5,然后进行强制转换 ouble强制转换成int型的时候保留整数部分的。。 比如double a=1.5; int b=a; a就是1。 C语言强制类型转换问题 2012-03-11 17:52匿名|分类:C/C++ |浏览2634次 int a,b; //keil c里的int,也就是16位。 a=0000; b=0x1234; a=(char)(b);

数据类型转换

数据类型转换 各类整数之间的转换 C语言中的数分8位、16位和32位三种。属于8 位数的有:带符号 字符char,无符号字符unsigned char 。属于16位数的有:带符号整 数int,无符号整数unsigned int(或简写为unsigned),近指针。属 于32位数的有:带符号长整数long,无符号长整数 unsigned long, 远指针。 IBM PC是16位机,基本运算是16位的运算,所以,当8位数和16 位数进行比较或其它运算时,都是首先把8 位数转换成16位数。为了 便于按2的补码法则进行运算,有符号8位数在转换为16位时是在左边 添加8个符号位,无符号8位数则是在左边添加8个0。当由16位转换成 8位时,无论什么情况一律只是简单地裁取低8位,抛掉高8 位。没有 char或usigned char常数。字符常数,像"C",是转换为int以后存储 的。当字符转换为其它 16 位数(如近指针)时,是首先把字符转换为 int,然后再进行转换。 16位数与32位数之间的转换也遵守同样的规则。 注意,Turbo C中的输入/输出函数对其参数中的int和unsigned int不加区分。例如,在printf函数中如果格式说明是%d 则对这两种 类型的参数一律按2 的补码(即按有符号数)进行解释,然后以十进制 形式输出。如果格式说明是%u、%o、%x、%X,则对这两种类型的参数 一律按二进制 (即按无符号数) 进行解释,然后以相应形式输出。在 scanf函数中,仅当输入的字符串中含有负号时,才按2的补码对输入 数进行解释。 还应注意,对于常数,如果不加L,则Turbo C一般按int型处理。 例如,语句printf("%081x",-1L),则会输出ffffffff。如果省略1, 则输出常数的低字,即ffff。如果省略L,则仍会去找1个双字,这个 双字的就是int常数-1,高字内容是不确定的,输出效果将是在4个乱 七八糟的字符之后再跟ffff。 在Turbo C的头文件value.h中,相应于3 个带符号数的最大值, 定义了3个符号常数: #define MAXSHORT 0X7FFF #define MAXINT 0X7FFF #define MAXLONG 0X7FFFFFFFL 在Turbo C Tools中,包括3对宏,分别把8位拆成高4位和低4位, 把16位拆成高8位和低8位,把32位拆成高16位和低16位。 uthinyb(char value) utlonyb(char value) uthibyte(int value) utlobyte(int value) uthiword(long value) utloword(long valueu) 在Turbo C Tools中,也包括相反的3 个宏,它们把两个4位组成 一个8位,把两个8位组成一个16位,把两个16位组成一个32位。 utnybbyt(HiNyb,LoNyb) utwdlong(HiWord,Loword) utbyword(HiByte,LoByte)实数与整数之间的转换 Turbo C中提供了两种实数:float和 double。float 由32 位组 成,由高到低依次是:1个尾数符号位,8个偏码表示的指数位(偏值= 127),23个尾数位。double由64位组成,由高到低依次是:1 个尾数

七参数坐标变换,影像和矢量完美套合技术文档

影像与完美矢量套合技术文档 本文档要解决的问题如下: 1.如何将卫星影像导出为cad,并与现有的cad图形套合 2.如何将CAD图形导入到软件中,与卫星影像进行套合 众所周知, CAD图形文件常为80或者54坐标系高斯投影,而Google Earth 上的影像则为WGS84坐标系经纬度投影,这两种数据其坐标系采用的是不同的参考椭球,要想实现影像和矢量完美套合,须涉及到不同椭球之间坐标转换,常用的方法有三参数法、四参数和七参数法,本文采用七参数法。 首先说七参数,两个不同的坐标系之间转换时,通常使用七参数模型(数学方程组),在该模型中有七个未知参数,即: (1)三个坐标平移量(△X,△Y,△Z),即两个空间坐标系的坐标原点之间坐标差值; (2)三个坐标轴的旋转角度(△α,△β,△γ)),通过按顺序旋转三个坐标轴指定角度,可以使两个空间直角坐标系的XYZ轴重合在一起。 (3)尺度因子K,即两个空间坐标系内的同一段直线的长度比值,实现尺度的比例转换。 计算七参数至少需要三个公共已知点,在两个不同空间直角坐标系中的六对坐标值,才能推算出这七个未知参数,计算出了这七个参数,就可以通过七参数方程组,将一个坐标系下一个点的坐标值转换为另一个坐标系下。需要说明的是,七参数各个地方,各有不同,不存在统一的转换参数,并且七参数属于保密范畴。 1)求解七参数 假如你有精确的WGS84到目标坐标系的转换参数(一般可从当地测绘局中获得),我们软件能直接支持,求解七参数这一步可以略过,直接进入下一步。 假如你没有转换参数,可以通过在CAD(或其他图纸资料)中和卫星影像图上找三组及以上公共点(cad和地图上位置对应的三组点),根据这些已知点对求七参数。当然,如果你有其他渠道获取公共点,比如通过CORS测量或者从当地测试局获取,可以直接通过我们软件计算七参数,略过找公共点这一步。 下面将演示如何找公共点

C语言各种数值类型转换

C语言数据类型转换1 CString,int,string,char*之间的转换 string 转CString CString.format("%s", string.c_str()); char 转CString CString.format("%s", char*); char 转string string s(char *); string 转char * const char *p = string.c_str(); CString 转string string s(CString.GetBuffer()); 1,string -> CString CString.format("%s", string.c_str()); 用c_str()确实比data()要好. 2,char -> string string s(char *); 你的只能初始化,在不是初始化的地方最好还是用assign(). 3,CString -> string string s(CString.GetBuffer()); GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间. 《C++标准函数库》中说的 有三个函数可以将字符串的内容转换为字符数组和C—string 1.data(),返回没有”\0“的字符串数组 2,c_str(),返回有”\0“的字符串数组 3,copy() CString互转int 将字符转换为整数,可以使用atoi、_atoi64或atol。 而将数字转换为CString变量,可以使用CString的Format函数。如 CString s; int i = 64; s.Format("%d", i) Format函数的功能很强,值得你研究一下。

相关文档
最新文档