测绘类C#程序代码.docx

上传人:b****4 文档编号:11987271 上传时间:2023-04-16 格式:DOCX 页数:22 大小:175.81KB
下载 相关 举报
测绘类C#程序代码.docx_第1页
第1页 / 共22页
测绘类C#程序代码.docx_第2页
第2页 / 共22页
测绘类C#程序代码.docx_第3页
第3页 / 共22页
测绘类C#程序代码.docx_第4页
第4页 / 共22页
测绘类C#程序代码.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

测绘类C#程序代码.docx

《测绘类C#程序代码.docx》由会员分享,可在线阅读,更多相关《测绘类C#程序代码.docx(22页珍藏版)》请在冰豆网上搜索。

测绘类C#程序代码.docx

测绘类C#程序代码

 

测绘类C#程序代码

常用测量程序设计代码

(1)用全站仪在A点观测了B点斜边和垂直角,求A到B的高差。

(提示:

,D--斜边,

--垂直角,

--仪器高,

--反光镜高,

--大气折光系数)

usingSystem;

using;

namespaceConsoleApplication1

{

classApplication

{

staticvoidMain(string[]args)

{

("请输入斜边=");

doubleD=());

("请输入垂直角[]=");

doublea=DEG()));

("请输入仪器高=");

doublei=());

("请输入反光镜高=");

doublev=());

doubleh=D*(a)+(1-*D/*D/*(a)*(a)/+i-v;

("高差为{0}",h);

}

MainMain

Maindd(DEG(str)));

}

else

{

break;

}

}while(true);

i=1;

foreach(doubleain导线转角集合)

{

a0+=a+;

if(a0>2*

{

a0-=2*;

}

elseif(a0<

{

a0+=2*;

}

("第{0}条边的方位角为{1}",i++,DMS(a0));

}

}

Maindd(DEG(str)));

}

else

{

break;

}

("请输入第{0}条边长值=",i++);

导线边长集合.Add(()));

}while(true);

ount;j++)

{

a0+=导线转角集合[j]+;

if(a0>2*a0-=2*;

x0=x0+导线边长集合[j]*(a0);

y0=y0+导线边长集合[j]*(a0);

("P{0}点的坐标是:

{1},{2}",j+2,x0,y0);

}

}

Maindd(str));

}

else

{

break;

}

("请输入第{0}段高差=",i++);

路线段高差集合.Add()));

}while(true);

ount;j++)

{

w+=路线段高差集合[j];

总长度+=路线段长度集合[j];

}

w=w-(Hb-Ha);ount;j++)

{

H+=路线段高差集合[j]+v*路线段长度集合[j];

("P{0}点的高程是:

{1}",j+1,H);

}

("最后一点就是B点!

");

}

}

}

(7)在如图所示的前方交会中,ABJ三点按逆时针方向排列,已知AB两点的坐标和两个交会角度,求J点的坐标。

usingSystem;

using;

namespaceConsoleApplication1

{

classApplication

{

staticvoidMain(string[]args)

{

("请输入A点的x坐标=");

doubleAx=());

("请输入A点的y坐标=");

doubleAy=());

("请输入B点的x坐标=");

doubleBx=());

("请输入B点的y坐标=");

doubleBy=());

("请输入α的角度值=");

doubleα=DEG()));

("请输入β的角度值=");

doubleβ=DEG()));

Maindd(str));

}

else

{

break;

}

("请输入第{0}点的y坐标=",i++);

多边形Y坐标集.Add(()));

}while(true);

ount;

for(intj=0;j

{

area+=多边形X坐标集[j]*多边形Y坐标集[j+1]-多边形X坐标集[j+1]*多边形Y坐标集[j];

}

MainEG()));差(D,α,仪器高,反光镜高,out水平距离);

水平距离平方集合.Add(水平距离*水平距离);

高差集合.Add(h);

水平距离平方和+=水平距离*水平距离;

高差和+=h;

}while(true);

ount;j++)

{

H+=高差集合[j]+单位长度改正数*水平距离平方集合[j];

("第{0}点的高程H={1}",j+2,H);

}

("最后一个点的高程应该与B点的高程相同!

");

}

}

class导线

{

Main位角(MX,MY,AX,AY);

List坐标增量X集合=newList();

List坐标增量Y集合=newList();

inti=1;

double坐标增量X和=0;

double坐标增量Y和=0;

double坐标增量X绝对值和=0;

double坐标增量Y绝对值和=0;

double水平距离和=0;

do

{

("请输入{0}点到{1}点的水平距离S<直接回车结束输入>=",i,i+1);

stringstr=();

if(str=="")break;

doubleS=(str);

("请输入{0}点的水平角<左角为正,右角为负>=",i);

doubleβ=导线.DEG()));

i++;

标(0,0,β,S,α0,outdx,outdy);

坐标增量X集合.Add(dx);

坐标增量Y集合.Add(dy);

坐标增量X和+=dx;;

坐标增量Y和+=dy;;

坐标增量X绝对值和+=(dx);

坐标增量Y绝对值和+=(dy);

水平距离和+=S;

}while(true);

ount;j++)

{

X+=坐标增量X集合[j]+X坐标单位长度改正数*(坐标增量X集合[j]);

Y+=坐标增量Y集合[j]+Y坐标单位长度改正数*(坐标增量Y集合[j]);

("第{0}点的X坐标={1},Y坐标={2}",j+2,X,Y);

}

("最后一个点的坐标应该与B点的坐标相同!

");

}

}

class导线

{

Main位角(MX,MY,AX,AY);

List坐标增量X集合=newList();

List坐标增量Y集合=newList();

List高差集合=newList();

List水平距离平方集合=newList();

inti=1;

double坐标增量X和=0;

double坐标增量Y和=0;

double坐标增量X绝对值和=0;

double坐标增量Y绝对值和=0;

double水平距离和=0;

double高差和=0;

double水平距离平方和=0;

do

{

("请输入{0}点到{1}点的斜距D<直接回车结束输入>=",i,i+1);

stringstr=();

if(str=="")break;

doubleD=(str);

("请输入{0}点的水平角<左角为正,右角为负>=",i);

doubleβ=导线.DEG()));

("请输入{0}点到{1}点的垂直角=",i,i+1);

doubleα=导线.DEG()));差(D,α,仪器高,反光镜高,out水平距离);

水平距离平方集合.Add(水平距离*水平距离);

高差集合.Add(h);

水平距离平方和+=水平距离*水平距离;

高差和+=h;

标(0,0,β,水平距离,α0,outdx,outdy);

坐标增量X集合.Add(dx);

坐标增量Y集合.Add(dy);

坐标增量X和+=dx;;

坐标增量Y和+=dy;;

坐标增量X绝对值和+=(dx);

坐标增量Y绝对值和+=(dy);

水平距离和+=水平距离;

}while(true);

ount;j++)

{

H+=高差集合[j]+单位长度改正数*水平距离平方集合[j];

X+=坐标增量X集合[j]+X坐标单位长度改正数*(坐标增量X集合[j]);

Y+=坐标增量Y集合[j]+Y坐标单位长度改正数*(坐标增量Y集合[j]);

("第{0}点的X坐标={1},Y坐标={2},高程H={3}",j+2,X,Y,H);

}

("最后一个点的坐标和高程应该与B点的坐标和高程相同!

");

}

}

class导线

{

Main位角(MX,MY,AX,AY);

位角(BX,BY,NX,NY);

List坐标增量X集合=newList();

List坐标增量Y集合=newList();

List高差集合=newList();

List水平距离平方集合=newList();

List方位角集合=newList();

inti=1;

double坐标增量X和=0;

double坐标增量Y和=0;

double坐标增量X绝对值和=0;

double坐标增量Y绝对值和=0;

double水平距离和=0;

double高差和=0;

double水平距离平方和=0;

doubleα=α0;

do

{

("请输入{0}点到{1}点的斜距D<直接回车结束输入>=",i,i+1);

stringstr=();

if(str=="")break;

doubleD=(str);

("请输入{0}点的水平角<左角为正,右角为负>=",i);

doubleβ=导线.DEG()));

("请输入{0}点到{1}点的垂直角=",i,i+1);

double垂直角=导线.DEG()));差(D,垂直角,仪器高,反光镜高,out水平距离);

水平距离平方集合.Add(水平距离*水平距离);

高差集合.Add(h);

水平距离平方和+=水平距离*水平距离;

高差和+=h;

标(0,0,β,水平距离,α,outdx,outdy);

方位角集合.Add(α);

坐标增量X集合.Add(dx);

坐标增量Y集合.Add(dy);

坐标增量X和+=dx;;

坐标增量Y和+=dy;;

坐标增量X绝对值和+=(dx);

坐标增量Y绝对值和+=(dy);

水平距离和+=水平距离;

}while(true);

("请输入最后一个连接角<左角为正,右角为负>=");

doubleβn=导线.DEG()));

位角(方位角集合[方位角集合.Count-1],βn);

ount+1);

lear();

坐标增量Y集合.Clear();

坐标增量X和=0;

坐标增量Y和=0;

坐标增量X绝对值和=0;

坐标增量Y绝对值和=0;

for(intj=0;j<方位角集合.Count;j++)

{

方位角集合[j]+=方位角改正数*(j+1);

dd(dx);

坐标增量Y集合.Add(dy);

坐标增量X和+=dx;;

坐标增量Y和+=dy;;

坐标增量X绝对值和+=(dx);

坐标增量Y绝对值和+=(dy);

}

ount;j++)

{

H+=高差集合[j]+单位长度改正数*水平距离平方集合[j];

X+=坐标增量X集合[j]+X坐标单位长度改正数*(坐标增量X集合[j]);

Y+=坐标增量Y集合[j]+Y坐标单位长度改正数*(坐标增量Y集合[j]);

("第{0}点的X坐标={1},Y坐标={2},高程H={3}",j+2,X,Y,H);

}

("最后一个点的坐标和高程应该与B点的坐标和高程相同!

");

}

}

class导线

{

MainEG()));

("请输入B点到N点的坐标方位角=");

doubleα1=导线.DEG()));

List方位角集合=newList();

inti=1;

doubleα=α0;

do

{

("请输入{0}点的水平角[直接回车结束输入]<左角为正,右角为负>=",i);

stringstr=();

if(str=="")break;

doubleβ=导线.DEG(str));

i++;

α=导线.方位角(α,β);

方位角集合.Add(α);

}while(true);

ount-1]-α1;

double方位角改正数=-方位角闭合差/方位角集合.Count;

ount;j++)

{

方位角集合[j]+=方位角改正数*(j+1);

("{0}点到{1}点的坐标方位角={2}",j,j+2,导线.DMS(方位角集合[j]));

}

("最后一个坐标方位角应该与B点到N的坐标方位角相同!

");

}

}

class导线

{

Main位角(MX,MY,AX,AY);

位角(BX,BY,NX,NY);

List坐标增量X集合=newList();

List坐标增量Y集合=newList();

List水平距离平方集合=newList();

List方位角集合=newList();

inti=1;

double坐标增量X和=0;

double坐标增量Y和=0;

double坐标增量X绝对值和=0;

double坐标增量Y绝对值和=0;

double水平距离和=0;

double水平距离平方和=0;

doubleα=α0;

do

{

("请输入{0}点到{1}点的平距S<直接回车结束输入>=",i,i+1);

stringstr=();

if(str=="")break;

doubleS=(str);

("请输入{0}点的水平角<左角为正,右角为负>=",i);

doubleβ=导线.DEG()));

i++;

水平距离平方集合.Add(S*S);

水平距离平方和+=S*S;

标(0,0,β,S,α,outdx,outdy);

方位角集合.Add(α);

坐标增量X集合.Add(dx);

坐标增量Y集合.Add(dy);

坐标增量X和+=dx;;

坐标增量Y和+=dy;;

坐标增量X绝对值和+=(dx);

坐标增量Y绝对值和+=(dy);

}while(true);

("请输入最后一个连接角<左角为正,右角为负>=");

doubleβn=导线.DEG()));

位角(方位角集合[方位角集合.Count-1],βn);

ount+1);

lear();

坐标增量Y集合.Clear();

坐标增量X和=0;

坐标增量Y和=0;

坐标增量X绝对值和=0;

坐标增量Y绝对值和=0;

for(intj=0;j<方位角集合.Count;j++)

{

方位角集合[j]+=方位角改正数*(j+1);

dd(dx);

坐标增量Y集合.Add(dy);

坐标增量X和+=dx;;

坐标增量Y和+=dy;;

坐标增量X绝对值和+=(dx);

坐标增量Y绝对值和+=(dy);

}

ount;j++)

{

X+=坐标增量X集合[j]+X坐标单位长度改正数*(坐标增量X集合[j]);

Y+=坐标增量Y集合[j]+Y坐标单位长度改正数*(坐标增量Y集合[j]);

("第{0}点的X坐标={1},Y坐标={2}",j+2,X,Y);

}

("最后一个点的坐标应该与B点的坐标相同!

");

}

}

class导线

{

//将转为弧度

staticpublicdoubleDEG(doubleang)

{

intfuhao=(int)(ang/(ang));

ang=(ang);

intd=(int)ang;

intm=((int)(ang*100))-d*100;

doubles=ang*10000-m*100-d*10000;

return((d+m/+s/*fuhao)/*;

}

//计算方位角,返回弧度值

publicstaticdouble方位角(doublex1,doubley1,doublex2,doubley2)

{

doubledeltaX=x2-x1;

doubledeltaY=y2-y1;

doubleangle=*;

if(deltaX)>

{

angle=(deltaY,deltaX);

}

if(angle<0)

{

angle+=;

}

if(deltaY<

{

angle+=;

}

returnangle;

}

//计算坐标,返回已知点到计算点的方位角

publicstaticdouble坐标(doublex0,doubley0,double左角,double水平距离,double已知方位角,outdoublex,outdoubley)

{

double方位角=已知方位角+左角+;

//将方位角调整到0到2π之间

if(方位角>=*2)方位角-=*2;

if(方位角<方位角+=*2;

x=x0+水平距离*(方位角);

y=y0+水平距离*(方位角);

return方位角;

}

//根据后视边的方位角与左角,计算前进边的方位角

publicstaticdouble方位角(double后视边方位角,double左角)

{

double方位角=后视边方位角+左角+;

//将方位角调整到0到2π之间

if(方位角>=*2)方位角-=*2;

if(方位角<方位角+=*2;

return方位角;

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1