Перевод координат в Delphi 7.0

Основной форум пользователей GPS (Global Positioning System)
Правила форума
Для предотврашения спама первые сообщения вновь зарегистрированных пользователей проходят ручную премодерацию.
Ответить
Parashutist
Сообщения: 1
Зарегистрирован: 15 апр 2012, 15:13

Перевод координат в Delphi 7.0

Сообщение Parashutist » 15 апр 2012, 15:17

Здравствуйте, подскажите пожалуйста, какие формулы использованы в следующем приложении, написанном на Delphi по переводу географических координат в прямоугольные проекции Гаусса-Крюгера:

procedure TForm1.Button1Click(Sender: TObject);
Var
B,L,X,Y,a0,a3,a4,a5,a6,l1,N,a,e2,L0,s1,s2:real;
grad,n1,g1,g2,m1,m2:integer;

Function Rd(gr,min:integer;sec:real):real;
begin
Rd:=(gr+(min/60)+(sec/3600))*Pi/180;
end;

Function nz(grad:integer):integer;
Var del:real;
begin
If grad=0 then nz:=1 else
begin
del:=grad/6;
If round(del)>= del then
nz:=round(del) else
nz:=round(del)+1;
end;
end;

begin
g1:= StrToInt(Edit1.Text);
g2:= StrToInt(Edit4.Text);
m1:= StrToInt(Edit2.Text);
m2:= StrToInt(Edit5.Text);
s1:= StrToFloat(Edit3.Text);
s2:= StrToFloat(Edit6.Text);
If g1<0 then Label19.Caption:='Неправильный формат координат' else
if g1>90 then Label19.Caption:='Неправильный формат координат' else
if g2<0 then Label19.Caption:='Неправильный формат координат' else
if g2>360 then Label19.Caption:='Неправильный формат координат' else
if m1<0 then Label19.Caption:='Неправильный формат координат' else
if m1>60 then Label19.Caption:='Неправильный формат координат' else
if m2<0 then Label19.Caption:='Неправильный формат координат' else
if m2>60 then Label19.Caption:='Неправильный формат координат' else
if s1<0 then Label19.Caption:='Неправильный формат координат' else
if s1>60 then Label19.Caption:='Неправильный формат координат' else
if s2<0 then Label19.Caption:='Неправильный формат координат' else
if s2>60 then Label19.Caption:='Неправильный формат координат' else
begin
Label19.Caption:='';
grad:=StrToInt(Edit4.Text);
n1:=nz(grad);
L0:=Rd((6*n1)-3,0,0);
B:=Rd(StrToInt(Edit1.text),StrToInt(Edit2.text),StrToFloat(Edit3.text));
L:=Rd(StrToInt(Edit4.text),StrToInt(Edit5.text),StrToFloat(Edit6.text));
l1:=L-L0;
a:=6378254;
e2:=0.006693421623;
a0:=32140.404-(135.3302-(0.7092-0.0040*sqr(cos(B)))*sqr(cos(B)))*sqr(cos(B));
a3:=(0.3333333+0.001123*sqr(cos(B)))*sqr(cos(B))-0.1666667;
a4:=(0.25+0.00252*sqr(cos(B)))*sqr(cos(B))-0.04166;
a5:=0.0083-(0.16667-(0.1968+0.0040*sqr(cos(B)))*sqr(cos(B)))*sqr(cos(B));
a6:=(0.166*sqr(cos(B))-0.084)*sqr(cos(B));
N:=a*(1-0.25*e2*sqr(sin(B)))/(1-0.75*e2*sqr(sin(B)));
X:=6367558.4969*B-(a0-(0.5+(a4+a6*sqr(l1)))*sqr(l1)*N)*sin(B)*cos(B);
Y:=(1+(a3+a5*sqr(l1))*sqr(l1))*l1*N*cos(B)+500000;
Label12.Caption:=FloatToStr(X);
Label13.Caption:=FloatToStr(Y);
Label16.Caption:=IntToStr(n1);
end;
end;

<noindex></noindex>

Jeer
Сообщения: 145
Зарегистрирован: 19 ноя 2014, 20:57

Re: Перевод координат в Delphi 7.0

Сообщение Jeer » 18 апр 2012, 17:08

А, что значит "какие" ?
Алгебраические и тригонометрические - по тексту это видно.
Или Вы об "имени кого" ?

<noindex></noindex>

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и 49 гостей