• Как перевести широту и долготу в пиксели?

    fedorez
    @fedorez
    Хатуль мадан
    в общем да.
    а если точность нужна то всё посложнее будет.
    земля не круглая, она геоид, на практике юзают эллипсоид. от поставщика данных зависит какой.
    географические координаты переводят в плоские по довольно громоздким формулам согласно ГОСТ Р 51794-2008

    ну а потом согласуете эти плоские координаты со своими пикселями в зависимости от разрешения и окна просмотра

    я когда-то плотно сидел на этой теме и написал библиотеку на C# которая расчёт по этим формулам обеспечивала.
    вот вам оттуда кусок
    простите за столь неряшливое оформление, валяюсь болею, не имею доступа к нормальному коду, выдрал из старого архива, пишу через утюг.
    но думаю разберётесь

    spoiler
    /// <summary>
    		/// Возвращает плоскую координату X для пары угловых координат (зона проекции определена константой)
    		/// </summary>
    		/// <param name="Bd">Широта, град</param>
    		/// <param name="Ld">Долгота, град</param>
    		/// <returns></returns>
    		static public double flat_x(double Bd, double Ld)
    		{
                int N = 6;
                //int N = GetProjectionZone(Ld);
    
    			return flat_x(Bd, Ld, N);
    		}
    
    		/// <summary>
    		/// Возвращает плоскую координату X для пары угловых координат в заданной зоне проекции
    		/// </summary>
    		/// <param name="Bd">Широта, град</param>
    		/// <param name="Ld">Долгота, град</param>
            /// <param name="N">Зона проекции</param>
    		/// <returns></returns>
    		static public double flat_x(double Bd, double Ld, int N)
    		{
    			double b, L, l_rad;
    			b = Bd * Math.PI / 180;
    			L = Ld * Math.PI / 180;
    			l_rad = (Ld - (3 + 6 * (N - 1))) / 57.29577951;
    			double Result, R1, R2, R3, R4, M1, M2;
    			R1 = 1594561.25 + 5336.535 * Math.Pow((Math.Sin(b)), 2) + 26.79 * Math.Pow((Math.Sin(b)), 4) + 0.149 * Math.Pow((Math.Sin(b)), 6);
    			R2 = 672483.4 - 811219.9 * Math.Pow((Math.Sin(b)), 2) + 5420.0 * Math.Pow((Math.Sin(b)), 4) - 10.6 * Math.Pow((Math.Sin(b)), 6);
    			R3 = 278194 - 830174 * Math.Pow((Math.Sin(b)), 2) + 572434 * Math.Pow((Math.Sin(b)), 4) - 16010 * Math.Pow((Math.Sin(b)), 6);
    			R4 = 109500 - 574700 * Math.Pow((Math.Sin(b)), 2) + 863700 * Math.Pow((Math.Sin(b)), 4) - 398600 * Math.Pow((Math.Sin(b)), 6);
    			M2 = (R2 + (Math.Pow(l_rad, 2)) * (R3 + (Math.Pow(l_rad, 2)) * (R4)));
    			M1 = (R1 + (Math.Pow(l_rad, 2)) * M2);
    			Result = 6367558.4698 * b - Math.Sin(2 * b) * (16002.89 + 66.9607 * Math.Pow((Math.Sin(b)), 2) + 0.3515 * Math.Pow((Math.Sin(b)), 4) - Math.Pow(l_rad, 2) * M1);
    			return Result;
    		}
    
    		/// <summary>
            /// Возвращает плоскую координату Y для пары угловых координат (зона проекции определена константой)
            /// </summary>
    		/// <param name="Bd">Широта, град</param>
    		/// <param name="Ld">Долгота, град</param>		
    		/// <returns></returns>
    		static public double flat_y(double Bd, double Ld)
    		{
                int N = 6;
                //int N = GetProjectionZone(Ld);
    			return flat_y(Bd, Ld, N);
    		}
    
    		/// <summary>
            /// Возвращает плоскую координату Y для пары угловых координат в заданной зоне проекции
            /// </summary>
    		/// <param name="Bd">Широта, град</param>
    		/// <param name="Ld">Долгота, град</param>
    		/// <param name="N">Зона проекции</param>
    		/// <returns></returns>
    		static public double flat_y(double Bd, double Ld, int N)
    		{
    			double b, L, l_rad;
    			b = Bd * Math.PI / 180;
    			L = Ld * Math.PI / 180;
    			l_rad = (Ld - (3 + 6 * (N - 1))) / 57.29577951;
    			double Result, R1, R2, R3, R4, M1;
    			R1 = 6378245 + 21346.1415 * Math.Pow((Math.Sin(b)), 2) + 107.159 * Math.Pow((Math.Sin(b)), 4) + 0.5977 * Math.Pow((Math.Sin(b)), 6);
    			R2 = 1070204.16 - 2136826.66 * Math.Pow((Math.Sin(b)), 2) + 17.98 * Math.Pow((Math.Sin(b)), 4) - 11.99 * Math.Pow((Math.Sin(b)), 6);
    			R3 = 270806 - 1523417 * Math.Pow((Math.Sin(b)), 2) + 1327645 * Math.Pow((Math.Sin(b)), 4) - 21701 * Math.Pow((Math.Sin(b)), 6);
    			R4 = 79690 - 866190 * Math.Pow((Math.Sin(b)), 2) + 1730360 * Math.Pow((Math.Sin(b)), 4) - 945460 * Math.Pow((Math.Sin(b)), 6);
    
    			M1 = Math.Pow(l_rad, 2) * (R2 + Math.Pow(l_rad, 2) * (R3 + Math.Pow(l_rad, 2) * (R4)));
    			Result = (5 + 10 * N) * Math.Pow(10, 5) + l_rad * Math.Cos(b) * (R1 + M1);
    			return Result;
    		}
    
            /// <summary>
            /// Возвращает значение зоны проекции для заданного значения долготы
            /// </summary>
            /// <param name="Ld">Долгота, град</param>
            /// <returns>Значение зоны</returns>
            static public int GetProjectionZone(double Ld)
            {
                return Convert.ToInt32(Microsoft.VisualBasic.Conversion.Fix((6 + Ld) / 6));
            }
    
            /// <summary>
            /// Возвращает значение зоны проекции, пригодное для проецирования большинства из массива долгот
            /// </summary>
            /// <param name="longitudes">Массив долгот, град</param>
            /// <returns></returns>
            static public int GetProjectionZone(double[] longitudes)
            {
                // Значения зон
                List<int> lst_values = new List<int>();
                // Количество вхождений
                List<int> lst_valueCounts = new List<int>();
    
                foreach (double longitude in longitudes)
                {
                    // Зона для текущей долготы
                    int currentN = GetProjectionZone(longitude);
    
                    // Если значение новое, то занесем его в список и создадим нулевой счетчик этого значения
                    if (!lst_values.Exists(p => p == currentN))
                    {
                        lst_values.Add(currentN);
                        lst_valueCounts.Add(0);
                    }
    
                    int index = lst_values.IndexOf(currentN);   // Иднекс этого значения
                    lst_valueCounts[index] += 1;                // Увеличим счетчик этого значения
                }
    
                // Индекс значения с максимальным вхождением
                int maxIndex = lst_valueCounts.IndexOf(lst_valueCounts.Max());
    
                return lst_values[maxIndex];
            }
    
    		static public double DegreesMinutesToDouble(int degrees, double minutes)
    		{
    			return DegreesMinutesSecondsToDouble((double)degrees, minutes, 0);
    		}
    
    		static public double DegreesMinutesSecondsToDouble(int degrees, int minutes, double seconds)
    		{
                return DegreesMinutesSecondsToDouble((double)degrees, minutes, seconds);
    		}
    
            static public double DegreesMinutesSecondsToDouble(double degrees, double minutes, double seconds)
            {
                minutes += seconds / 60;
    
                degrees += minutes / 60;
    
                return degrees;
            }
    }

    Ответ написан
    Комментировать
  • Отличается ли производительность OS X при чистой установке и обновления через App Store?

    fedorez
    @fedorez
    Хатуль мадан
    как правило нет.
    хотя раз в несколько мажорных релизов полезно полезно ставить систему начисто - какой-то хлам всё же накапливается, некие тормоза могут появляться.
    Ответ написан
    Комментировать
  • Как заставить старичка iPad2 работать с домашним Wi-Fi?

    fedorez
    @fedorez
    Хатуль мадан
    Так может не в айпаде дело? Для начала можно попробовать прошить роутер свежей прошивкой. Помню что с (d,tp)-link-ами это часто решало все странные сетевые проблемы...
    Ответ написан
    Комментировать
  • Как добавить в массив элементы?

    fedorez
    @fedorez
    Хатуль мадан
    Зачем вам массив? Юзайте список, удобнее. Если вам потом нужно будет взаимодействовать с кодом, которому нужен массив - всегда есть ToArray.
    Ответ написан
    Комментировать
  • На какую специальность учиться в универе, чтобы ремонтировать телефоны,пк,телевизоры?

    fedorez
    @fedorez
    Хатуль мадан
    Учиться в университете на ремонтника - это оверкилл.
    Курсы, технарь.
    Ну а вообще у нас в ТРТУ была специальность "Бытовая радиоэлектронная аппаратура", мы их ремонтниками называли
    Ответ написан
    Комментировать
  • Как в windows работать с программами под Mac OS?

    fedorez
    @fedorez
    Хатуль мадан
    1)хакинтош
    2)качнуть на торрентах готовую настроенную виртуалку и запускать её у себя.
    3)аренда онлайн виртуалки или железной машины Mac с удалённым доступом к ней (сервисы легко гуглятся)

    практичней всего первые два.
    Ответ написан
    Комментировать
  • Можно ли как нибудь начать работу на фриланс биржах без знания английского?

    fedorez
    @fedorez
    Хатуль мадан
    Можно. Мой знакомый всё через гуглтранслейт делает(уровень знания языка порядка "ландэн из э кэпитэл ") Пробуйте.
    Ответ написан
  • Занижают ли мне зарплату?

    fedorez
    @fedorez
    Хатуль мадан
    Ищите удалёнку.
    Или переезжайте.
    И.
    Забейте на сопли и псевдоэтику. Комсомол давно отменили. Работодатель вам не отец. Вас держат не за красивые глаза и не из благотворительности, а с целью. Вас пошлют лесом как только станете не нужны.
    Что вы должны - записано в договоре.
    Думайте о себе. Побольше цинизма и реализма.
    Ответ написан
    Комментировать
  • Как разогнать macMini (i5 2.6GHz 8gb(1600MHz DDR3) Intel Iris 1536MB )?

    fedorez
    @fedorez
    Хатуль мадан
    После установки ssd мой макмини взлетел просто. Притом что с 8 гигами, как у вас - и тормозил даже интерфейс системы. Системные Настройки с пол-минуты скакали. Да, винт - крайне узкое место. Меняйте.
    Ответ написан
  • Что нужно для разработки на IOS-MAC OS?

    fedorez
    @fedorez
    Хатуль мадан
    Ноутбук хороший, для разработки сгодится. iMac покупать не требуется, это лишнее. Периферию можно купить по желанию, это просто вопрос некоторого удобства. Не критично.
    А вот что купить желательно - айфон. Эмулятор это хорошо, но некоторые моменты интерфейса не прочувствуешь, пока не возьмёшь в руки реальное устройство. Плюс, например, эмулятор не позволит отладить работу с камерой.
    В общем, айфон желателен. Остальное на вкус и цвет.
    Ответ написан
  • Как сделать анимацию в macOS?

    fedorez
    @fedorez
    Хатуль мадан
    Ответ написан
    Комментировать
  • Какой macbook pro взять за 500$(2011-2012)?

    fedorez
    @fedorez
    Хатуль мадан
    У меня 4000 в разработке тянет два fhd монитора без каких-либо проблем.
    Ответ написан
    Комментировать
  • Cloud MAC OS для разработки?

    fedorez
    @fedorez
    Хатуль мадан
    всё есть. сервисов, в которых можно удалённо арендовать виртуалку или даже железный мак с полностью настроенной средой хватает.
    Цены - от 10-15 $ в неделю до 25-50$ в месяц. платите, подключаетесь тимвьювером и работаете. я считаю что не так уж и неподъёмно.

    первый попавшийся тыц
    их таких много, гуглите
    ну или бесплатный вариант - рутрекер, там качаете готовую настроенную виртуалку с макосью - год назад на курсах по ios - разработке у многих ребят такое видел, для учёбы вполне нормально
    Ответ написан
    1 комментарий
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    fedorez
    @fedorez
    Хатуль мадан
    Елки зеленые. Раз в пару месяцев появляется тема, собирает массу ответов, висит в топе несколько дней и так до следующего раза))
    Ну гляньте поиском...
    Кратко - да, проблема есть. Но если ты не тупой, не размяк мозгом и профпригоден, живёшь в городе где фирм больше трёх, то кадровый голод в индустрии позволяет класть на неё большой болт. Ну не возьмут вас в пару мест из-за этого. Будет у вас пара отказов из пяти таковых по этой причине. Ну придёте туда где нет таких загибов, и всё.
    А лучше быть хорошим специалистом в востребованной области, знать английский - пофиг вам будет на эти местечковые комплексы.
    Как-то так.
    Ответ написан
    1 комментарий
  • Прокатит ли Macbook 12 для программиста?

    fedorez
    @fedorez
    Хатуль мадан
    Если макбук то прошку лучше смотрите, или эйр. Притом от 256 жесткий, чтобы винда в буткамп или виртуальная комфортно жила.
    Ну или йога, да.
    Хотя моё мнение по прежнему за макбук - потому как более универсальное решение. Потому что макбук после некоторых манипуляций - это и хороший windows- ноут, а вот из виндобуков макбук... неоднозначный, так скажем.
    Кто вас знает, вдруг вас на разработку под iOS потянет...
    Ответ написан
    Комментировать
  • Отвлекаться ли на другие языки программирования?

    fedorez
    @fedorez
    Хатуль мадан
    1. Откройте работный сайт для той местности где планируется искать работу, и посмотрите кого ищут и что хотят .
    2. Да
    Ответ написан
    Комментировать
  • Какие есть книги или статьи для развития критического мышления?

    fedorez
    @fedorez
    Хатуль мадан
    Вадим Макишвили. Большая книга манипуляций.
    Разбор и распознавание манипулятивных атак, которые направлены на людей в наше время.
    Вадим известен по своему видео "36".
    Ответ написан
    Комментировать
  • Мотивация, скачу по технологиям. Как остановиться на одном?

    fedorez
    @fedorez
    Хатуль мадан
    Почему вы считаете что это проблема? Ищете себя, это нормально.
    Нагуляетесь, определитесь.
    А так каждый будет хвалить своё))
    Лично я считаю что лучше мобайла, особенно яблочного, ничего не бывает. Но многие не согласятся, и это хорошо - у них своя звезда путеводная) Так и вы свою найдёте
    Ответ написан
    Комментировать
  • Как вернуть El Capitan вместо Sierra или вернуть iMac Late 2015 к заводским настройкам?

    fedorez
    @fedorez
    Хатуль мадан
    можно с флешки
    можно Shift-Option-Command-R на рестарте

    вообще советую пользоваться тайм-машиной. практично.
    Ответ написан
    Комментировать
  • Как понять/освоить паттерны проектирования?

    fedorez
    @fedorez
    Хатуль мадан
    Книжку от Head First почитайте для начала. Если не идёт более академичное чтиво.
    Ответ написан
    Комментировать