Я никого не подгоняю. Тем более, что у меня самого по данной теме вопросов нет. Я всего лишь сообщил, что по указанной Вами ссылке не нашёл вопросов. Только и всего.
Так вот коллеги, кому интересен рассматриваемый вопрос! Хочу поделиться с тем, в чем я разобрался в теме «преобразование координат при переходе из ГСК в МСКгорода и обратно». Прежде всего, уточню постановочную часть. Я рассматриваю чисто прагматичный производственный вопрос (практически, в постановке инициатора темы): необходимо выполнить преобразование координат пунктов с помощью официальных колючей, полученных у кого положено. Т.е. я рассматриваю детерминированное решение, для реализации которого имею следующие две формы исходных параметров: а) Lo’,Xo,Yo,xo,yo,Ho. Описание этих величин опускаю, поскольку уже язык измочалил в пояснениях. Это основной вариант параметров. В них содержится и дополнительная информация, например, о широте и долготе пункта Xo, Yo, о сближении меридианов в этой точке, ну и дополнительно о радиусе кривизны первого вертикала, о среднем радиусе кривизны и о масштабе МСКгорода. б)Lo’, Ho, Xo,Yo, xo, yo, угол поворота=-«сближение меридианов» плюс «некий доворот», масштаб МСКгор=1+Ho/No. Это дополнительный вариант, редко встречающийся, но живущий на практике. Он, кстати, наиболее понятен и прост, поскольку позволяет приступить к решению без вычисления дополнительных параметров, о которых я говорил в п.а), пользуясь старым нормативом ГКИНП-06-233-90. 2.Для решения производственной задачи я в первую очередь обратился к Кредо-Транскор и не смог его настроить на нужное решение с использованием имеющихся параметров. Тогда я разобрал по косточкам известные по нормативам (ГКИНП 06-233-90 и ГКИНП -01-271-03) и публикациям алгоритмы решения, запрограммировал их в Экселе, оттестировал, да и применил к своему решению. Именно с помощью этих средств я апеллирую к возможностям Транскора. Ну а теперь, собственно, результаты. Они в прилагаемом «экселевском» файле. Он содержит пять листов. Лист 1. Содержит пример из ГКИНП-06-233-90, непосредственно в формате задачи п.1.а. Интересно отметить, что в нем демонстрируется наличие ошибки в Руководстве. Когда я тестировал свои разработки, то пользовался вторым примером(см. лист п.3), а данные этого примера привел без проверки, что и вызвало осложнения. Лист 2. Содержит результаты проверки примера с листа 1, но по другому «нормативному» алгоритму(из ГКИНП-01-271-03). Лист 3. Содержит второй пример из ГКИНП-06-233-06, представленный в формате п.1.б. Лист 4. Содержит контрольный пример, который я приводил в начале дискуссии, но при его подготовке, стремясь «заколдовать» свои данные, допустил оплошность, выразившуюся в систематической ошибке преобразования по «х» 20мм и по «у» 12мм. Сейчас я это устранил. Лист 5. Содержит результат проверки контрольного примера с листа 4, но по другому алгоритму. Остается напомнить, что используемые алгоритмы мною были опубликованы ранее. Приведенные результаты предназначены для открытого использования. Возможно как производственное, так и сравнительное их применение. Я больше надеюсь на учебный эффект от рассмотрения. Выводы по дискуссии предлагаю делать каждому самостоятельно. Я свое мнение в отношении Трнаскора уже высказал. Всем успехов!
Правильно ли я понимаю, что осевой меридиан МСК города не проходит через начальный пункт? Потому как его координаты в СК-42 B = 51°49'30.431683" L = 107°35'42.969552" а сближение меридиана для него 2°02'26.70325008" (Все знаки верные, если принять, что исходные X,Y даны точно)
Уважаемый, Вячеслав Трофимович, не воспринимайте мои замечания, как стремление придраться к чему-либо. Но, открыв первый же лист "Перевод координат из СК-42 в ГорСК (для форума Геодезист).xlsx", заметил ряд неточностей. Нулевой номер зоны ГСК-42 при долготе осевого меридиана 39°00'00". Понятно, что это опечатка. Однако тут же очередная ошибка с геодезической широтой начального пункта (58°19'14.88159"). По Транскору должно быть Невольно возникают сомнения в дальнейших вычислениях. Или имелись в виду разные начальные пункты? Поясните, пожалуйста.
Уважаемый ЮС. Нет никакой обиды на замечания, ибо я не считаю себя непогрешимым. Но в том примере, где вы увидели номер зоны нулевым, эта величина не имеет никакого значения. Она не используется. Этот пример непосредственно из Руководства-06-233. В этом же руководстве я выбирал из таблиц 8 и 9 значения No и f" и проверял точность интерполирования. Т.е. они не вычислялись, а брались как исходные и об этом есть примечание по поводу красных и черных значений. Обратите внимание на мой комментарий. Пример этого листа строго реализует ситуацию 1.а). Эта реализация чуть отличается от того, что я приводил в начале обсуждения. Тогда я ввел дополнения, позволяющие пользоваться Транскором. Сейчас же строго, цифра в цифру постарался воспроизвести пример из Руководства. Несколько похожая ситуация с примером на 3-м листе. Там вообще нулевые долгота и широта, поскольку они не используются в реализации алгоритма преобразования, базирующегося на исходных параметрах ситуации 1.б). Именно эти два примера наглядно показывают, что для их реализации крайне затруднительно пользоваться Транскором без дополнительных данных, которые еще надобно вычислить не ошибившись. Stout'у. Только в моем примере на 4-м и 5-м листах осевой меридиан МСК совпадает с пунктом ГГС. Примеры с листов 1 и 3 произвольные, выдуманные не мною, а взяты из Руководства -06-233-90. В целом прошу понять меня правильно - я постарался воспроизвести контрольные примеры по "нормативным" алгоритмам, чтобы иметь максимально проверенные данные для Транскора при его настройке на решение задачи перехода ГСК->МСКгорода и обратно. Т.е. основное внимание уделено согласованности прямого и обратного переходов, реализуемых разными алгоритмами.
Прощу прощения, думал написал что пример с листа Пример ВЯЗ 1. По факту осевой не проходит через начальный пункт. Кроме того, формула для сближения меридианов γ=ΔL×sinB очень приближённая более точное значение для ΔL = 2.561875000000° = 2°33'42.7500" не 2.005026149042 (формат DD.MMSSS…) а 2.005212160540 разница 1.860" Во вложении экселевский файл для вычисления на BASIC (Alt+F11) сближения меридианов (функция gamma) из Морозова и чуть менее точная формула от Шведов (gamma_se) Кроме сближения меридианов, там ещё функции: DMS2RAD для конвертации из формата DD.MMSSS… в радианы RAD2DMS для конвертации из радианов в формат DD.MMSSS… DMS2DEG для конвертации из формата DD.MMSSS… в градусы DD.DDDD… DEG2DMS — обратный переход.
Возможны варианты "ключей". Либо с доворотом: Либо без доворота с осевым, как есть в условии задачи: Хотя оба варианта (из автоматического расчёта) дают одинаковую точность вычислений, второй вариант предпочтительнее, поскольку лучше соответствует условию задачи.
У меня получились такие параметры Исходные задал как Табличный калькулятор посчитал как Сравнение дало расхождения 48795.942648306.679748795.942948306.6795 0.0003-0.000254220.303948380.673554220.304748380.6737 0.00080.000250747.587753035.320850747.588153035.3202 0.0004-0.000653050.204350228.819553050.204750228.8195 0.00040.000049289.530257739.811249289.531257739.8091 0.0010-0.002141433.412245210.993341433.410445210.9948 -0.00180.001550000.054549999.970250000.055049999.9700 0.0005-0.000244083.660546817.943244083.660046817.9439 -0.00060.000744497.764947050.354944497.764547050.3555 -0.00040.000645449.714348206.367545449.714448206.3679 0.00000.000445261.405047980.609945261.404947980.6103 0.00000.000544979.780747804.357544979.780647804.3580 -0.00010.000543617.492846494.740443617.492046494.7412 -0.00080.0008 Надо бы продифференцировать координаты в МСК по координатам ГГС и проверить условие конформности отображения. З.Ы. Не помню в какой теме давал ссылку на подправленную программку из поста Программа для пересчета координат из МСК города
Да, разумеется. При рассмотрении задачи я воспользовался мнением А.П.Герасимов и В.Г. Назарова из "Местные системы координат".-М.:Проспект, 2010. Они текстуально говорили следующее. "Вычисление ключа @gamma@ с высокой точностью не является обязательным условием местных систем координат с постоянными коэффициентами. В некоторых случаях его вычисляли по формуле gamma=l*sin В или как разность дирекционных углов...".Перед этой частью текста приводится и более точная формула для сближения. Пожалуй, надо поправить мои вычисления. Я не большой знаток нюансов "экселя", поэтому ваш модуль "gamma" у меня не работает, а ссылка на программу возвращает к рассмотрению скриншота из поста №11 данной темы. Это так и должно быть? ЮС'y. Ну да, решение получается с Транскором, но получается с "подвывертом" - все начальные ключи преобразуются в некоторую промежуточную структуру. Изменилось все Хо и Уо, Но, масштаб, уголок. У меня это вызывает сомнения и неудовлетворенность искусственностью решения.
Я его (Excel) вообще ненавижу, ибо всё по-уродски сделано. Но в нем есть инструмент, позволяющий писать программы и он (Excel) есть практически у каждого. В активном (открытом) файле Gamma (version 1).xls жмём Alt+F11, появляется окно Бейсика. Выбираем модуль ajsDMSUTIL, затем в меню File—>Export File… и сохраняем где нам удобно ajsDMSUTIL.bas. Закрываем окно Microsoft Visual Basic. Активируем/открываем файл куда хотим импортировать модуль, опять Alt+F11, File —>Import File… импортируем модуль ajsDMSUTIL.bas. Закрываем Microsoft Visual Basic. Теперь из этого файла становятся доступны функции модуля. Урезанная программка https://yadi.sk/d/GFeJMVUJ3E9D7z Урезанная просто потому что надо чуть исправить страничку пересчёта по коэффициентам гармонических полиномов. Исправить не математику, а интерфейс. Для Вашего примера в файл CustomSYS.ini надо добавить секцию Код: [CK-42 Zone 18 ВЯЗ] SemiMajorAxis=6378245 RecipFlattening=298.3 CMeridian=105.00000000000000° Scale=1.000000000000 FalseNorthing=0 FalseEasting=0
Что значит "подвывертом"? В Вашей программе (Excel) тоже вычисляются некоторые промежуточные данные, однако это никого не смущает. Меня больше насторожило при определениях ключей Транскором некоторое расхождение в масштабе и долготе осевых меридианов. Кстати, по Транскору сближение = 2°00'52.121597". И это объясняет, почему пересчёт, выполняемый в Транскоре, или по данным из таблицы с примерами (Excel) полученный ключ, несколько отличаются, например, долготой осевого меридиана. Также наблюдается (причину пока не установил) некоторое различие в масштабах пересчёта или в определении Транскором высоты поверхности относимости. Хорошая сходимость при контроле, выполняемом обратным пересчётом, не есть доказательство точности, если какие-то элементы (сбл. мер.) в том и другом случае выполняются по упрощённым формулам. Есть вопросы по Вопрос по листу 1. Откуда получены данные в ячейке B27? Они используются в дальнейших расчётах, однако мне непонятно, откуда они сами получены, в Исходных данных их нет. По моему разумению, пользователь должен ввести лишь Исходные данные, а все промежуточные данные и итог должна решать сама программа. Видимо потому, что в процессе вычислений пользователю нужно привносить какие-то промежуточные данные, у меня не получилось в Excel'е решить пример со своими данными. Пробовал на нескольких листах, контрольная точка (нач. МСК) получается, а остальные "улетают" на сотни метров. Что касается Транскора, то я порешал все задачи на всех листах. Достаточно данных пары пунктов в обеих системах, чтобы Транскор без каких-то дополнительных расчётов (автоматом) вычислил ключ МСК. Точность зависит от точности исходных данных. При желании, потом ключ можно подкорректировать, если есть какие-то известные официальные данные по ключу. Если нет пары известных пунктов в двух СК, то установка ключа может быть выполнена по известным параметрам. Для "стандартных" МСК, основанных на СК-42 или СК-63 достаточно указать осевой меридиан и параметры сдвижки. Для МСК с поверхностью относимости выше нуля, в Транскоре заполняются Доп. параметры местной СК. Тут, если нет в описании МСК, потребуется вычислить координаты точки условного начала из ГСК своей зоны в ГСК для зоны с осевым меридианом МСК. Это не составляет особого труда, выполняется в том же Транскоре, не отрываясь от основной задачи, и я уже описывал, как это делается. Да, на здоровье. Нет долготы (зоны) и не надо, а широту Транскор вычислит по координатам без участия пользователя. Долготу же осевого меридиана придётся ввести любую условную, чтоб Транскор воспринимал исходную ГСК как проекцию Гаусса-Крюгера (Меркатора), иначе при пересчёте не будут учтены искажения в данной проекции. Всё решаемо.
Я проделал вот что. Из таблицы (Пример ВЯЗ 1) пересчитал из ГСК зона 18 в ГСК* зону с осевым 107°33'42.75". Теперь с МСК не должно быть разворота и расстояния между пунктами могут отличаться только масштабом за высоту поверхности относимости. Для полного сравнения линии из МСК привёл на нулевую отметку. Данные для сравнения на рисунке. Хорошо, если кто бы проверил во вторую руку.
Судите сами. Детерминированные значения ключей вы с помощью вероятностной процедуры переводите в некоторое промежуточное состояние, из которого Транскор выдает результаты, близкие к детерминированному решению. Я подозреваю, что аналитика Транскора отличается от той, что используется в рассматриваемом решении. Может быть существуют формулы, описывающие перевод ключей из исходного состояния в "транскоровское". Тогда обнародуйте их и все станет прозрачно. В целом, разработчикам Транскора,(за дискуссией присматривал их представитель) видимо, как минимум, следует сопроводить комментариями в руководстве пользователя особенности применения пакета к решению задачи ГСК<->МСКгорода. Ну и, как максимум, в новой версии добавить опции удобного решения. В отношении ячейки В27 с листа 1. Вспомним, что я выявил расхождение с контрольным примером.Оно касалось только абсцисс: пункт С в примере 32640,036 - у меня 32639,976; пункт Д в примере 29285,046 - у меня 29284,986 и т.д. Причем промежуточные результаты сходились и только на последнем этапе, где используется угол гамма, возникало расхождение. Я пытался подобрать угол, при котором абсцисса похожа на контрольное значение. Ячейка В27 -остаток от изысканий. Но она более нигде не используется. Используется D26, функционально связанная с B26, углом, заданным в условии примера.
Какая вероятностная процедура? Какое промежуточное значение? Можно конкретнее и простым языком? Я тоже подозреваю, что алгоритмы в Транскоре могут быть иными. Ну и что из того? Главное, чтобы конечный результат вычислений отвечал требуемой точности. Что означает "транскоровское состояние"? Формулы наверняка существуют, если программа выполняет расчёты. Когда-то, ещё в первых версиях Транскора не было настройки ключа для МСК с поверхностью относимости отличной от нуля, и особенно с дополнительным доворотом. Приходилось изощряться разными способами. Например, выполнять расчёты в два этапа. Вначале выполнялся пересчёт из ГСК в некую зону с частным меридианом, проходящим через условную точку начала МСК. При этом, координаты начала МСК вычислялись в проекции Гаусса-Крюгера. Что-то подобное с условным началом МСК сейчас делается в Транскоре - Xo(TM),Yo(TM). Тут же этой точке даются и вторые значения координат - Xo(МСК), Yo(МСК), что уже в местной системе. Далее (второй этап), поскольку удаление от осевого меридиана в МСК невелико, полученные координаты принимались как плоские и в том же Транскоре пересчитывались по Хельмерту в МСК с учётом величины сдвижки, масштаба за переход на поверхность относимости, и угла дополнительного разворота осей координат относительно меридиана, если такое есть в условии МСК. Если же оси МСК по условию параллельны меридиану, проходящему через точку начала координат, то никакого разворота вводить не нужно - поправки за сближение меридианов уже на первом этапе учтены в дирекционных углах при пересчёте из зоны в зону. Может как-то так Транскор и вычисляет, а может как-то иначе. Какая разница? Да Бог с ним, с тем примером. Там и ср. радиус кривизны с ошибкой...Зачем было вообще его показывать, если там масса ошибок? Ведь сопоставляются возможности (и точность) расчётов с Транскором. Лучше вернёмся к таблице из Excel'я, где, якобы, всё должно быть правильно. Вы не прокомментировали мою табличку (#54), а ведь там, по данным Excel наблюдается разворот всей МСК на угол почти в 2". Много это даёт или мало в координатах, можно посмотреть в следующей таблице: Я так понимаю, что вопрос о способностях Транскора в пересчёте из ГСК в МСК городов больше не стоит? А вот с этими предложениями надо обращаться напрямую к разработчикам.
Я этот пример использовал ранее и показал его в исправленном виде. Это всего лишь заготовка для формирования контрольного решения, а не идеальный пример. С помощью этой заготовки я предлагаю разобрать последний пример, который учитывает замечания Stout и ваши результаты. Смотрите прилагаемый файл. Может быть после его рассмотрения удастся закончить затянувшуюся дискуссию. Да, я уже сказал об этом ранее, в посте №51. Вам, еще раз, большое спасибо за помощь!
Посмотрел финальный пример, и вот что удалось заметить. Если точка 7 (начало МСК города) лежит на осевом меридиане, тогда долгота этого меридиана должна быть 107°35'42.969552". Если же, как в исходных данных, долгота 107°35'42.959", тогда точка 7 смещена от осевого меридиана МСК города на 0.202 м к востоку. Вполне допустимо, иногда параметры МСК задаются и более странным образом. Транскору это безразлично. Вот его настройки: Долгота осевого меридиана МСК необходима для вычисления величины сближения меридианов, то есть величины разворота осей МСК относительно ГСК (если нет ещё и дополнительного разворота). А через координаты точки начала в обеих СК задаются параметры параллельной сдвижки координатных осей МСК. Итак, по исходным данным МСК дано и принято для расчётов в Транскоре: Долгота осевого меридиана МСК города 107°35'42.959", геодезическая широта начального пункта 51°49'30.432". В этом случае, при разности долгот 2°35'42.959" на широте 51°49'30.432" величина сближения меридианов = 2°02'26.694939", а не 2°02'27", как это вычислено в Excel. Ошибка за разворот МСК = 0.31". И этот разворот подтверждается решением ОГЗ в МСК между пунктами 7 и 6: Транскор 7-6 209°13'59.17" Excel 7-6 209°13'59.46" Кроме того, есть разница с Транскором в масштабе пересчёта. Вы почему-то при расчёте масштабного коэффициента используете радиус кривизны в первом вертикале, хотя обычно для редуцирования расстояний принято пользоваться средним радиусом кривизны. Например (Высшая геодезия. Яковлев.1989 г.): Что в итоге дают ошибки за разворот и масштаб в координатах: "Ещё немного, ещё чуть-чуть" и подправленный общими усилиями Excel будет решать задачу с точностью не хуже Транскора. Успехов во всех делах и с профессиональным праздником - Днём Геодезиста!
Да -это мой "ляпчик"именно 42.96955 должен быть хвостик. И это верно: 2-02-26.703 должно быть. Только в "экселе" не вычислялось, а округленное значение было введено мною вручную. Эта ссылка, совершенно справедливая при редукции линейных измерений, в данном случае не работает. В аналитике перехода используется именно радиус кривизны первого вертикала. Вы и не заметили, как экселевская заготовка давным давно работает, но проблемки были связаны с исходными данными(точнее с их качеством и идентичностью). И здесь можно констатировать, что аналитика Транскора все же отличается от использованной мною, но результат сходится в пределах мм(если я опять не ошибся с и\д). Чем я удовлетворен. Судите сами(см. прилагаемый файл).
Ну, почему же не заметил. Заметил и даже указал на оставшиеся "проблемки". Тут я с Вами не могу согласиться. Какая может быть принципиальная разница в редуцировании длин с одной уровенной поверхности на другую уровенную поверхность? Если уж лезть в дебри редуцирования, тогда надо для каждой из линий разного направления вводить свои радиусы кривизны (вдоль меридиана - радиус кривизны меридиана, в широтном направлении - радиус кривизны первого вертикала, по другим направлениям - радиус кривизны нормального сечения...). Для данной задачи наиболее подходит именно средний радиус кривизны, как наиболее простой и дающий наименьшие искажения по широте и долготе. А кто спорит об аналитике? Главное результат. В данном примере я пробовал перебрасывать исходные координаты из 18-й в 19-ю зону и затем из неё пересчитывать в МСК. Расхождения с пересчётом из 18-й зоны были в сотых долях мм. Это, своего рода, тест-контроль для Транскора, подтверждающий достаточно высокую точность расчётов. Поздравляю! Теперь разворот практически отсутствует (в пределах ошибок округления исходных данных), осталась небольшая (0.26 мм/км) разница в масштабе. Если примете в расчётах средний радиус кривизны, тогда расхождений с Транскором практически не будет.