Есть данные широта-долгота на Красовском (в моём случае такие должны приходить с прибора). Есть гост32453-2013 для ск95. И есть несколько вопросов )
1) Какой гост для пересчёта *->95 использует панорама? 2) Кто-нибудь сам считает по новому госту? Хочется данные для проверки своей формулы (даже если делать по госту - очень даже возможно ошибиться)
У меня получается так на вход даю L = 39°, B = 51°, получаю прямоугольные ск42 x = 5652185.04377, y = 7500000 перевожу в промежуточные пз90 x = 5652186.045493 y = 7499877.085694 z = -89.590901 (на вход матрице поворота требуется z, его сунул 0) перевожу в ск95 по стандарту 32453 x = 5652160.145493 y = 7500008.025694 z = 81.760000
3) посчитанные данные достаточно сильно расходится с данными из различных калькуляторов (~20 метров). но они считают по старому госту. новый гост даёт такие сильные различия или гдето у меня ошибка?
4) Как в гис карте полегче посчитать любую точку из широты-долготы в ск95?
1) Пересчет из геодезических координат в плоские прямоугольные не меняется со времен Красовского и Гаусса-Крюгера. Названия ГОСТ не могут влиять на математику. 2) Пересчет из геодезических координат в плоские прямоугольные в СК-42 и СК-95 должен дать строго одинаковые прямоугольные координаты для одинаковых исходных геодезических координат в этих системах. 3) Нет такого понятия - "широта-долгота на Красовском". Есть геодезические координаты в СК-42, в СК-95, в ПЗ-90.11, в ГСК-2011 и т.д. Для перехода к некоторой СК обычно переходят к соответствующим геодезическим координатам, а от них к плоским прямоугольным. Или считают через прямоугольные пространственные координаты. Погрешность вычислений по ГОСТ порядка 1 мм (0.001 м).
Я правильно понял что надо логику пересчёта делать так:
- Входные данные - геодезические в СК42 - Пересчитать геодезические СК42 в геодезические ПЗ90 - Пересчитать геодезические ПЗ90 в геодезические СК95 - пересчитать геодезические СК95 в плоские прямоугольные СК95
?
Если у Вас стоит задача перейти от СК-42 к СК-95, то она имеет решение только в поле. Нужно выполнить измерение набора точек в двух системах и определить действующие параметры пересчета на заданной территории.
Елена, мне хватит точности до 5 метров, если использовать "средние по больнице" параметры перехода - то надо их применять к геокоординатам, как я написал в 3м сверху сообщении?
Поговорил с геодезистами. Советуют сделать так. Вход - B,L в СК42
1) (B,L)ск42 -> (x,y,z)ск42 переход в прямоугольные пространственные координаты, формула 5.1.1 стандарта 2) (x,y,z)ск42 -> (x,y,z)пз90 переход в промежуточную систему пз-90, формула Б.1 стандарта 3) (x,y,z)пз90 -> (x,y,z)ск95 переход в ск-95, формула Б.4 стандарта (шаги 2 и 3 легко объединяются в один шаг) 4) (x,y,z)ск95 -> (B,L,H)ск95 обратный переход в геокоординаты, формула 5.1.2 стандарта 5) (B,L,H)ск95 -> (x', y', z') переход в плоские прямоугольные координаты ск95, формула 5.4.1 стандарта
как на взгляд форумчан, такое сработает? стандарт можно посмотреть тут
Ник Павлов написал: Поговорил с геодезистами. Советуют сделать так. Вход - B,L в СК42
1) (B,L)ск42 -> (x,y,z)ск42 переход в прямоугольные пространственные координаты, формула 5.1.1 стандарта 2) (x,y,z)ск42 -> (x,y,z)пз90 переход в промежуточную систему пз-90, формула Б.1 стандарта 3) (x,y,z)пз90 -> (x,y,z)ск95 переход в ск-95, формула Б.4 стандарта (шаги 2 и 3 легко объединяются в один шаг) 4) (x,y,z)ск95 -> (B,L,H)ск95 обратный переход в геокоординаты, формула 5.1.2 стандарта 5) (B,L,H)ск95 -> (x', y', z') переход в плоские прямоугольные координаты ск95, формула 5.4.1 стандарта
как на взгляд форумчан, такое сработает? стандарт можно посмотреть тут
Если у Вас стоит задача перейти от СК-42 к СК-95, то она имеет решение только в поле. Нужно выполнить измерение набора точек в двух системах и определить действующие параметры пересчета на заданной территории.
Отвечу сам себе. Пересчёт из предыдущего моего сообщения работает и совпадает с PHOTOMOD GeoCalculator, но не совпадает сонлайн калькулятором от latlong.ru
В матлабе (вдруг кому пригодится)
Скрытый текст
Код
%используется новый гост 32453-2013
%input sk42 geo
Bgrad = 51;
Lgrad = 39;
H = 0;
fprintf('входные данные Bgrad = %f Lgrad = %f H = %f\n', Bgrad, Lgrad, H);
% в радианы
B = Bgrad*pi/180;
L = Lgrad*pi/180;
% в прямоугольные пространственные координаты на Красовском
[xppk42, yppk42, zppk42] = GeoToPPKKras(B, L, H); %проверено тут http://www.latlong.ru/sk.php
fprintf('пространственные прямоугольные координаты42 xppk42=%f yppk42=%f zppk42=%f\n', xppk42, yppk42, zppk42);
% в промежуточную пз-90
[xppk90, yppk90, zppk90] = sk42topz90(xppk42, yppk42, zppk42);
fprintf('пространственные прямоугольные координаты90 xppk90=%f yppk90=%f zppk90=%f\n', xppk90, yppk90, zppk90);
% в ск-95
[xppk95, yppk95, zppk95] = pz90tosk95(xppk90, yppk90, zppk90); %проверено тут http://www.latlong.ru/sk.php, там старый стандарт, отличие в 4м после запятой
fprintf('пространственные прямоугольные координаты95 xppk95=%f yppk90=%f zppk90=%f\n', xppk95, yppk95, zppk95);
% в геокоординаты
[B95, L95, H95] = PPK95ToGeo(xppk95, yppk95, zppk95);
fprintf('геокоординаты95 B95=%f L95=%f H95=%f\n', B95, L95, H95);
fprintf('геокоординаты95 в градусах B=%f L=%f H95=%f\n', B95*180/pi, L95*180/pi, H95);
% в плоские пространственные
z1 = H95; % высоту можно взять из H95
[x1, y1] = GeoToCoordsF(B95, L95*180/pi); % на http://www.latlong.ru/sk.php не совпадает, зато совпадает в геокалькуляторе PHOTOMOD GeoCalculator
fprintf('пространственные плоские координаты95 x1=%f y1=%f z1=%f\n', x1, y1, z1);
Код
% геокоординаты СК42 в прямоугольные пространственные координаты СК42
% формула 5.1.1 стандарта
function [x, y, z] = GeoToPPKKras(B, L, H)
% болшая полуось эллипсоида, из вики "Эллипсоид Красовского"
a = 6378245;
% сжатие эллипсоида, из вики "Эллипсоид Красовского"
alpha = 1/298.3;
% квадрат эксцентриситета эллипсоида
e2 = 2*alpha - alpha*alpha;
% радиус кривизны первого вертикала
N = a/sqrt(1 - e2*sin(B)*sin(B));
x = (N+H)*cos(B)*cos(L);
y = (N+H)*cos(B)*sin(L);
z = ( (1-e2)*N + H ) * sin(B);
end
Код
% переход прямоугольных пространственных координат из ск42 в пз90
% формула Б.1 стандарта
function [x1, y1, z1] = sk42topz90(x, y, z)
k = pi/180/3600;
%to pz90.02
%x0 = 23.93;
%y0 = -141.03;
%z0 = -79.98;
%wx = 0*k;
%wy = -0.35*k;
%wz = -0.79*k;
%m = -0.22*10^(-6);
% to pz90
x0 = 25;
y0 = -141;
z0 = -80;
wx = 0*k;
wy = -0.35*k;
wz = -0.66*k;
m = 0;
x1 = (1+m)*(1*x + wz*y - wy*z) + x0;
y1 = (1+m)*(-wz*x + 1*y + wx*z) + y0;
z1 = (1+m)*(wy*x - wx*y + z) + z0;
end
% пересчёт пространственных прямоугольных координат в геокоординаты
% формула 5.1.2 стандарта
function [B, L, H] = PPK95ToGeo(X, Y, Z)
% вспомогательная величина
D = sqrt(X^2 + Y^2);
% болшая полуось эллипсоида, из вики "Эллипсоид Красовского"
a = 6378245;
% сжатие эллипсоида, из вики "Эллипсоид Красовского"
alpha = 1/298.3;
% квадрат эксцентриситета эллипсоида
e2 = 2*alpha - alpha*alpha;
if D == 0
B = pi*Z/(2*abs(Z));
L = 0;
H = Z*sin(B)-a*sqrt(1-e2*sin(B)*sin(B));
else
La = abs( asin(Y/D) );
if (Y<0) && (X>0)
L = 2*pi - La;
elseif (Y<0) && (X>0)
L = pi + La;
elseif (Y>0) && (X<0)
L = pi - La;
elseif (Y>0) && (X>0)
L = La;
elseif (Y == 0) && (X>0)
L = 0;
else % (Y==0) && (X<0)
L = pi;
end
end
if Z == 0
B = 0;
H = D - a;
else
r = sqrt(X^2 + Y^2 + Z^2);
c = asin(Z/r);
p = e2*a/(2*r);
% запустить итеративное вычисление
s1 = 0;
while(true)
b = c + s1;
s2 = asin( p*sin(2*b)/sqrt(1-e2*sin(b)*sin(b)) );
d = abs(s2-s1);
if( d < 10^(-4)*pi/180/3600) % установленное значение допуска 10^(-4)'' -> rad
B = b;
H = D*cos(B) + Z*sin(B) - a*sqrt(1-e2*sin(B)*sin(B));
break;
else
s1 = s2;
end
end
end
end