道路曲线放样实习报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工程测量学实习报告
科目:道路曲线放样
班级:xxxxxx
组别:第五组
成员:xxxxxx
时间:2013.5.22
一.实习科目:道路曲线放样
二.时间:14:30-16:30
三.地点:田径场
四.人员分工:
xxx:主要在整个实习过程中机动,提醒各成员在操作过程中的注意事项等。
xxx:主要负责打木桩和钉钉子。
xxx:主要负责移棱镜。
xxx:主要负责数据准备,在实习过程中的数据观测。
五.所用仪器及精度:
仪器:尼康DTM-352,30M钢尺
精度:测角5″最小显示:1″/5″/10″
测距3mm+2ppm 测程3000m/3P 最小显示1mm
六.数据准备:
在教员给定的已知数据基础上,我组采用编程的方法计算实习所需的所有数据,包括点位坐标、夹角及距离等。
程序代码见附件1。
七.操作步骤:
①先选定交点JD,在此处架设全站仪。
②选定一个合适的方向,根据计算的切线距离确定直缓点ZH,
并在此处用三脚架架设棱镜。
③在交点处以切线方向为零方向,根据计算的角度和距离确
定缓圆点HY。
④将全站仪重新对准直缓点定零方向,根据数据确定曲中点QZ。
⑤同上述步骤,依次确定圆缓点、缓直点。
⑥将全站仪取下架至直缓点出,两处三脚架不动,只交换棱镜
和全站仪。
⑦在直缓点处以切线方向为零方向,根据计算的角度和距离依
次确定各碎部点,在此过程中同时在各主点也再放样一次从
而校验各主点的精度。
八.检验数据及实测对比:
在直缓点确定碎部点时,对个主点进行了精度校验,经测量得
到各主点距离误差如下:
缓圆点:5mm
曲中点:1mm
圆缓点:12mm
缓直点:10mm
九.实验体会:
经过两次课的实习,我们组成功完成了道路曲线的放样工作,同时也了解到了许多课本上没有学到的知识,实际操作仪器进行施工放样的能力也发生了一个质的提高。
当然,在实际的放样过程中,我们也发现了很多的问题。
例如,在第一次的实习中,我们就忽略了棱镜加常数的影响,导致了错误的放样结果。
这些错误在我们实际的施工放样工作中是绝对不允许出现的。
所谓失之毫厘,谬以千里,测量工作尤是如此,容不得半点马虎与懈怠。
同时,通过这次实习培养了我
们的基本功,锻炼了我们使用全站仪进行施工放样的能力。
另外,这次实习也让我们意识到团队分工与团队协作意识对于解决实际问题的重要性。
总之,此次实习是我们充分认识到测量工作的科学性,精密性,与严谨性,对我们测绘工作者的指导性作用。
附件1:
// 道路曲线放样.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
// 将度分秒连写的(double型)角度化为弧度值
double dms_arc(double a)
{
//提取角度值的符号
double sign=(a<0.0) ? -1.0 : 1.0;
a=fabs(a);
//提取角度值的整度
int d=(int)((a+0.00001)/10000.0);
a=a-d*10000.0;
if(a<0.0){ d=d-1; a=a+10000;}
//提取角度值的整分及秒值
int m=(int)((a+0.00001)/100.0);
a=a-m*100;
if(a<0.0){ m=m-1; a=a+100.0;}
a=sign*(d*3600.0+m*60.0+a)/206264.806247096363;
return a;
}
// 将角度的弧度值化为度分秒连写的角度(double 型)double arc_dms(double a)
{
a=a*206264.806247096363;
double sign=(a<0.0) ? -1.0 : 1.0;
a=fabs(a);
int d=(int)(a/3600.0+0.0000001);
a=a-d*3600.0;
if(a<0.0){ d=d-1; a=a+3600.0; }
int m=(int)(a/60.0+0.0001);
a=a-m*60.0;
if(a<0.0){ m=m-1; a=a+60.0; }
a=d*10000.0+m*100.0+a;
return a*sign;
}
int main(int argc, char* argv[])
{ FILE *f1,*f2,*f3,*f4; //从文件中读取数据
f1=fopen("known.txt","r");
if (f1==NULL)
{ printf("cannot open this file\n");
exit(0);
}
int DK0;
double S0,arfa,R,lh,dl;
fscanf(f1,"%d%lf%lf%lf%lf%lf",&DK0,&S0,&arfa,&R,&lh, &dl);
arfa=dms_arc(arfa);
fclose(f1);
double m,p,c,Bh; //计算m,p,c,Bh
c=R*lh;
m=lh*0.5-lh*lh*lh/R/R/240.0;
p=lh*lh/R/24.0;
Bh=0.5*lh/R;
// printf("%lf\n%lf\n%lf\n%lf\n",c,m,p,Bh);
double T,Ly,L,E,q; //计算T,Ly,L,E,q
T=m+(R+p)*tan(arfa/2.0);
S0=S0-T;
Ly=(arfa-2*Bh)*R;
L=(arfa-2*Bh)*R+2*lh;
E=(p+R)/cos(arfa/2.0)-R;
q=2*T-L;
// printf("\n%lf\n%lf\n%lf\n%lf\n%lf\n",T,L,E,q,Ly);
S0=402.377;
T=46.763;
Ly=50.356;
c=2000;
m=9.997;
p=0.167;
double
dk[13]={410,420,422.377,430,440,447.555,450,460,470,472.73 3,480,490,492.733};
int n;
n=13;
double *X=new double[n];
double *Y=new double[n];
double *B=new double[n];
double *s=new double[n];
double cita=dms_arc(1800000)-arfa; //坐标变换时
的旋转角
for (int i=0;i<n;i++) //计算放样点的坐标
{ double l0=dk[i];
if (l0<lh+S0)
{ l0=l0-S0;
X[i]=l0-pow(l0,5)/pow(c,2)/40.0+pow(l0,9)/pow(c,4)/3450 .0;
Y[i]=pow(l0,3)/c/6.0-pow(l0,7)/pow(c,3)/336.0+pow(l0,11 )/pow(c,5)/42240.0;
}
else if (l0>=lh+S0&&l0<=S0+lh+Ly)
{
l0=l0-S0;
X[i]=m+R*sin(Bh+(l0-lh)/R);
Y[i]=p+R*(1-cos(Bh+(l0-lh)/R));
}
else if (l0>S0+lh+Ly)
{
l0=S0+L-l0;
double
x1=l0-pow(l0,5)/pow(c,2)/40.0+pow(l0,9)/pow(c,4)/3450.0;
double
y1=pow(l0,3)/c/6.0-pow(l0,7)/pow(c,3)/336.0+pow(l0,11)/pow (c,5)/42240.0;
X[i]=(x1-T)*cos(cita)-y1*sin(cita)+T;
Y[i]=(T-x1)*sin(cita)-y1*cos(cita);
}
}
f2=fopen("Result.txt","w"); //输出放样点的坐标值
if (f2==NULL)
{ printf("cannot open this file\n");
exit(0);
}
for (i=0;i<n;i++)
{
fprintf(f2,"%.3lf\t%.3lf\n",X[i],Y[i]);
}
fclose(f2);
f3=fopen("Result.txt","r"); //计算并输
出角度和距离
if (f3==NULL)
{ printf("cannot open this file\n");
exit(0);
}
f4=fopen("Result1.txt","w");
fprintf(f4," Peg \t X(m) Y(m) B S(to ZH)(m)\n");
for (i=0;i<n;i++)
{ double a,b;
fscanf(f3,"%lf%lf",&a,&b);
B[i]=atan(b/a);
B[i]=arc_dms(B[i])/10000;
s[i]=sqrt(a*a+b*b);
fprintf(f4,"DK8+%8.3lf\t%8.3lf\t%8.3lf\t%8.4lf\t%8.3lf\
n",dk[i],X[i],Y[i],B[i],s[i]);
}
return 0; }。