测绘类C#程序代码.docx
《测绘类C#程序代码.docx》由会员分享,可在线阅读,更多相关《测绘类C#程序代码.docx(49页珍藏版)》请在冰豆网上搜索。
测绘类C#程序代码
常用测量程序设计代码
(1)用全站仪在A点观测了B点斜边与垂直角,求A到B得高差。
(提示:
D--斜边,-—垂直角,-—仪器高,——反光镜高,——大气折光系数)
usingSystem;
using System、Collections、Generic;
usingSystem、Text;
namespace ConsoleApplication1
{
classApplication
{
staticvoidMain(string[]args)
{
Console、Write(”请输入斜边=”);
doubleD =double、Parse(Console、ReadLine());
Console、Write(”请输入垂直角[ddd、mmss]=");
doublea =DEG(double、Parse(Console、ReadLine()));
Console、Write(”请输入仪器高=”);
doublei=double、Parse(Console、ReadLine());
Console、Write(”请输入反光镜高=");
doublev=double、Parse(Console、ReadLine());
double h=D *Math、Sin(a)+(1-0、13)*D/6371000、0*D/6371000、0*Math、Cos(a)* Math、Cos(a)/ 2、0+i—v;
Console、WriteLine(”高差为{0}",h);
}
//将ddd、mmss转为弧度
staticpublicdoubleDEG(doubleang)
{
intfuhao=(int)(ang/Math、Abs(ang));
ang=Math、Abs(ang);
int d=(int)ang;
intm= ((int)(ang * 100))- d*100;
double s=ang*10000-m *100— d* 10000;
return((d+m /60、0+s/3600、0) * fuhao)/180、0 *Math、PI;
}
}
}
(2)如图所示,已知A点得坐标及A点到B点得边长及方位角,计算B点得坐标.
using System;
using System、Collections、Generic;
using System、Text;
namespace ConsoleApplication1
{
classApplication
{
staticvoid Main(string[]args)
{
Console、Write("请输入A点得X坐标=");
doubleXA=double、Parse(Console、ReadLine());
Console、Write("请输入A点得Y坐标=");
doubleYA =double、Parse(Console、ReadLine());
Console、Write("请输入A到B得方位角[ddd、mmss]=");
doublea=DEG(double、Parse(Console、ReadLine()));
Console、Write(”请输入A到B得水平距离=");
doubleS=double、Parse(Console、ReadLine());
doubleXB =XA+S*Math、Cos(a);
doubleYB=YA + S*Math、Sin(a);
Console、WriteLine("B点得坐标({0},{1})",XB,YB);
}
//将ddd、mmss转为弧度
staticpublicdoubleDEG(doubleang)
{
int fuhao= (int)(ang/Math、Abs(ang));
ang= Math、Abs(ang);
intd=(int)ang;
intm=((int)(ang* 100))-d*100;
doubles = ang* 10000- m*100— d* 10000;
return((d+m /60、0+s/3600、0)*fuhao)/180、0 *Math、PI;
}
}
}
(3)如图所示,已知A点与B点得坐标,计算A点到得边长及方位角。
using System;
using System、Collections、Generic;
using System、Text;
namespace ConsoleApplication1
{
class Application
{
staticvoid Main(string[]args)
{
Console、Write("请输入A点得X坐标=”);
doubleXA=double、Parse(Console、ReadLine());
Console、Write(”请输入A点得Y坐标=");
doubleYA=double、Parse(Console、ReadLine());
Console、Write(”请输入B点得X坐标=");
doubleXB=double、Parse(Console、ReadLine());
Console、Write("请输入B点得Y坐标=");
doubleYB =double、Parse(Console、ReadLine());
double S =距离(XA,YA,XB,YB);
doublea=方位角(XA, YA,XB, YB);
Console、WriteLine(”AB间得距离={0},从A到B得方位角={1}",S,DMS(a));
}
//将弧度转为ddd、mmss
staticpublicdoubleDMS(doubleang)
{
ang+=1、0E-15;//加上一个小量,以保证进位
intfuhao =(int)(ang /Math、Abs(ang));
ang =Math、Abs(ang)*180、0/ Math、PI;
intd=(int)ang;
ang=(ang-d)*60、0;
intm= (int)ang;
doubles=(ang-m)* 60、0;
return(d +m/ 100、0+s/10000、0)* fuhao;
}
//计算方位角,返回弧度值
publicstatic double 方位角(doublex1,doubley1,doublex2,doubley2)
{
doubledeltaX= x2-x1;
double deltaY=y2—y1;
doubleangle=Math、PI *0、5;
if(Math、Abs(deltaX)> 0、000000001)
{
angle =Math、Atan2(deltaY,deltaX);
}
if (angle〈0)
{
angle+=Math、PI;
}
if(deltaY〈 0、0)
{
angle+= Math、PI;
}
return angle;
}
//计算距离
publicstatic double距离(doublex1,doubley1,doublex2,doubley2)
{
returnMath、Sqrt((x2—x1) *(x2 —x1)+(y2-y1)*(y2-y1));
}
}
}
(4)在如图所示得支中导线,已知A点到M点得坐标方位角及每个左角,求每条边得坐标方位角。
usingSystem;
usingSystem、Collections、Generic;
usingSystem、Text;
namespace ConsoleApplication1
{
classApplication
{
staticvoidMain(string[] args)
{
Console、Write(”请输入A点到M点得坐标方位角=”);
//将A点到M点得坐标方位角换算为M点到A点得坐标方位角,以便利用公式
double a0=DEG(double、Parse(Console、ReadLine())+180、0);
if(a0 〉 2*Math、PI)
{
a0—=2 *Math、PI;
}
List<double> 导线转角集合 = newList<double〉();
inti= 1;
do
{
Console、Write("请输入第{0}个转角得水平角[左角为正,右角为负]〈直接回车结束输入>=",i++);
stringstr=Console、ReadLine();
if(str!
= "")
{
导线转角集合、Add(DEG(double、Parse(str)));
}
else
{
break;
}
}while (true);
i =1;
foreach(doublea in导线转角集合)
{
a0+=a+ Math、PI;
if(a0> 2 *Math、PI)
{
a0-=2*Math、PI;
}
else if(a0<0、0)
{
a0+=2*Math、PI;
}
Console、WriteLine("第