Блин Вы такие умные тут, я аж комплексую))) Ладно, не стоит мне отнимать Ваше время, не мое это. Спасибо большое всем кто ответил, но мне не следовало просить помощи о том, что даже мысленно представить не могу) Всего хорошего Вам
Не стоит. Геодезия, действительно, непростая наука, но разобраться всё же в хитросплетениях систем координат стоит. Тем более, когда кто-то хочет узнать о тех или иных координатах. Координаты не всегда просто числа, и если кому-то зачем-то понадобились координаты режимного объекта, то надо бы понимать, что даже чисто математической задачей по переводу координат он подставляет и себя, и других. Будьте бдительны к просьбам друзей или своей излишней любознательности.
добрый день. может кто поможет. задачка в следующем: есть n точек с координатами в градусах с google map в десятичной форме (например, точка1: 56.335430, 36.434692, точка2: 56.271897, 36.809553, точка 3: 56.287438, 36.764313), каждая имеет весовой коэффициент (например, 100, 200, 250). нужно найти центр тяжести (я на сколько понял= задача вебера)? но проблема в том, что это же не координаты на плоскости и, соответственно, "в лоб" нельзя же перемножать координаты на вес и делить на сумму весов? как найти расстояние между этими точками в метрах? точность вычислений не сильно волнует, погрешность устроит большая, к примеру до 1 км.
если бы одна-две точки были даже не городил бы огород. да и на вопрос с нахождением центра тяжести это не даcn ответа :). далее нужно измерить расстояние от центра тяжести до точек, плюс цт может по факту поменяться не один раз. "в лоб" я посчитал цт и от него расстояния при помощи того же google map, но, видимо, это неправильно, да и как сказал, если поменять центр тяжести, то все заново пересчитывать.
не совсем понял, если Вы про разброс точек, то он не большой. в данном случае, все точки находятся в пределах московской области.
нет, не знаю, образумте как координаты выдаваемые гуглом перенести на шарик, а дальше уже сам :) .т.е. свести модель к идеальной сфере?
Мне видится два альтернативных пути. Первый путь — использовать косую стереографическую проекцию. (Oblique Stereographic) Формулы в http://www.ogp.org.uk/pubs/373-07-2.pdf Переводите всё на плоскость и решаете всё в плоскости. Затем по найденным прямоугольным координатам вычисляются геодезические центра тяжести. Второй путь — отображение эллипсоида на сферу по Гауссу. Здесь L0 — среднеарифметическое из долгот крайних точек.
Да тут простейшая задачка по оптимизации перевозок грузов, что-то нигде не смог найти... Может искать не умею. Наверняка. Я пришел к выводу, что, в принципе, можно в данном случае использовать нахождение центра масс по координатам(угловым значениям) "в лоб", т.е. Хцентра(широта)=(56.335430*100+56.271897*200+56.287438*250)/550 (то же самое с координатой долготы). Вопрос теперь в другом, для примерного прикидывания расстояния между двумя точками (например: точки1 и точки2) посчитать длину дуги по широте, затем также по долготе и по гипотенузе вывести расстояние Lшироты=(56.335430-56.271897)*2ПR/360, где R-радиус Земли? 0,063533*2*3,14*6371000/360~7060м. т.е. если я возьму, что Земля идеальный шарик, будет ли разность (56.335430-56.271897) давать угол дуги заключенной между этими двумя точками? Или это уж сильно большие допущения??? --- Сообщения объединены, 3 мар 2015, Оригинальное время сообщения: 3 мар 2015 --- или может подскажете какое соотношение лучше взять на 1 минуты широты и одину долготы принять? с широтой вроде как морская миля, т.е. 1 минута=1852 м. на сколько верно утверждение 1 минута долготы ("право/лево/запад/восток") = 1852 м * cos(F), где F=(широта в градусах)?
Фигасе - простейшая... Для решения "Задачи коммивояжера" иногда требуются суперкомпы; не путать с обычной прокладкой маршрута. Вы бы сказали - рещаете практическую задачу, и тогда надо воспользоваться каким-либо готовым API, или решаете курсовую.
Практическая задача. Единожды, упрощая модель, она решена в принципе. C API не смог разобраться :)))) Где пишется сам запрос?
Видимо в своей программе )) Вот с открытыми исходниками http://www.osmsharp.com/ (по-русски http://shtosm.ru/2013/02/08/1/) Вообще библиотек и исходников очень много.
Вот набросал пример кода (Наведите курсор, чтобы раскрыть содержимое) пример кода (раскрыть) пример кода (свернуть) Код: #include <iostream> #include <stdio.h> #include <cmath> #include <windows.h> using namespace std; void FromEllipsToSphere( const double flattening, const double Bo, const double Lo, const double Lat, const double Lon, double &sphericLat, double &sphericLon ) { double ee = flattening*(2-flattening); double cosB = cos(Bo); double c = sqrt(1 + ee/(1 - ee)*cosB*cosB*cosB*cosB); sphericLat = asin(sin(Lat)/c); sphericLon = c*(Lon - Lo); } double SpericRadius( const double SemiMajorAxis, const double flattening, const double Bo ) { double ee = flattening*(2-flattening); return SemiMajorAxis*(1-flattening)/(1-ee*sin(Bo)*sin(Bo)); } double Haversine(double Lat1, double Lon1, double Lat2, double Lon2){ double dLat = Lat2-Lat1; double dLon = Lon2-Lon1; double sLat = sin(dLat/2); double sLon = sin(dLon/2); double a = sLat*sLat + sLon*sLon*cos(Lat1)*cos(Lat2); double c = 2 * atan2(sqrt(a), sqrt(1-a)); return c; } int main(int argc, char **argv) { double flattening = 1/298.257223563; double SemiMajorAxis = 6378137.0; double recipRo = M_PI/180; double Lat1,Lat2,Lon1,Lon2; double sLat1,sLat2,sLon1,sLon2; double Bo,Lo; Bo = 56*recipRo; Lo = 37*recipRo; Lat1 = 58*recipRo; Lat2 = 54*recipRo; Lon1 = 35*recipRo; Lon2 = 39*recipRo; FromEllipsToSphere(flattening,Bo,Lo,Lat1,Lon1,sLat1,sLon1); FromEllipsToSphere(flattening,Bo,Lo,Lat2,Lon2,sLat2,sLon2); double R = SpericRadius(SemiMajorAxis,flattening,Bo); cout.precision(12); cout<<"\nDistance = "<<R*Haversine(sLat1,sLon1,sLat2,sLon2)<<endl; cout<<"\nVERSION : "<<__VERSION__<<endl; system ( "PAUSE" ); return EXIT_SUCCESS; } А вот результат сравнения с Online geodesic calculations using the GeodSolve utility
Самый простой и короткий алгоритм, для решения твоей задачи - нужно переводить широту и долготу в в геоцентрическую прямоугольную СК (X, Y, Z), далее развернуть ее в горизонтальную (топоцентрическую) систему координат начальной точки. Углами разворота будут широта и долгота начальной точки. Уклонения отвесной линии можно не учитывать. --- Сообщения объединены, 3 мар 2015, Оригинальное время сообщения: 3 мар 2015 --- Можно поискать еще короче путь. Ищи учебники Машимова. Кажется у него были дифференциальные преобразования геодезических координат в топоцентрические.
А разность широты, долготы в данной записи координат дает именно угол дуги (расстояние на поверхности сферы)? или с этими цифрами(координатами) так нельзя? --- Сообщения объединены, 3 мар 2015, Оригинальное время сообщения: 3 мар 2015 --- Спасибо Вам за помощь, я правильно понимаю, что результаты оч. схожи при данном допущении: