Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

Очень нужна помощь по переводу координат с gps в прямоугольные ск-42

Тема в разделе "ГИС", создана пользователем Иван Тарабукин, 14 апр 2016.

  1. Иван Тарабукин

    Регистрация:
    14 апр 2016
    Сообщения:
    3
    Симпатии:
    1
    Доброго времени суток!
    Уже замучился с этими координатами). Живу я на территории Саха(якутия) п. Хандыга. В гуглмапе координаты: 62654648 135550605.
    Есть данные от пользовательской сетки: dx=+23.92; dy=-141.27; dz=-81; da=-108; df=+0.00480795; utm=2499997; исходная широта 0.0; Свою зону я не знаю.
    Маршрут делаю в навигаторе garmin. Если смотрю файлы гармина, то точки имеют вид: <rtept lat="62.659125700592995" lon="135.55171731859446".
    И есть у меня карты местности масштабами: 1:25000 и 1:50000 в программа "ГИС Панорама Мини". В нем прямоугольные координаты вида: х(север), у(восток).
    Например, если ввести точку вручную в панораме (карта масштабом:250000) по wgs84(градусы): 62.64807362 135.57017638
    она по прямоугольной х(север), у(восток) приобретает вид: 6949333.080000 23529151.880000
    А точка на карте (с масштабом:50000) по wgs84(градусы): 62.60602681 135.17616811
    по прямоугольной х(север), у(восток) приобретает вид: 694459.939208 23508959.495617
    Короче с gpx беру данные вида lat и lon:
    62,659125700592995 135,55171731859446
    62,659125700592995 135,55171731859446
    62,654938688501716 135,56992943398654
    62,654938688501716 135,56992943398654
    62,652247175574303 135,56472594849765
    62,649854561313987 135,55757123976946
    62,649854561313987 135,55757123976946
    62,649854561313987 135,55757123976946
    62,65678882598877 135,55766344070435
    62,659406661987305 135,54770708084106
    62,660022815689445 135,56797821074724
    62,659435495734215 135,55333603173494
    62,659656777977943 135,55076513439417
    62,659656777977943 135,55076513439417
    62,65916995704174 135,55114600807428
    Их надо перевести на карту с прямоугольными координатами вида: х(север), у(восток).
    Подскажите пожалуйста формулу (не готовую программу) для перевода с координат gpx в прямоугольные.
    В интернете нарыл "формулу пересчета координат из WGS-84 в СК-42 и обратно" и написал в Дельфи,но после ее работы
    62.64807362 135.57017638 никак не становится: 6949333.080000 23529151.880000 (меняется только 11 цифра после запятого). По моему я перевожу только с wgs-84 в ск-42. Теперь нужно перевести в прямоугольные?
    Вот сама формула:
    const
    pi=3.14159265358979;
    ro=206264.8062;
    //эллипсоид красовского
    ap=6378245;
    alp=1/298.3; //0.00335232986925914
    e2p=2*alp-alp*alp;//0.00669342162296594
    //эллипсод WGS84
    aw=6378137;
    alw=1/298.257223563; //0.00335281066474748
    e2w=2*alw-alw*alw;//0.0066943799901413
    a=(ap+aw)/2; //6378191
    e2=(e2p+e2W)/2; //0.0066939
    da=aw-ap; //-108
    de2=e2w-e2p;//9.58367175373768e-7
    //линейные элементы трансформирования
    dx=23.92;
    dy=-141.27;
    dz=-80.9;
    //угловые элементы трансформирования
    wx=0;
    wy=0;
    wz=0;
    ms=25000;//масштабный элемент трансформирования
    type
    TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N4: TMenuItem;
    Label1: TLabel;
    N3: TMenuItem;
    Memo2: TMemo;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    var
    Form1: TForm1;filename:string;
    implementation
    {$R *.dfm}
    Function dB(Bd,Ld,H:double):double;
    var B, L, M, N,skb1:double;
    begin
    B:= Bd * Pi/180;
    L:= Ld * Pi/180;
    skb1:=n/a*e2*sin(b)*cos(b)*da+(sqr(n)/sqr(a)+1)*n*sin(b)*cos(b)*de2/2-(dx*cos(l)+dy*sin(l))*sin(b)+dz*cos(b);
    M:= a * (1 - e2) / sqrt((1 - e2 * Sin(b)*sin(b))*(1 - e2 * Sin(b)*sin(b))*(1 - e2 * Sin(b)*sin(b))) ;
    N:= a /sqrt(1 - e2 * sqr(Sin(B)));
    dB:= ro / (M + H) * skb1 - wx * Sin(L) * (1 + e2 * Cos(2 * B))+ wy * Cos(L) * (1 + e2 * Cos(2 * B))- ro * ms * e2 * Sin(B) * Cos(B);
    End;
    Function dL(Bd, Ld, H:double):double;
    Var B, L, N:double;
    begin
    B:=Bd * Pi / 180;
    L:= Ld * Pi / 180;
    N:= a / sqrt(1 - e2 * Sin(B)*sin(b));
    dL:= ro / ((N + H) * Cos(B)) * (-dx * Sin(L) + dy * Cos(L))+ sin(B)/cos(b) * (1 - e2) * (wx * Cos(L) + wy * Sin(L)) - wz;
    End;
    Function WGS84Alt(Bd, Ld, H:double):double;
    var B, L, N, dH:double;
    begin
    B:=Bd * Pi / 180;
    L:= Ld * Pi / 180;
    N:= a / sqrt(1 - e2 * Sin(B)*sin(b));
    dH:= -a / N * da + N * Sin(B) *Sin(B) * de2 / 2 + (dx * Cos(L) + dy * Sin(L)) * Cos(B) + dz * Sin(B)- N * e2 * Sin(B) * Cos(B) * (wx / ro * Sin(L) - wy / ro * Cos(L))+ (a *a/ N + H) * ms;
    WGS84Alt:= H + dH;
    End;
    Function WGS84_SK42_Lat(Bd, Ld, H:double):double;
    begin WGS84_SK42_Lat:=Bd - dB(Bd, Ld, H) / 3600;
    End;
    Function SK42_WGS84_Lat(Bd, Ld, H:double):double;
    begin SK42_WGS84_Lat:= Bd + dB(Bd, Ld, H) / 3600;
    End;
    Function WGS84_SK42_Long(Bd, Ld, H:double):double;
    begin WGS84_SK42_Long:=Ld - dL(Bd, Ld, H) / 3600;
    End;
    Function SK42_WGS84_Long(Bd, Ld, H:double):double;
    begin SK42_WGS84_Long:= Ld + dL(Bd, Ld, H) / 3600;
    End;
     
    #1
  2. SWK

    SWK
    Форумчанин

    Регистрация:
    19 мар 2011
    Сообщения:
    129
    Симпатии:
    37
    Адрес:
    Рудный, Казахстан
    Добрый день (вечер)
    Так?
    6950557.632 23528196.488
    6950557.632 23528196.488
    6950099.096 23529134.183
    6950099.096 23529134.183
    6949796.776 23528870.033
    6949526.924 23528505.494
    6949526.924 23528505.494
    6949526.924 23528505.494
    6950299.803 23528503.543
    6950587.194 23527990.654
    6950664.849 23529029.161
    6950592.870 23528279.168
    6950616.405 23528147.172
    6950616.405 23528147.172
    6950562.314 23528167.160
     
    #2
    Иван Тарабукин нравится это.
  3. AdrasMan

    Форумчанин

    Регистрация:
    4 дек 2013
    Сообщения:
    966
    Симпатии:
    871
    Адрес:
    город Воинской Славы Белгород
    Иван Тарабукин, а не проще ли ваш гармин настроить сразу на отображение координат в ск-42?
     
    #3
  4. SWK

    SWK
    Форумчанин

    Регистрация:
    19 мар 2011
    Сообщения:
    129
    Симпатии:
    37
    Адрес:
    Рудный, Казахстан
    Вопрос не ко мне, но
    Мой Garmin, например, не имеет СК42
     
    #4
  5. AdrasMan

    Форумчанин

    Регистрация:
    4 дек 2013
    Сообщения:
    966
    Симпатии:
    871
    Адрес:
    город Воинской Славы Белгород
    SWK, ищите здесь на форуме, тема была, как создать пользовательскую систему координат в навигаторе. В далёком 2001 году я настроил навигатор гармин етрекс номер не помню уже, так мои бродяги и сами не блудили в лесах-горах, так ещё и кого надо точно выводили на необходимые объекты. Хотя на пункте ГГС расхождение с каталожным было около 20 метров.
     
    #5
    maia и Иван Тарабукин нравится это.
  6. В.Шуфотинский

    В.Шуфотинский Модератор
    Команда форума Форумчанин

    Регистрация:
    10 дек 2008
    Сообщения:
    17.296
    Симпатии:
    4.952
  7. Иван Тарабукин

    Регистрация:
    14 апр 2016
    Сообщения:
    3
    Симпатии:
    1
    Спасибо всем. Разобрался.
    --- Сообщения объединены, 17 апр 2016, Оригинальное время сообщения: 17 апр 2016 ---
    SWK -именно так.
     
    #7
    SWK нравится это.

Поделиться этой страницей

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление