文档库 最新最全的文档下载
当前位置:文档库 › 大地—空间坐标转换C#

大地—空间坐标转换C#

大地—空间坐标转换C#
大地—空间坐标转换C#

using System;

using System.Collections.Generic;

using https://www.wendangku.net/doc/e85757255.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Collections ;

using System.Text.RegularExpressions;

using System.Data.Odbc;

namespace大地_空间坐标系转换

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

double B, L, H, X, Y, Z, e2, w, N, a;

a = 6378137.000000;

e2 = 0.00669438;

if (((textBox1.Text == "") || (textBox2.Text == ""))||(textBox3 .Text =="")) {

MessageBox.Show(this, "请输入大地坐标", "msg", MessageBoxButtons.OK, https://www.wendangku.net/doc/e85757255.html,rmation);

return;

}

B = Convert.ToDouble(textBox1.Text) * Math .PI /180;

L = Convert.ToDouble(textBox2.Text) * Math.PI / 180;

H = Convert.ToDouble(textBox3.Text) ;

w = Math.Sqrt(1 - e2 * Math.Pow(Math.Sin(B), 2));

N = a / w;

X = (N + H) * Math.Cos(B) * Math.Cos(L );

Y = (N + H) * Math.Cos(B) * Math.Sin(L);

Z = (N * (1 - e2) + H) * Math.Sin(B);

textBox4.Text = Convert.ToString(X );

textBox5.Text = Convert.ToString(Y );

textBox6.Text = Convert.ToString(Z );

}

private void button2_Click(object sender, EventArgs e)

{

double B, L, H, X, Y, Z, e2, w, N, a, e4, p, t, t0, tt, c;

a = 6378137.000000;

e2 = 0.00669438;

e4 = 0.0067394968;

if (((textBox4.Text == "") || (textBox5.Text == "")) || (textBox6.Text == "")) {

MessageBox.Show(this, "请输入空间直角坐标", "msg", MessageBoxButtons.OK, https://www.wendangku.net/doc/e85757255.html,rmation);

return;

}

B = 0.1;

X = Convert.ToDouble(textBox4.Text);

Y = Convert.ToDouble(textBox5.Text);

Z = Convert.ToDouble(textBox6.Text);

L = Math.Atan(Y / X) ;

if (X < 0 && Y < 0)

{ L = L - Math.PI; }

else if (X < 0 && Y > 0)

{ L = L + Math.PI; }

L = L / Math.PI * 180;

t = Math.Tan(B);

t0 = Z / Math.Sqrt(X * X + Y * Y);

c = a * Math.Sqrt(1 + e4);

p = c * e2 / Math.Sqrt(X * X + Y * Y);

do

{

tt = t;

t = t0 + p * t / Math.Sqrt(1 + e4 + t * t);

} while (-0.000000001 >= (t - tt) || (t - tt) >= 0.000000001);

B = Math.Atan(t);

w = Math.Sqrt(1 - e2 * Math.Pow(Math.Sin(B ), 2));

N = a / w;

H = (Math.Sqrt(X * X + Y * Y) / Math.Cos(B) - N) ;

B = B * 180 / Math.PI;

textBox1.Text = Convert.ToString(B );

textBox2.Text = Convert.ToString(L );

textBox3.Text = Convert.ToString(H );

}

private void button3_Click(object sender, EventArgs e)

{

string[] no = new string[100];

double[] B = new double[100];

double[] L = new double[100];

double[] H = new double[100];

double[] X = new double[100];

double[] Y = new double[100];

double[] Z = new double[100];

double a = 6378137.000000;

double e2 = 0.00669438;

double w,N;

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)

{

no[i] = this.dataGridView1.Rows[i].Cells[0].Value.ToString();

B[i] = double.Parse(this.dataGridView1.Rows[i].Cells[1].Value.ToString()) * Math.PI / 180;

L[i] = double.Parse(this.dataGridView1.Rows[i].Cells[2].Value.ToString()) * Math.PI / 180;

H[i] = double.Parse(this.dataGridView1.Rows[i].Cells[3].Value.ToString()); }

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)

{

w = Math.Sqrt(1 - e2 * Math.Pow(Math.Sin(B[i]), 2));

N = a / w;

X[i] = (N + H[i]) * Math.Cos(B[i]) * Math.Cos(L[i]);

Y[i] = (N + H[i]) * Math.Cos(B[i]) * Math.Sin(L[i]);

Z[i] = (N * (1 - e2) + H[i]) * Math.Sin(B[i]);

string[] han = new string[4];

han[0] = no[i];

han[1] = X[i].ToString("f4");

han[2] = Y[i].ToString("f4");

han[3] = Z[i].ToString("f4");

this.dataGridView2.Rows.Add(han);

}

}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

}

private void button4_Click(object sender, EventArgs e)

{

OpenFileDialog dig = new OpenFileDialog();

dig.Title = "选择需要打开的文件";

try

{

if (dig.ShowDialog() == DialogResult.OK)

{

FileStream fs = new FileStream(dig.FileName, FileMode.Open, FileAccess.Read);

FileStream fs2 = new FileStream(dig.FileName, FileMode.Open, FileAccess.Read);

StreamReader linenumber = new StreamReader(fs);

StreamReader r = new StreamReader(fs2);

int line = 0;

while (linenumber.ReadLine() != null)

{

line++;

}

linenumber.Close();

fs.Close();

int n = 0;

for (n = 0; n < line; n++)

{

for (n = 0; n < line; n++)

{

string asd1 = r.ReadLine();

string[] hang1;

hang1 = asd1.Split(new char[] { ',', ',',','});

dataGridView1.Rows.Add(hang1);

}

}

r.Close();

fs2.Close();

}

}

catch

{

MessageBox.Show(this, "读取失败!", "出错提示");

}

private void button5_Click(object sender, EventArgs e)

{

string[] no = new string[100];

double[] X = new double[100];

double[] Y = new double[100];

double[] Z = new double[100];

for (int i = 0; i < dataGridView2.Rows.Count - 1; i++)

{

no[i] = dataGridView1.Rows[i].Cells[0].Value.ToString();

X[i] = double.Parse(dataGridView1.Rows[i].Cells[1].Value.ToString()); Y[i] = double.Parse(dataGridView1.Rows[i].Cells[2].Value.ToString()); Z[i] = double.Parse(dataGridView1.Rows[i].Cells[2].Value.ToString()); }

OpenFileDialog dig = new OpenFileDialog();

if (dig.ShowDialog() == DialogResult.OK)

{

FileStream fs = new FileStream(dig.FileName, FileMode.Create, FileAccess.Write);

StreamWriter sw = new StreamWriter(fs);

sw.WriteLine("点名\t" + "X\t" + "Y\t" + "Z\t");

for (int i = 0; i <= dataGridView2.Rows.Count - 2; i++)

{

sw.WriteLine(no[i] + "," + X[i] + "," + Y[i] + "," + Z[i]);

}

sw.Close();

fs.Close();

}

}

private void button6_Click(object sender, EventArgs e)

{

this.dataGridView1.Rows.Clear();

this.dataGridView2.Rows.Clear();

}

private void button7_Click(object sender, EventArgs e)

{

OpenFileDialog dig = new OpenFileDialog();

dig.Title = "选择需要打开的文件";

try

if (dig.ShowDialog() == DialogResult.OK)

{

FileStream fs = new FileStream(dig.FileName, FileMode.Open, FileAccess.Read);

FileStream fs2 = new FileStream(dig.FileName, FileMode.Open, FileAccess.Read);

StreamReader linenumber = new StreamReader(fs);

StreamReader r = new StreamReader(fs2);

int line = 0;

while (linenumber.ReadLine() != null)

{

line++;

}

linenumber.Close();

fs.Close();

int n = 0;

for (n = 0; n < line; n++)

{

for (n = 0; n < line; n++)

{

string asd1 = r.ReadLine();

string[] hang1;

hang1 = asd1.Split(new char[] { ',', ',', ',' });

dataGridView2.Rows.Add(hang1);

}

}

r.Close();

fs2.Close();

}

}

catch

{

MessageBox.Show(this, "读取失败!", "出错提示");

}

}

private void button9_Click(object sender, EventArgs e)

{

string[] no = new string[100];

double[] B = new double[100];

double[] L = new double[100];

double[] H = new double[100];

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)

{

no[i] = dataGridView1.Rows[i].Cells[0].Value.ToString();

B[i] = double.Parse(dataGridView1.Rows[i].Cells[1].Value.ToString());

L[i] = double.Parse(dataGridView1.Rows[i].Cells[2].Value.ToString());

H[i] = double.Parse(dataGridView1.Rows[i].Cells[2].Value.ToString());

}

OpenFileDialog dig = new OpenFileDialog();

if (dig.ShowDialog() == DialogResult.OK)

{

FileStream fs = new FileStream(dig.FileName, FileMode.Create,

FileAccess.Write);

StreamWriter sw = new StreamWriter(fs);

sw.WriteLine("点名\t" + "B\t" + "L\t" + "H\t");

for (int i = 0; i <= dataGridView1.Rows.Count - 2; i++)

{

sw.WriteLine(no[i] + "," + B[i] + "," + L[i] + "," + H[i]);

}

sw.Close();

fs.Close();

}

}

private void button8_Click(object sender, EventArgs e)

{

string[] no = new string[100];

double[] B = new double[100];

double[] L = new double[100];

double[] H = new double[100];

double[] X = new double[100];

double[] Y = new double[100];

double[] Z = new double[100];

double a = 6378137.000000;

double e2 = 0.00669438;

double e4 = 0.0067394968;

double w, N, p, t, t0, tt, c;

double T = 0.1;

for (int i = 0; i < dataGridView2.Rows.Count - 1; i++)

{

no[i] = this.dataGridView2.Rows[i].Cells[0].Value.ToString();

X[i] = double.Parse(this.dataGridView2.Rows[i].Cells[1].Value.ToString()) ; Y[i] = double.Parse(this.dataGridView2.Rows[i].Cells[2].Value.ToString()) ;

Z[i] = double.Parse(this.dataGridView2.Rows[i].Cells[3].Value.ToString()) ; }

for (int i = 0; i < dataGridView2.Rows.Count - 1; i++)

{

L[i] = Math.Atan(Y[i] / X[i]);

if (X[i] < 0 && Y[i] < 0)

{ L[i] = L[i] - Math.PI; }

else if (X[i] < 0 && Y [i]> 0)

{ L[i] = L [i]+ Math.PI; }

L [i]= L [i]/ Math.PI * 180;

t = T;

t0 = Z[i] / Math.Sqrt(X[i] * X[i] + Y [i]* Y[i]);

c = a * Math.Sqrt(1 + e4);

p = c * e2 / Math.Sqrt(X[i] * X[i] + Y [i]* Y[i]);

do

{

tt = t;

t = t0 + p * t / Math.Sqrt(1 + e4 + t * t);

} while (-0.000000001 >= (t - tt) || (t - tt) >= 0.000000001);

B[i] = Math.Atan(t);

w = Math.Sqrt(1 - e2 * Math.Pow(Math.Sin(B[i]), 2));

N = a / w;

H[i] = (Math.Sqrt(X[i] * X[i] + Y[i] * Y[i]) / Math.Cos(B[i]) - N);

B [i]= B [i]* 180 / Math.PI;

}

for (int i = 0; i < dataGridView2.Rows.Count - 1; i++)

{

string[] han = new string[4];

han[0] = no[i];

han[1] = B[i].ToString("f4");

han[2] = L[i].ToString("f4");

han[3] = H[i].ToString("f4");

this.dataGridView1.Rows.Add(han);

}

}

private void button10_Click(object sender, EventArgs e)

{

System.Windows.Forms.Application.Exit();

}

}

}

坐标转换工具说明书-1208

§10.2坐标转换工具 HGO 数据处理软件包提供了坐标转换程序,可以进行地方坐标与WGS-84坐标的相互转换,同时具备参数求解功能。 下面对这个工具进行介绍: 10.2.1概述 首先,介绍一下常见的三种坐标表示方法:经纬度和椭球高(BLH),空间直角坐标(XYZ),平面坐标和水准高程(xyh/NEU)。注意:椭球高是一个几何量,而水准高是一个物理量。 我们通常说的WGS-84坐标是经纬度和椭球这一种,北京54坐标是平面坐标和水准高程这一种,实质是有平面基准和高程基准组成的。 此外,再注意一下坐标转换的严密性问题,在同一个椭球里的纯几何转换都是严密的(BLH<->XYZ),而在不同的基准之间的转换是不严密的。举个例子,在WGS-84坐标和北京54坐标之间是不存在一套转换参数可以全国通用的,因为前者是一个地心坐标系,后者是一个参心坐标系。高程转换是由几何高向物理高转换。因此在每个地方必须用椭球进行局部拟合,通常用7参数模型来拟合。 那么,两个椭球间的坐标转换应该是怎样的呢?一般而言比较严密的是用七参数法(或称布尔莎模型),即X平移,Y平移,Z平移,X旋转,Y旋转,Z旋转,尺度变化K。要求得七参数就需要在一个地区需要3个以上的已知点(7个参数至少7个方程可解,所以需要三个点列出9个方程),如果区域范围不大、最远点间的距离不大于30Km(经验值)的情况可以用三参数,即X平移,Y平移,Z平移,而将X旋转,Y旋转,Z旋转,尺度变化K视为0,所以三参数只是七参数的一种特例。 七参数模型的实质是用一个局部椭球去拟合地方坐标系的形态;所以转换后获得的地方椭球高就是水准高。当然我们也可以把平面和高程两个方向分别进行拟合。例如平面用四参数模型拟合,高程方向则用二次曲面等模型来拟合。这样分开处理的模式相对七参数模型自由度更高。但是由于四参数模型参数较少,表达能力较弱,通常只用于小区域坐标转换。 综上所述,从实用的角度出发,坐标转换程序提供了两种转换策略供给客户选择使用: 1.七参数模型,一步得到地方平面和水准数据。 2.四参数加高程拟合模型,分两步得到地方平面和水准数据。 由于各厂家的模型和流程定义可能是不一样的,这里就我们公司的转换流程描述如下:七参数的转换过程是这样的:

大地坐标系转换

从大地水准面起算的陆地高度,称为绝对高度或海拔。 大地水准面就是由静止海水面并向大陆延伸 与平均海水面相吻合的称为大地水准面 所形成的不规则的封闭曲面。它就是重力等位面,即物体沿该面运动时,重力不做功(如水在这个面上就是不会流动的)。 地心直角坐标系又称为空间直角坐标系。如图2、1所示,她以地球的地心O为坐标原点,XOY平面在赤道面上,OX正向指向格林尼治子午线与赤道的交点,OZ轴指向地球北极与地球的极轴重合。该坐标系与地球紧 密结合在一起,随着地球的旋转而旋转。 图2、1 地心直角坐标系 2、1、2 大地坐标系

从微观上来说,地球并非就是一个圆球体,而就是近似椭圆体,其极半径约为6 357km,赤道半径约为6 378km,相差约21km,地球表面凹凸不平。 为了得到高的定位精度,在定位时必须用与地球最吻合的椭球体来代替地球。这个椭球体就是指所取得椭球面与大地水准面之间高度差的平方与最小。这个椭球称为参考椭球或基准椭球。大地水准面就是指假想的无潮汐、无温差、无风、无盐的海面。基准椭球面、大地水准面与实际的地形的关系如图2、2所示。在地球任意一点G的大地水准面高度就是指该点大地水准面与基准椭球面之间的距离。G点的海拔高度就是指该点实际地形与大地水准面之间的距离。 图2、2 基准椭球面与大地水准面 地球上某点,常用大地坐标或称地理坐标表示,即用经度、纬度与高度表示。大地坐标的基准圈就是赤道。通过英国伦敦的格林尼治天文台的地球子午线称为0经度线,它与赤道的交点就是大地坐标的起算点。地球上一点的经度,就就是以格林尼治子午线与该点子午线间所截的赤道短弧所对的圆心角,常用λ表示。经度的计算就是以格林尼治子午线算起,向东与向西都就是0o~180o。向东称为东经,用E表示;向西称为西经,用W 表示。地球上一点的纬度,就是以赤道为基准,子午线在该点的法线与赤道面的交角为该点的纬度,用φ表示。纬线从赤道算起,向北向南都就是0o~90o。向赤道以北称为北纬,用N表示;向赤道以南称为南纬,用S表示。 地面上一点的高度H就是指该点的实际地形与基准椭球面之间的距离,即: H = N + h N为大地水准面高度;h为海拔高度。 2、2 坐标转换

坐标系向国家大地坐标系的转换完整版

坐标系向国家大地坐标 系的转换 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

北京54坐标系向国家2000大地坐标系的转换 摘要:2000国家坐标系统提高了测量的绝对精度,并且可以快速获取精确的三维地心坐标,能够提供高精度、地心、实用、统一的大地坐标系,自此以后的测量成果要求坐标系统采用2000国家大地坐标系,本文就北京54坐标系和2000国家大地坐标系原理和转换方法进行简单的分析。 1引言大地坐标系是地球空间框架的重要基础,是表征地球空间实体位置的三维参考基准,科学地定义和采用国家大地坐标系将会对航空航天、对地观测、导航定位、地震监测、地球物理勘探、地学研究等许多领域产生重大影响。建立大地坐标框架,是测量科技的精华,与空间导航乃至与经济、社会和军事活动均有密切关系,它是适应一定社会、经济和科技发展需要和发展水平的历史产物。过去受科技水平的限制,人们不得不使用经典大地测量技术建立局部大地坐标系,它的基本特点是非地心的、二维使用的。采用地心坐标系,即以地球质量中心为原点的坐标系统,是国际测量界的总趋势,世界上许多发达和中等发达国家和地区多年前就开始采用地心坐标系,如美国、加拿大、欧洲、墨西哥、澳大利亚、新西兰、日本、韩国等。我国也于2008年7月开始启用新的国家大地坐标系—2000国家大地坐标系。 2北京54系我国北京54坐标系是采用前苏联的克拉索夫斯基椭球参数(长轴6378245ra,短轴635686m,扁率1/298.3),并与前苏联1942年坐标系进行联测,通过计算建立了我国大地坐标系,定名为1954年北京坐标系。其坐标的原点不在北京,而是在前苏联的普尔科沃。

GPS坐标和国家大地坐标之间的转换

GPS坐标和国家大地坐标之间的转换 一、前言 WGS-84坐标系是目前GPS所采用的坐标系统,GPS所发布的星历参数就是基于此坐标系统的。WGS-84坐标系统的全称是World Geodical System-84(世界大地坐标系-84),它是一个地心地固坐标系统。WGS-84坐标系统由美国国防部制图局建立,于1987年取代了当时GPS所采用的坐标系统-WGS-72坐标系统而成为GPS的所使用的坐标系统。WGS-84坐标系的坐标原点位于地球的质心,轴指向BIH1984.0定义的协议地球极方向,轴指向BIH1984.0的启始子午面和赤道的交点。 采用椭球参数为:a=6 378 137m,f= 1/298.257 223 563。 北京54 坐标系、西安80 坐标系—属于参心坐标系, 北京54 坐标系采用克拉索夫斯基椭球参数,长轴a= 6 3 78 2 4 5 米, 扁率f=l : 2 98.3 ;西安80 大地系坐标系椭球参数采用国际大=地测量和地球物理联合19 7 5 后推荐的地球椭球参数, 长轴a= 6 3 7 8 140 米, 扁率f1 : 298.257,大地原点在我西安市径阳县永乐镇。西安80 坐标系的建立是在54 年北京坐标系的基础上完成的。 在实际的工作中,对于GPS的测量数据。我们需要将其转换成所需要的54或80坐标系,才能够使用。或是将其转换成相应的地方坐标系。在转换的过程中需要进行一系列的变换。本文将对其过程做详细的说明。 二、转换过程 (1)数据测量:在实际操作中,首先进行的是数据的观测。根据实际工作需要,采用相应的观测方法进行观测,得到合格的测量成果。本文主要是针对GPS控制网的转换来说明的。 (2)平差:在GPS控制网的测量工程中,在进行完基线测量(地面坐标和高程)后,需要对测量结果进行平差,得到相应的平差结果。下面对相应的条件平差①做具体说明: AV-W=0 [1] L#=L+V [2] 基础方程和它的解: 设有r个平差线性条件方程: [3]

ARCGIS中坐标转换

ArcGIS 坐标转换 1.坐标分析 问题:对于某地A中心点坐标为455299.845,3223622.525的CAD矩形,CAD施工图。将其转换为WGS-84坐标,如何转换? 分析:分析455299.845为6位,则为东向Y坐标,省去了带号,加上了5000000加常数,其最大为为4,说名在中央子午线的左侧(左侧为负值,加上500万后肯定小于500万,首位为4。若在中央子午线右侧,则最大位数为5);3223622.525为7位,为北向X坐标。 查看“某地A”的经度为92.5度,因为为CAD施工图,比例尺肯定大于1:5万,所以为3度带,所以此点的中央子午线为93E,带号为Beijing_54_Zone_31。 2.CAD转为shp格式并设定坐标系: ArcTool box-Convesion Tools->To Geodatabse->CAD to Geodatabase: 其中空间参考坐标系选择Beijing_1954_3_Degree_GK_CM_93E。 具体原因:选择投影坐标系-Gauss Kruger-Bei Jing54,此时3度带有两种:Beijing_1954_3_Degree_GK_CM_93E和Beijing_54_Zone_31,前者表示中央子午线为93E的3度带,后者表示北京54 31度带,二者意义一样,但选择哪种呢?因为点坐标东向为455299.845为6位,不带带号,因此选择Beijing_1954_3_Degree_GK_CM_93E(若东向坐标

为31455299.845,则选择Beijing_54_Zone_31), 3.北京54到WGS84坐标的转换 1.1加载图层: 打开ArcTool box-Data Management Tools->Project and transformation->feature->Project,加载shp图层,弹出下列窗口: 出现红色“X”号,说明原始图层坐标系没有识别出,则需要首先设定其坐标系后再转换。具体设坐标系参考“9 设置或改变Shp文件坐标系” 1.2选择输出图层地址和名称: 在Out Put Dataset or Feature处输入输出图层名:

空间大地坐标系与平面直角坐标系转换公式

§2.3.1 坐标系的分类 正如前面所提及的,所谓坐标系指的是描述空间位置的表达形式,即采用什么方法来表示空间位置。人们为了描述空间位置,采用了多种方法,从而也产生了不同的坐标系,如直角坐标系、极坐标系等。 在测量中常用的坐标系有以下几种: 一、空间直角坐标系 空间直角坐标系的坐标系原点位于参考椭球的中心,Z 轴指向参考椭球的北极,X 轴指向起始子午面与赤道的交点,Y 轴位于赤道面上且按右手系与X 轴呈90°夹角。某点在空间中的坐标可用该点在此坐标系的各个坐标轴上的投影来表示。空间直角坐标系可用图2-3来表示: 图2-3 空间直角坐标系 二、空间大地坐标系 空间大地坐标系是采用大地经、纬度和大地高来描述空间位置的。纬度是空间的点与参考椭球面的法线与赤道面的夹角;经度是空间中的点与参考椭球的自转轴所在的面与参考椭球的起始子午面的夹角;大地高是空间点沿参考椭球的法线方向到参考椭球面的距离。空间大地坐标系可用图2-4来表示:

图2-4空间大地坐标系 三、平面直角坐标系 平面直角坐标系是利用投影变换,将空间坐标空间直角坐标或空间大地坐标通过某种数学变换映射到平面上,这种变换又称为投影变换。投影变换的方法有很多,如横轴墨卡托投影、UTM 投影、兰勃特投影等。在我国采用的是高斯-克吕格投影也称为高斯投影。UTM 投影和高斯投影都是横轴墨卡托投影的特例,只是投影的个别参数不同而已。 高斯投影是一种横轴、椭圆柱面、等角投影。从几何意义上讲,是一种横轴椭圆柱正切投影。如图左侧所示,设想有一个椭圆柱面横套在椭球外面,并与某一子午线相切(此子午线称为中央子午线或轴子午线),椭球轴的中心轴CC ’通过椭球中心而与地轴垂直。 高斯投影满足以下两个条件: 1、 它是正形投影; 2、 中央子午线投影后应为x 轴,且长度保持不变。 将中央子午线东西各一定经差(一般为6度或3度)范围内的地区投影到椭圆柱面上,再将此柱面沿某一棱线展开,便构成了高斯平面直角坐标系,如下图2-5右侧所示。 图2-5 高斯投影 x 方向指北,y 方向指东。 可见,高斯投影存在长度变形,为使其在测图和用图时影响很小,应相隔一定的地区,另立中央子午线,采取分带投影的办法。我国国家测量规定采用六度带和三度带两种分带方法。六度带和三度带与中央子午线存在如下关系: 366 N L =中; n L 33=中 其中,N 、n 分别为6度带和3度带的带号。

大地坐标转换为施工坐标

****大桥关于大地坐标 转化为施工坐标的报告 ****监理公司: ****大桥为特大型桥梁,对测量精度要求高、施工难度大。在实际施工测量当中,例如承台等结构尺寸比较简单的结构,在模板的安装的时候需要不断的测量、调整,直到满足要求。在上述过程中需要用放样模式来确定设计位置,待模板调整后又要切换到测量模式检查坐标的偏差,如果没有满足要求,又需要切换到放样模式来确定设计位置。如此反复,给我们施工放样带来了不必要的时间浪费,根据特大跨径桥梁施工的特点方便大桥测量定位,我项目部拟大地坐标系转化为独立的施工坐标系。 转化方法及过程 从国家坐标系转换到施工坐标系,具体转换公式: ()()θθsin cos 11?-+?-=Y Y X X E ()()θθsin cos 11?-+?--=X X Y Y F (做了修改) 施工坐标系以桥轴线为E 轴,且以桩号增加方向为正向;以垂直于E 轴为F 轴,水平向右为正向。高程采用设计提供的85黄海高程,式中E 、F 为转换后的施工坐标系坐标;X 、Y 为国家坐标系下坐标,1X 、1Y 为施工坐标原点在国家坐标系下坐标;θ表示桥轴正向在国家坐标系下的方位角。 本桥梁起点桩号为K119+375.781,大地坐标为X: 5034.6566,Y: 5380.6574,方位角为289°2′58″=289.289.0494444° 具体转化过程如下: 以DQ06为例 DQ06大地坐标为X: 5157.7791,Y: 4351.265。 ()()θθsin cos 11?-+?--=X X Y Y F ()()0494444 .289sin 5034.65665157.77910494444.289cos 5380.65744351.265?--?-= 2052.1013=(做了修改)

大地坐标转换成施工坐标公式

大地(高斯平面)坐标系工程坐标系转换大地坐标系--->工程坐标系 ======================== 待转换点为P,大地坐标为:Xp、Yp 工程坐标系原点o: 大地坐标:Xo、Yo 工程坐标:xo、yo 工程坐标系x轴之大地方位角:a dX=Xp-Xo dY=Yp-Yo P点转换后之工程坐标为xp、yp: xp=dX*COS(a)+dY*SIN(a)+xo yp=-dX*SIN(a)+dY*COS(a)+yo 工程坐标系--->大地坐标系 ======================== 待转换点为P,工程坐标为:xp、yp 工程坐标系原点o: 大地坐标:Xo、Yo 工程坐标:xo、yo 工程坐标系x轴之大地方位角:a dx=xp-xo dy=yp-yo P点转换后之工程坐标为xp、yp: xp=Xo+dx*COS(a)-dy*SIN(a)

yp=Yo+dx*SIN(a)+dy*COS(a) 坐标方位角计算程序 置镜点坐标:ZX ZY 后视点坐标:HX HY 方位角:W 两点间距离: S Lb1 0← {A, B, C, D}← A〝ZX=〞:B〝ZY=〞:C〝HX=〞:D 〝HY=〞:W=tg1((D-B)÷(C-A)):(D-B)>0=>(C-A)>0=>W=W:∟∟(D-B)>0=>(C-A)<0=>W=W+180:∟∟(D-B)<0=>(C-A)<0=>W=W+180:∟∟(D-B)<0=>(C-A)>0=>W=360+W∟∟W=W◢ S=√((D-B)2+(C-A)2) ◢ Goto 0← CASIO fx-4500p坐标计算程序 根据坐标计算方位角 W=W+360△W:“ALF(1~2)=”L1 A“X1=”:B“Y1=”:Pol(C“X2”-A,D“Y2”-B:“S=”▲W<0 直线段坐标计算 L1 X“X(0)”:Y“Y(0)”:S“S(0)”:A“ALF” L2 Lb1 2 L3 {L}:L“LX”

高斯平面直角坐标系与大地坐标系相互转化

高斯平面直角坐标系与大地坐标系相互转化 高斯平面直角坐标系与大地坐标系转换 1. 高斯投影坐标正算公式(1) 高斯投影正算:已知椭球面上某点的大地坐标(L,B),求该点在高斯投影平面上的直角坐标(x,y),即(L,B)->(x,y)的坐标变换。(2) 投影变换必须满足的条件中央子午线投影后为直线; 中央子午线投影后长度不变; 投影具有正形性质,即正形投影条件。(3) 投影过程在椭球面上有对称于中央子午线的两点P 1 和P 2 ,它们的大地坐标分别为(L,B)及(l,B),式中l 为椭球面上P 点的经度与中央子午线(L 0 )的经度差:l=L-L 0 ,P 点在中央子午线之东,l 为正,在西则为负,则投影后的平面坐标一定为P 1 ’(x,y)和P 2 ’(x,-y)。(4) 计算公式 4 ' ' 2 2 3 4 ' ' 2 ' ' 2 ' ' ) 9 5 ( cos sin 2 sin 2 l t B B N Bl N X x 5 ' ' 4 2 5 5 ' ' 3 ' ' 2 2 3 ' ' ' ' ' ' ) 18 5 ( cos 120 ) 1 ( 6 cos l t t B N l t B N Bl N y 当要求转换精度精确至0.001m时,用下式计算: 6 ' ' 4 2 5 6 ' ' 4 ' ' 4 2 2 3 4 ' ' 2 ' ' 2 ' ' ) 58 61 ( cos sin 720 ) 4 9 5 ( cos sin 24 sin 2 l t t B B N l t B B N Bl N X x 5 ' ' 2 2 2 4 2 5 5 ' ' 3 ' ' 2 2 3 3 ' ' ' ' ' ' ) 58 14 18 5 ( cos 720 ) 1

北京54坐标系转换工具

北京54坐标系转换工具 利用ARCGIS进行自定义坐标系和投影转换 ARCGIS种通过三参数和其参数进行精确投影转换 注意:投影转换成54坐标系需要下载无偏移卫星图像进行转换,有偏移的转换将导致转换后的卫星图像扭曲,坐标错误,无法配准。 第一步:选择无偏移地图源,下载你所需要的卫星图像。 第二步:选择BIGEMAP软件右边工具栏,选择【投影转换】,如下图所示: 2.1 选择说明: 1. 源文件:选择下载好的卫星图像文件(下载目录中后缀为tiff的文件) 2. 源坐标系:打开的源文件的投影坐标系(自动读取,不需要手动填写) 3. 输出文件:选择转换后你要保持文件的文件路径和文件名 4. 目标坐标系:选择你要转换成的目标坐标系,如下图:

选择上图的更多,如下图所示: 1:选择 -Beijing 1954 2:选择地区3:选择分度带对应的带号(一般默认,也可以手动修改)

选择对应的分度带或者中央子午线(请参看:如何选择分度带?),点击【确定】 5. 重采样算法:投影转换需要将影像的像素重新排列,一次每种算法的效率不一样,一般选择【立方卷积采样】,以达到最好的效果。如下图: 6. 指定变换参数:在不知道的情况下,可以不用填此处信息,如果√上,则如下图:

此参数为【三参数】或者【七参数】,均为国家保密参数,需要到当地的测绘部门或者国土部门,以单位名义签保密协议进行购买,此参数各地都不一样,是严格保密的,请不要随便流通。 第三步:点击【确定】,开始转换,如下图:

第四步:完成后,打开你刚才选择的输出文件夹,里面就是转换后的卫星图像。 第五步:如果你需要套合你手里已经有的矢量文件,请参看:【BIGEMAP无偏移影像叠加配准】

大地坐标与空间坐标的互相转换··

大地坐标向空间坐标转换和空间坐标向大地坐标转换的c程 序 #include #include void main() { float a=6378137.000,b=6356752.3142,E=0.006694379990,pi=3.14159265; float B,L,N,H,X,Y,Z; float K,t0,t1,t2,P; int i; float B1,B2,B3,L1,L2,L3; printf("如果向进行大地坐标向空间坐标转换请输入1,进行空间坐标向大地坐标转换请输入0"); scanf("%d",&i); if(i) { printf("请输入经度:B1,B2,B3"); scanf("%f%f%f",&B1,&B2,&B3); B=(B1+B2/60+B3/3600)*pi/180; printf("请输入纬度:L1,L2,L3"); scanf("%f%f%f",&L1,&L2,&L3); L=(L1+L2/60+L3/3600)*pi/180; printf("请输入大地高:H"); scanf("%f",&H); N=a/sqrt(1-E*sin(B)*sin(B)); X=(N+H)*cos(B)*cos(L); Y=(N+H)*cos(B)*sin(L); Z=(N*(1-E)+H)*sin(B); printf("X=%f\n",X); printf("Y=%f\n",Y); printf("Z=%f\n",Z); } else {printf("请输入空间坐标:X,Y,Z"); scanf("%f%f%f",&X,&Y,&Z);

不同坐标系之间的变换

不同坐标系之间的变换 SANY GROUP system office room 【SANYUA16H-

§10.6不同坐标系之间的变换 10.6.1欧勒角与旋转矩阵 对于二维直角坐标,如图所示,有: ?? ? ?????????-=??????1122cos sin sin cos y x y x θθθθ(10-8) 在三维空间直角坐标系中,具有相同原点的两坐标系间的变换一般需要在三个坐标平面上,通过三次旋转才能完成。如图所示,设旋转次序为: ①绕1OZ 旋转Z ε角,11,OY OX 旋 转至0 0,OY OX ; ②绕0 OY 旋转Y ε角 10 ,OZ OX 旋转至0 2 ,OZ OX ; ③绕2OX 旋转X ε角, 0,OZ OY 旋转至22,OZ OY 。 Z Y X εεε,,为三维空间直角坐标变换的三个旋转角,也称欧勒角,与 它相对应的旋转矩阵分别为: ???? ? ?????-=X X X X X R εεεεεcos sin 0sin cos 00 01 )(1 (10-10)

????? ?????-=Y Y Y Y Y R εεεεεcos 0sin 010sin 0cos )(2 (10-11) ???? ? ?????-=10 0cos sin 0sin cos )(3Z Z Z Z Z R εεεεε (10-12) 令 )()()(3210Z Y X R R R R εεε= (10- 13) 则有: ???? ? ?????=??????????=??????????1110111321222)()()(Z Y X R Z Y X R R R Z Y X Z Y X εεε (10-14) 代入: ???? ??? ??? +-+++--=Y X Z Y X Z X Z Y X Z X Y X Z Y X Z X Z Y X Z X Y Z Y Z Y R εεεεεεεεεεεεεεεεεεεεεεεεεεεεεcos cos sin sin cos cos sin cos sin cos sin sin cos sin sin sin sin cos cos cos sin sin sin cos sin sin cos cos cos 0一般Z Y X εεε,,为微小转角,可取: sin sin sin sin sin sin sin ,sin ,sin 1cos cos cos =========Z Y Z X Y X Z Z Y Y X X Z Y X εεεεεεεεεεεεεεε 于是可化简

坐标转换器使用说明

大地坐标(BLH) 平面直角坐标(XYZ) 四参数:X 平移、Y 平移、旋转角和比例 七参数:X平移,Y平移,Z 平移,X 轴旋转,Y 轴旋转,Z 轴旋转,缩放比例(尺度比) GPS控制网是由相对定位所求的的基线向量而构成的空间基线基线向量网,在GPS控制网的平差中,是以基线向量及协方差为基本观测量。 图3-1表示为HDS2003数据处理软件进行网平差的基本步骤,从图中可以看到,网平差实际上可以分为三个过程: l、前期的准备工作,这部分是用户进行的。即在网平差之前,需要进行坐标系的设置、并输入已知点的经纬度、平面坐标、高程等。 2、网平差的实际进行,这部分是软件自动完成的; 3、对处理结果的质量分析与控制,这部分也是需要用户分析处理的过程。 图3-1 平差过程 坐标系选择 针对不同的平差,要相应选择不同的坐标系,是否输入相应信息。在笔者接触过的项目中,平差时先通过三维无约束平差后,再进行二维约束平差。由于先进行的时三维无约束平差,是在WGS84坐标系统下进行的。 首先更改项目的坐标系统。在菜单“项目”->“坐标系统”或在工具栏“坐标系统”,则弹出“坐标

系统”对话框,选择WGS-84坐标。 图3-2 坐标系统 这里注意的是,在“投影”下见图,中央子午线是114°。很多情况下这里需要进行修改。 图3-3 WGS84投影 软件中自带的“中国-WGS 84”是允许修改的,我们换种方法:就是新建一个坐标文件,其他参数都和“中国-WGS84”一致,仅仅将中央子午线修改下。 在上图中,点击“新建”,得到“COORD GM”对话框,在“文件”->“新建”,如图

图3-4 新建坐标系统 然后在“设置”->“地图投影”,直接修改中央子午线,这里以81°为例,点击确定后,返回“COORD GM”对话框。 图3-5 投影设置 将输入源坐标和输入目标坐标的椭球,均改为WGS84。在“文件”->“保存”,输入名称和国家(中国),退出操作。

大地坐标和经纬度之间的换算完整版

大地坐标和经纬度之间 的换算 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

大地坐标和经纬度之间的换算 地质工作中常要对进行大地坐标转经纬度和经纬度换大地坐标,我写一下一般的过程,希望对大家有点帮助. 大地座标-----→经纬度(地理坐标) 1,输入大地坐标数据,格式为 Y空格X,输入到文本就行 如下,原始的大地坐标由一8位的Y和一个7位的X组成, 这组坐标数据中的Y的前两位为31,是分带号,一般使用的分带有三分带,六分带,这里的坐标是三分带的,记下Y前的这两位数,在原始数据中去除掉,现在数据变为,Y,6位,X,7位 保存这个TXT的文本文件。 2,打开MAPGIS,启动坐标投影变形程序 接下来选择投影转换>>>>用户文件投影转换 点打开文件,打开刚才的大地坐标的文本文件, 设置输入数据的格式,点击用户投影参数,并完成设置。 这里我们的大地座标为3度带的第31带,注意填好,坐标单位为米 好了以为设置输出的格式,我们要求输出的是经纬度,点结果转换参数,完成以下设置 我们输出的经纬度的单位应该是DDDMMMSS。SS注意 点写到文件,保存就大功告成了,注意保存的文件要写上.TXT的后缀 下面是计算出的结果文件 XP为经度,1234234。357就是123度42分34。357秒, YP为纬度,403950。225就是40度39分50。255秒(纬度没有最多90,所以没有三位数) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 经纬度——→大地座标 输入文件格式如下, 这里面的数据前面的为经度,格式为DDDMMSS,后面的为纬度,格式为DDMMSS 接下来的转换过程和大地坐标转换一样,只要将刚才的用户转换参数和结果转换参数交换即可, 要注意分带号的确定,如果你不知道分带号,就应该先计算分带号,算法是 经度/3得到的整数为三度带的分带号 经度/6得到的整数为六度带的分带号 其中的XP为地图上的Y坐标,记得在前面加上带号,其中的YP为地图上的X坐标

CORS坐标转换软件使用说明

坐标转换软件使用说明  1、功能介绍  在南京进行测量的同行一直受到坐标系统和已知控制点的困扰, 所以往往许多测量成果因坐标系统问题得不到承认,浪费了大量的人 力物力。基于此:本公司集全部精干技术力量,研发本款坐标转换软 件,可以说:它是全体测量工作者的福音。  南京CORS因为其免费,应用十分广泛,但是使用南京CORS在 很多情况下,因为已知控制点原因无法实地取得平面坐标而限制了 CORS优势的发挥。本软件可以实现基于南京CORS测量的WGS84 坐标与92南京地方坐标双向自由转换,转换精度与权威部门转换成 果比较(在南京市6800平方公里范围内,包括高淳、溧水、六合、 浦口):平面残差中误差优于±5mm、高程残差中误差均优于±1cm。精度完全具有保障,免去到处寻找控制点带来的人力、财力和时间浪费。按照最新城市规范规定,这种模式可以实现城市E级GPS控制 点的平面测量。  本软件是一款后处理软件,即:内业处理软件,它不能在实地计 算坐标,通过事后(采集)或事前(放样)数据处理,同样可以让你 在野外无忧无障碍开展工作。  适用平台:Windows 32位所有系统平台。  2、外业采集数据转换操作介绍  外业测量数据从RTK手簿中以WGS84坐标格式导出,导出以后 将文件复制到计算机,假设文件名为0513.dat。在电脑中启动软件,

界面如下:  图一:程序启动界面  首先选择转换方向下拉列表框,此时选择“WGS84—>NJ92”,表示将WGS84坐标转向92南京地方坐标,此时软件会出现一个按钮 键读入数据并转换,点击该按钮,在弹出的文件对话框中选择从手簿 导出的外业坐标文件。如:0513.dat,点击打开按钮即可完成转换。如图二:  图二:选择原始数据文件  记得一定要选择你的原始数据文件格式在点击打开按钮。转换完 成以后又会在对话框中再出现一个按钮导出转换成果,点击它即可将

常用坐标系之间的关系与转换

7.5 常用坐标系之间的关系与转换 一、大地坐标系和空间大地直角坐标系及其关系 大地坐标系用大地纬度企丈地经度L 和丈地髙H 来表示点的位置°这种坐标系是经 典大地 测量甬:両用座标紊7屜据地图投影的理论,大地坐标系可以通过一定的投影转 化为投影平面上的直角坐标系,为地形测图和工程测量提供控制基础。同时,这种坐标系 还是研究地球形状和大小的 种有用坐标系°所以大地坐标系在大地测量中始终有着重要 的作用. 空间大地直角坐标系是-种以地球质心为原点购亘墮?坐标系,一般用X 、化Z 表 示点 BSSTSTT 逐碇SS 範菇飞両H 绕禎扭转冻其轨道平面随时通过 地球质心。对它们的跟踪观测也以地球质心为坐标原点,所以空间大地直角坐标系是卫星 大地测量中一种常用的基本坐标系。现今,利用卫星大地测量的手段*可以迅速地测定点 的空间大地直角坐拯,广泛应用于导航定位等空间技术。同时经过数学变换,还可求岀点 的大地坐标I 用以加强和扩展地面大地网,进行岛屿和洲际联测,使传统的大地测量方法 发生了深刻的变化,所以空间大地宜角坐标系对现今大地测量的发展’具有重要的意义。 、大地坐标系和空间大地直角坐标系的转换 如图7- 23所示’尸点的位置用空间 大地 直角坐标〔X, Y, Z)表示,其相应 的大地坐 标为(E, L)a 将该图与图?一5 上式表明了 2种基本坐标系之间的关系。 加以比较可见,图7-5中的子午椭圆平面 相 当于图7-23中的OJVP 平面.其中 PPz=Z.相 当于图7-5中的j7;OP 3相当 丫于图7-5中的 仏两平面的经度乙可视为 相同,等于"叽 于是可以直接写岀 X=jrcQsi f Y=jrsinL, Z=y 将式(7-21).式(7-20)分别代入上式, 井考虑 式(7-26)得 X=Ncos^cosZr ” Y =NcQsBsinL > (7—78) Z=N (1—护〉sin^ ; BB 7-23

大地坐标转换为施工坐标

****大桥关于大地坐标 转化为施工坐标的报告 ****监理公司: ****大桥为特大型桥梁,对测量精度要求高、施工难度大。在实际施工测量当中,例如承台等结构尺寸比较简单的结构,在模板的安装的时候需要不断的测量、调整,直到满足要求。在上述过程中需要用放样模式来确定设计位置,待模板调整后又要切换到测量模式检查坐标的偏差,如果没有满足要求,又需要切换到放样模式来确定设计位置。如此反复,给我们施工放样带来了不必要的时间浪费,根据特大跨径桥梁施工的特点方便大桥测量定位,我项目部拟大地坐标系转化为独立的施工坐标系。 转化方法及过程 从国家坐标系转换到施工坐标系,具体转换公式: ()()θθsin cos 11?-+?-=Y Y X X E ()()θθsin cos 11?-+?--=X X Y Y F (做了修改) 施工坐标系以桥轴线为E 轴,且以桩号增加方向为正向;以垂直于E 轴为F 轴,水平向右为正向。高程采用设计提供的85黄海高程,式中E 、F 为转换后的施工坐标系坐标;X 、Y 为国家坐标系下坐标, 1X 、1Y 为施工坐标原点在国家坐标系下坐标;θ表示桥轴正向在国家 坐标系下的方位角。 本桥梁起点桩号为K119+375.781,大地坐标为X: 5034.6566,Y: 5380.6574,方位角为289°2′58″=289.289.0494444°

具体转化过程如下: 以DQ06为例 DQ06大地坐标为X: 5157.7791,Y: 4351.265。 ()()θθsin cos 11?-+?--=X X Y Y F ()()0494444 .289sin 5034.65665157.77910494444.289cos 5380.65744351.265?--?-= 2052.1013=(做了修改) ()()θθsin cos 11?-+?-=Y Y X X E ()()0494444 .289sin 5380.65744351.2650494444.289cos 5034.65665157.7791?-+?-= 1972.219-= 见下图: (0,0) 由上可知,DQ06的施工坐标为(X:1013.205,Y:-219.197)。 用以上公式同样可以求出控制点施工坐标,列表如下:

大地坐标与大地空间坐标转换工具

#include "stdafx.h" #include #include #include "resource.h" #include "MainDlg.h" #include #include BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); } return FALSE; } BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { return TRUE; } void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { double a=0; double e2=0; switch(id) { case IDC_B1: { a=6378245.0000; e2=0.00669342162297; if(a==0) { MessageBox(hwnd,TEXT("请选择坐标系"),TEXT("警告"),MB_OK); } else{

空间直角坐标系与空间大地坐标系的相互转换及其C++源程序

空间直角坐标系与空间大地坐标系的相互转换 1.空间直角坐标系/笛卡尔坐标系 坐标轴相互正交的坐标系被称作笛卡尔坐标系。三维笛卡尔坐标系也被称为空间直角坐标系。在空间直角坐标系下,点的坐标可以用该点所对应的矢径在三个坐标轴上的投影长度来表示,只有确定了原地、三个坐标轴的指向和尺度,就定义了一个在三维空间描述点的位置的空间直角坐标系。 以椭球体中心O为原点,起始子午面与赤道面交线为X轴,在赤道面上与X轴正交的方向为Y轴,椭球体的旋转轴为Z轴构成右手坐标系O.XYZ,在该坐标系中,P点的位置用X,Y,Z表示。 在测量应用中,常将地球空间直角坐标系的坐标原点选在地球质心(地心坐标系)或参考椭球中心(参心坐标系),z轴指向地球北极,x轴指向起始子午面与地球赤道的交点,y轴垂直于XOZ面并构成右手坐标系。 空间直角坐标系 2.空间大地坐标系 由于空间直角坐标无法明确反映出点与地球之间的空间关系,为了解决这一问题,在测量中引入了大地基准,并据此定义了大地坐标系。大地基准指的是用于定义地球参考椭球的一系列参数,包括如下常量: 2.1椭球的大小和形状

2.2椭球的短半轴的指向:通常与地球的平自转轴平息。 2.3椭球中心的位置:根据需要确定。若为地心椭球,则其中心位于地球质心。 2.4本初子午线:通过固定平极和经度原点的天文子午线,通常为格林尼治子午线。 以大地基准为基础建立的坐标系被称为大地坐标系。由于大地基准又以参考椭球为基准,因此,大地坐标系又被称为椭球坐标系。大地坐标系是参心坐标系,其坐标原点位于参考椭球中心,以参考椭球面为基准面,用大地经度L、纬度B 和大地高H表示地面点位置。过地面点P的子午面与起始子午面间的夹角叫P 点的大地经度。由起始子午面起算,向东为正,叫东经(0°~180°),向西为负,叫西经(0°~-180°)。过P点的椭球法线与赤道面的夹角叫P点的大地纬度。由赤道面起算,向北为正,叫北纬(0°~90°),向南为负,叫南纬(0°~-90°)。从地面点P沿椭球法线到椭球面的距离叫大地高。大地坐标坐标系中,P点的位置用L,B表示。如果点不在椭球面上,表示点的位置除L,B外,还要附加另一参数——大地高H。 空间大地坐标系 3.空间直角坐标与大地坐标间的转换 3.1大地坐标转换为空间直角坐标

空间直角坐标系与大地坐标系转换程序

空间直角坐标系与大地坐标系转换程序 #include #include #include using namespace std; #define PI (2.0*asin(1.0)) void main() { double a,b,c,d1,d2,f1,f2,m1,m2,B,L,H,X,Y,Z,W,N,e; //cout<<"请分别输入椭球的长半轴、短半轴(国际单位)"<>a>>b; a=6378137; //以WGS84为例 b=6356752.3142; e=sqrt(a*a-b*b)/a; c=a*a/b; int x; cout<<"请输入0或1,0:大地坐标系到空间直角坐标系;1:空间直角坐标系到大地坐标系"<>x; switch(x) { case 0: { cout<<"请分别输入该点大地纬度、经度、大地高(国际单位,纬度经度请按度分秒,分别输入)"<>d1>>f1>>m1>>d2>>f2>>m2>>H; B=PI*(d1+f1/60+m1/3600)/180; L=PI*(d2+f2/60+m2/3600)/180; W=sqrt(1-e*e*sin(B)*sin(B)); N=a/W; X=(N+H)*cos(B)*cos(L); Y=(N+H)*cos(B)*sin(L); Z=(N*(1-e*e)+H)*sin(B); cout<<"空间直角坐标系中X,Y,Z,坐标值(国际单位)分别为"<>X>>Y>>Z; double t,m,n, P,k,B0; m=Z/sqrt(X*X+Y*Y); //t0 B0=atan(m); //初值 n=Z/sqrt(X*X+Y*Y);

大地坐标与直角空间坐标转换计算公式

大地坐标与直角空间坐标转换计算公式 一、参心大地坐标与参心空间直角坐标转换 1名词解释: A :参心空间直角坐标系:a)以参心0为坐标原点; b)Z 轴与参考椭球的短轴(旋转轴)相重合;c)X 轴与起始子午面和赤道的交线重合; d)Y 轴在赤道面上与X 轴垂直.构成右手直角坐标系0-XYZ ;e) 地面点P 的点位用(X.Y.Z )表示; B :参心大地坐标系:a)以参考椭球的中心为坐标原点.椭球的短轴与参考椭球旋转轴重合;b)大地纬度B :以过地面点的椭球法线与椭球赤道面的夹角为大地纬度B ;c)大地经度L :以过地面点的椭球子午面与起始子午面之间的夹角为大地经度L ;d)大地高H :地面点沿椭球法线至椭球面的距离为大地高H ;e) 地面点的点位用(B.L.H )表示。 2 参心大地坐标转换为参心空间直角坐标: ?? ? ?? +-=+=+=B H e N Z L B H N Y L B H N X sin *])1(*[sin *cos *)(cos *cos *)(2公式中.N 为椭球面卯酉圈的曲率半径.e 为椭球的第一偏心率.a 、b 椭球的长短半径.f 椭球扁率.W 为第一辅助系数 或 a b a e 2 2-= f f e 1 *2-=W a N B W e = -=22 sin *1(西安80椭球参数: 长半轴a=6378140±5(m )

短半轴b=6356755.2882m 扁 率α=1/298.257 3 参心空间直角坐标转换参心大地坐标 [ ] N B Y X H H e N Y X H N Z B X Y L -+= +-++==cos ) )1(**)() (*arctan(arctan(2 22 2 2 二 高斯投影及高斯直角坐标系 1、高斯投影概述 高斯-克吕格投影的条件:1. 是正形投影;2. 中央子午线不变形 高斯投影的性质:1. 投影后角度不变;2. 长度比与点位有关.与方向无关; 3. 离中央子午线越远变形越大 为控制投影后的长度变形.采用分带投影的方法。常用3度带或6度带分带.城市或工程控制网坐标可采用不按3度带中央子午线的任意带。 2、高斯投影正算公式: 52224253 2236 425442232)5814185(cos 120 )1(cos 6 cos )5861(cos sin 720 495(cos sin 24cos sin 2l t t t B N l t B N Bl N y l t t B B N l t B B N Bl B N X x ηηηηη-++-++-+=+-+++-++ =)3、高斯投影反算公式:

相关文档
相关文档 最新文档