Вы неправы в обоих случаях. И какое горизонтальное проложение хотите получить? Всё дело в том, что наша Земля не плоская, отвесные линии не параллельны и, следовательно, задачу нельзя решать как с прямоугольным треугольником по Пифагору.
Уважаемые сенсеи, так мой расчет по геоцентрическим координатам в данном случае корректен или нет? причем здесь тахеометр со своими поправками.
Всем спасибо вопрос закрыт. Воспользовался Кредо-дат. со всеми поправками получилось расстояние 9998.145 - совпадает с геоцентрическим расчетом
Здесь действительно, я не прав))) Должно быть Sгор=корень(Sнак2 - dh2) --- Сообщения объединены, 27 янв 2020, Оригинальное время сообщения: 27 янв 2020 --- А что можно? Идеи есть? И какая ошибка будет на 10 000 м?
Оффтоп (Move your mouse to the spoiler area to reveal the content) Всё с точность до наоборот. Вот абсолютно точные формулы для масштаба проекции Гаусса-Крюгера и сближения меридианов. βс – комплексная параметрическая (приведённая) широта, β – просто параметрическая (приведённая) широта. Во вложении код на Python. LatLon2NE(lat, lon) – вычисление прямоугольных координат, масштаба и сближения меридианов по широте и удалению от осевого меридиана. Вот её точность NE2LatLon(N, E)– вычисление геодезической широты, удаления от осевого меридиана, масштаба и сближения меридианов. NE2LatLonMod(N, E) – тоже самое, но чуть поточнее. Текст привел для иллюстрации того, что масштаб и сближение меридианов появляются как "побочный" продукт при преобразовании координат. А это для сравнения формулы из ГОСТ
Ха! Конечно здесь банальная опечатка: приведена формулка для поправки за наклон, а по смыслу то должен быть коэффициент, т.е. только косинус. Вдвойне досадно, что дважды повторил эту ошибку. Признаю. Должно быть f1=(cos v), где v- угол наклона. Или через разность высот пунктов f1=h^2/2(Sнакл.)^2-h^4/8(Sнакл)^4 Немного успокаивает тот факт, что в данном примере наклон учитывать не надо. Ладно, дал повод позлорадствовать. Однако, manikala, я так понимаю, что вашей части формул, чтобы завершить возникшую дискуссию и проверить решение, мне не дождаться? --- Сообщения объединены, 27 янв 2020, Оригинальное время сообщения: 27 янв 2020 --- Хочу поставить точку и проверить вычисления geo-prog своим способом. f3=1+Sx^2/24*R^2+. для нашей задачи этих двух членов будет достаточно. Причем для линии 10км этот коэффициент можно спокойно брать равным 1. f4=1+ym^2/2*R^2+...здесь уm - средняя ордината линии и я не различаю средний радиус кривизны в азимуте со средним радиусом кривизны. Теперь вычисления: При Sп=10000м. H=100м ym=128км Sнакл=Sп/f4/f3/f2=9998.139м. Geo-prog удовлетворился величиной 9998.145. Точность моих расчетов не хуже 5мм. Поэтому можно удовлетвориться. f2=1 f3=1-0,1/6371.1=0.9999843 f4=1.0002018 При Н=0 Sнакл=Sп/1/1/1.0002018=9997.982м. Очень хорошо. Вот теперь заметим, что мои вычисления в 7-мь раз проще, чем вычисления с преобразованием координат, где 7-мь верст до небес лесом да огородами. Хау. Я все сказал.
Я вас огорчу - это тоже ошибочная формула. Годится лишь для грубых расчётов при небольших расстояниях и превышениях. Как уже было сказано: Ещё раз повторю свой вопрос:
ЮС, по смыслу это значение длины линии на средней высоте пары пунктов. Stout, попробовал выгрузить и распаковать ваш файл. Началось такое абракадабрирование...Там нет сюрприза?
Оффтоп (Move your mouse to the spoiler area to reveal the content) там обычный текстовый файл с расширением py Код: # -*- coding: utf-8 -*- """ Created on Mon Jan 27 01:51:52 2020 @author: stout """ import time from mpmath import * mp.dps = 32 tol = 10*mp.eps() half_pi = pi/2 ro = 180*60*60/pi a = mpf('6378137') recip_flattening = mpf('298.257223563') f = 1/recip_flattening ee = f*(2 - f) n = f/(2 - f) e = sqrt(ee) TM_k0 = mpf('0.9996') Ra = TM_k0*a eps2 = ee/(1-ee) # the square of the second eccentricity eps = sqrt(eps2) print('f = ', f) print('e = ',e, end = '\n') print('n = ', n) def Geodetic2Param(lat): sin_lat = sin(lat) return lat - atan(sin_lat*cos(lat)/(recip_flattening - sin_lat*sin_lat)) def Geodetic2Isometric(lat): sin_lat = sin(lat) return atanh(sin_lat) - e*atanh(e*sin_lat) def Param2Isometricβ: return asinh(tan(beta)/(1 - f)) - e*asinh(e*sin(beta)/(1-f)) eps4 = eps2*eps2 eps6 = eps2*eps4 eps8 = eps4*eps4 eps10 = eps6*eps4 g_0 = +1 + eps2 g_2 = -g_0*eps4/6; g_4 = +g_0*(eps8*13/120 + eps6/5); g_6 = -g_0*(eps10*71/210 + eps8*19/63); g_8 = +g_0*eps10*23/45; def BowringIsometric2TanLat(q): t = tanh(q) tt = t*t sinh_t = t/sqrt(1 - tt) return ((((g_8*tt + g_6)*tt + g_4)*tt + g_2)*tt + g_0)*sinh_t f_b = (1 + n*n/8)**2/(1 + n) c_b = (1 - n*n*9/16) d_b = 33*n/20 def MerArc2Param(MerArc): theta = MerArc/(Ra*f_b) x = 1 - d_b*cos(2*theta) y = d_b*sin(2*theta) rr = x*x + y*y alfa = atan(y/x) return theta + 5/4*c_b*pow(rr,4/33)*sin(8/33*alfa) g1_b = (1 - n*n*3/8) g_b = g1_b*9 h_b = 3*n/4 def Param2MerArcβ: two_beta = beta + beta sin_2beta = sin(two_beta) cos_2beta = cos(two_beta) x = 1 - h_b*cos_2beta y = h_b*sin_2beta rr = x*x + y*y alfa = atan(y/x) return Ra*f_b*(beta - g1_b*cbrt(rr)*sin(2*alfa/3)) def LatLon2NE(lat, lon): lat = radians(lat) lon = radians(lon) beta = Geodetic2Param(lat) q_c = mpc(real = Geodetic2Isometric(lat), imag = lon) tan_beta_c = (1 - f)*BowringIsometric2TanLat(q_c) # approximate cos_beta_c = 1/sqrt(1 + tan_beta_c*tan_beta_c) beta_c = atan(tan_beta_c) NE = Param2MerArc(beta_c) # approximate scale = TM_k0*fabs(cos_beta_c)/cosβ gamma = -arg(cos_beta_c) return NE.real, NE.imag, scale, degrees(gamma) def NE2LatLon(N, E): NE = mpc(real = N, imag = E) beta_c = MerArc2Param(NE) # approximate cos_beta_c = cos(beta_c) q_c = Param2Isometric(beta_c) tan_lat = BowringIsometric2TanLat(q_c.real) # approximate lat = atan(tan_lat) beta = Geodetic2Param(lat) scale = TM_k0*fabs(cos_beta_c)/cosβ gamma = -arg(cos_beta_c) return degrees(lat), degrees(q_c.imag), scale, degrees(gamma) def NE2LatLonMod(N, E): NE = mpc(real = N, imag = E) beta_c = MerArc2Param(NE) # approximate F = Param2MerArc(beta_c) - NE cos_beta_c = cos(beta_c) dF = Ra*sqrt(1 - ee*cos_beta_c*cos_beta_c) db = F/dF beta_c -= db cos_beta_c = cos(beta_c) q_c = Param2Isometric(beta_c) tan_lat = BowringIsometric2TanLat(q_c.real) # approximate tt = tan_lat*tan_lat ss = tt/(1 + tt) s = sqrt(ss) f = asinh(tan_lat) - e*atanh(e*s) - q_c.real inv_df = (1 - ee*ss)*sqrt(1 - ss)/(1 - ee) lat = atan(tan_lat) - f*inv_df beta = Geodetic2Param(lat) scale = TM_k0*fabs(cos_beta_c)/cosβ gamma = -arg(cos_beta_c) return degrees(lat), degrees(q_c.imag), scale, degrees(gamma) def LogAbsAcc(approx_value, exact_value, base): return-log(fabs(exact_value - approx_value) + tol, base) max_dlon = mpf('51') file = open('TMExact_prec=120.txt') base = 10 # base of logarithm dt = '_base='+str(base)+'_'+time.strftime('%Y-%m-%d-%H-%M',time.gmtime())+'.txt' dt ='_maxLon='+str(max_dlon)+dt fout_ne = open('BowringLatLon2NE_abs'+dt,'w') fout_ne.write(f"{dt}") fout_ll = open('BowringNE2LatLon_abs'+dt,'w') fout_ll.write(f"{dt}") while True: line = file.readline() if len(line) == 0: break s = line.split() Lat = mpf(s[0]) Lon = mpf(s[1]) if (Lon > max_dlon): continue Etrue = mpf(s[2]) Ntrue = mpf(s[3]) gamma = mpf(s[4]) scale = mpf(s[5]) N, E, s, g = LatLon2NE(Lat, Lon) fout_ne.write(f"\n{float(Lat):7.3f} {float(Lon):7.3f}") dn = float(LogAbsAcc(N, Ntrue, base)) de = float(LogAbsAcc(E, Etrue, base)) fout_ne.write(f"{dn:12.3e} {de:12.3e}") ds = float(LogAbsAcc(s, scale, base)) dg = float(LogAbsAcc(g*ro, gamma*ro, base)) fout_ne.write(f"{ds:12.3e} {dg:12.3e}") B, l, s, g = NE2LatLon(Ntrue, Etrue) fout_ll.write(f"\n{float(Lat):7.3f} {float(Lon):7.3f}") db = float(LogAbsAcc(B*ro, Lat*ro, base)) dl = float(LogAbsAcc(l*ro, Lon*ro, base)) fout_ll.write(f"{db:12.3e} {dl:12.3e}") ds = float(LogAbsAcc(s, scale, base)) dg = float(LogAbsAcc(g*ro, gamma*ro, base)) fout_ll.write(f"{ds:12.3e} {dg:12.3e}") B, l, s, g = NE2LatLonMod(Ntrue, Etrue) db = float(LogAbsAcc(B*ro, Lat*ro, base)) dl = float(LogAbsAcc(l*ro, Lon*ro, base)) fout_ll.write(f"{db:12.3e} {dl:12.3e}") ds = float(LogAbsAcc(s, scale, base)) dg = float(LogAbsAcc(g*ro, gamma*ro, base)) fout_ll.write(f"{ds:12.3e} {dg:12.3e}") file.close() fout_ne.close() fout_ll.close()
Ну, да((( Другое дело здесь! Идеальный прямоугольный треугольник! Что так избирательно мои утверждения отвергают? Посчитайте разницу и посмотрим стоит шум поднимать. Главное, имея координаты в плоской СК, самый простой способ вычислить расстояние на местности перевычислить координаты в пространственную и получим то что нужно. Обработать расстояния вручную, или писать для этого программку, меня например напрягает. ВЯЗ, посчитал и получил неожиданный для меня результат. Я считал что будут сантиметры. Значит запас точности в формулах заложили на века! Или случайность. Можно поэкспериментировать. И вопрос! По какой формуле получено? Я вижу f3=1-H/(R+H) Где ошибка в вычислениях или в твоей формуле? Сравним еще для высоты 1000 м.
Смысл, он у всех разный. А если по ГОСТ 22268-76, то: , где: . Говоря о горизонтальном проложении, необходимо указывать высоту поверхности относимости этой самой горизонтальной плоскости. Например, у тахеометров всех (или почти всех) фирм горизонтальное проложение вычисляется на высоте станции, а не на средней высоте пары пунктов. --- Сообщения объединены, 28 янв 2020, Оригинальное время сообщения: 28 янв 2020 --- Если действительно цель сравнения ГНСС с тахеометром, то всё решается гораздо проще. Не нужно заморачиваться с формулами редуцирования, а просто сравнить наклонные дальности.
В данной постановке задачи - это сравнение точности приборов. В этой теме, расстояние из координат СК42, нужно найти на местности.
Найти на местности расстояние из координат не получится. Ну, не пишут у нас на местности такую информацию. Расстояние между пунктами можно вычислить или измерить. Что конкретно вы подразумеваете под "расстоянием на местности"? Постарайтесь сформулируйте задачу так, чтоб она исключала различные толкования, и только тогда можете получить правильный ответ.
manikala, уважаемый geo-prog считает для себя вопрос закрытым: Но если бы всё было так же просто, как это сделано в Кредо-дат, т.е. для небольших линий, то я бы давно перенёс эту тему в "Песочницу", и она уже давно бы ушла в "подвал". Но вопрос не такой простой, как кажется топографам. Геодезия довольно бурно движется от плоскости (планшетов) к геоцентрическим формам представления работ, но многие, по-прежнему, будут работать с пунктами, координаты которых в картографических проекциях. Вот здесь и напрямую встанет вопрос о длинах линий "на местности". Потому-то, скорее всего, и спросили Вас: В принципе, и Вы можете "спрыгнуть" с обсуждения. Насильно мил не будешь...
Я имел в виду длину прямого отрезка на местности (не на проекции т.е.), соединяющего 2 пункта, расположенных не далее 10км др от друга.
Это, как мы уже выяснили выше, хорда. С хордами проблем вообще никаких нет. Решаете обратную геодезическую задачу в пространстве и будет Вам счастье.
Теперь понятно. Ну, так ведь вы сами нашли простое и правильное решение: Вот только вряд ли данную прямую можно называть хордой, поскольку она никак не связана ни с дугой, ни с окружностью. Это просто прямая, соединяющая две точки в пространстве.
В космической геодезии прямую, соединяющую два пункта, принято называть хордой. Большаков В.Д_Левчук Г.П и др Справочник геодезиста В 2-х книгах Книга 1 М Недра 1985 стр. 316 В таком же смысле этот термин употребляется в книге http://www.geokniga.org/books/5127 Хочу подчеркнуть, что это всего лишь договорённость относительно термина.
Ну, это с точки зрения "Геометрии" для 7 класса. Геодезия ведь только в теории касается каких-то сфер, а на практике...