|
|
|
Солнце на Google Street View |
|
|
|
|
Обновлено:
============================ Сервис сломан :-/
10 июля 2019 года. За последний месяц мой сервис накрылся медным тазом. По итогу общения с техподдержкой Гугла выяснилось, что сторонняя библиотека, которую я использовал для подкачки панорам из Google Street View, написана криво и использует неверные обращения к API, и после очередных обновлений гугла закономерно сломалась. К сожалению, я пока не уверен, что буду искать другую библиотеку или погружаться в премудрости API гугла, чтобы самостоятельно починить сервис. Соответственно на текущий момент есть следующий выбор:
* посмотреть видеоматериал по сервису: Движение солнца на панорамах Гугл-карт (30 дек 2018)
* покрутить аналеммы без Гугл-стрит-вью: Повращай солнце! (8 ноя 2015)
Ниже оставляю старый текст, утративший актуальность. ============================
Насчёт изменения политики Гугла:
Раскрыть 2018-05-03 -> Пришло письмо от гугла, дескать, привяжите платёжный эккаунт с картой, и не волнуйтесь, у вас будет бесплатный 200-долларовый лимит в месяц. Начал я делать этот платёжный эккаунт, и там какие-то странности (не "Личный", а "Бизнес", ничего не понял, закрыл). Пока отложил, и значит после 11 июня 2018 года сервис может завалиться. Подождём, посмотрим. Если завалится, и люди будут просить восстановить, тогда вернёмся к вопросу. Связь со мной: либо внизу (вк комментарии), либо здесь ещё пара способов. 2018-08-17 -> Замечены приколы - мелкая карта грузится с надписью " При загрузке Google Карт на этой странице возникла проблема.", но если нажать ОК, то мы получаем затемнённую карту, и остальной функционал никак не страдает: местность ищется как и прежде, сферические панорамы подгружаются. Если это все проблемы, то и бог с ним, пусть так. Осуществил давнюю задумку. Удалось совместить уличные панорамы от гугла с моим софтом, отображающим ход солнца и аналеммы для выбранной географической точки.
Сначала дам ссылку на сервис и опишу управляющие клавиши (в основном это клавиши со стрелками), а затем расскажу некоторые детали.
daybit.ru/sun
* стрелка Вправо - увеличивает время на 1 час (с Shift - поминутно), стрелка Влево - уменьшает; * стрелка Вверх переходит на 22 число следующего месяца, с Shift - перемещает в среднем по неделе, точнее по 1, 8, 15, 22 числам месяцев; стрелка Вниз - то же самое в обратную сторону; * A - вкл/выкл азимутальной сетки координат; * I - вкл/выкл пояса аналемм; * U - увеличение часового пояса (с Shift - уменьшение); при этом отдельно выделяется не только гринвичская полуденная аналемма, но и локальная 12 часовая для выбранного часового пояса; * = - вкл/выкл правого окошка с картой гугл.
Стартовая точка - около башни Останкино.
Интересующий пункт выбирайте либо кликом по карте (туда устанавливается маркер), либо поиском (вбиваете координаты в формате "широта, долгота" или название). Соответствие панорамы маркеру текущей позиции не гарантировано, поскольку покрытие мира панорамами не полное. Более того, это один из существенных недостатков для наших ближайших соседей: Казахстана и Белоруссии. Там Street View отсутствует:
Координаты (географические, а также - азимутальные для положения солнца), дата и время виртуального солнца представлены в текстовом блоке слева сверху.
***********************
Теперь чуть подробнее о предыстории.
В январе я нашёл прожку StreetView Grabber, с помощью которой оказалось легко тащить сферические панорамы с гугло-карт, причем эти панорамы были сразу в эквидистантном формате. Оставалось лишь совместить их с моим скриптом по азимуту - и готово. Свои изыскания я закинул в несколько мест, например на пикабу, и народ вроде даже оценил.
Потом в конце января я закинул в яндекс предложение об отображении хода солнца на яндекс-картах (уличные панорамы), дав ссылку на уже сделанную единичную панораму, они ответили через несколько дней: "Спасибо за действительно очень интересное предложение, но пока, к сожалению, мы не имеем возможности для создания такого функционала на карте." И предложили свой АПИ для самостоятельной разработки. Я бы может и воспользовался, но по прошествии времени мне вдруг пришло в голову, что наверняка кто-то уже постарался и совместил движок threejs (на котором у меня закручена солнечная механика) с гугл-панорамами. Так и вышло - с ходу попались две разработки, я их покрутил-повертел, и в результате остановился на этой - GSVPano.js. Состыковать в лоб не вышло, поэтому к гугло-панорамному движку стал постепенно прикручивать солнце, стороны света и прочее, перетаскивая из своего старого скрипта и удаляя ненужный функционал - например возможность менять клавишами широту и долготу (ведь теперь есть жесткая привязка к координатам).
Если с азимутом (heading) я разобрался довольно быстро, то на двух других углах, tilt и roll, я подвис на отличненько. Tilt - это угол наклона вниз и вверх по ходу движения гугломобиля, то есть с горки или в горку. Roll - противоположный наклон, вокруг оси, продольной движению гугломобиля. Там значения достигали всего лишь нескольких градусов, в принципе можно было проигнорировать, но во-первых было жалко вот так выкидывать небесполезную информацию, во-вторых на самом сайте гугло-карт эти же панорамы демонстрировали отличную параллельность уровня горизонта верхнему и нижнему краям монитора, а в моем движке горизонт был местами, что называется, неприлично завален.
Начал разбираться. Выяснилось, что последовательное применение вращения вокруг трех осей - это кошмар какой-то. ) Если двумя, roll и tilt, поскольку они малы, довольно быстро удалось совместить горизонт с моим горизонтом, то применение третьего вращения (heading - азимут) превращало горизонт в какую-то фигню. Причём мне было непонятно, как это вообще возможно, ведь если я вращаю панораму вокруг вертикальной оси, то уже совмещенный горизонт не должен уплывать. Наконец прикрутил к управляющим клавишам все эти вращения, и натурально обалдел. Там не просто странные вращения получались, а вообще какие-то хитрые восьмерки, вплоть до отсутствия всякого вращения.
Как потом выяснил, это отсутствие вращения вокруг одной из осей называется Gimble lock - вот занятный видос на эту тему. Также понял, что надо использовать неведомые мне катернионы, посмотрел как это мне делать в threejs, нашел реализацию, из которой и вытащил нужный мне код.
В общем, я лишь пощупал тему катернионов, и, честно признаться, не особенно-то её понял. В частности, эти катернионы мне конечно помогли, но продолжили странное поведение, однако мне удалось в первом приближении решить проблему "катернионским" поворотом вокруг смещённой (предыдущими двумя поворотами тилт и ролл) вертикальной оси, чем я и удовольствовался.
Все свои изыскания по нахождению горизонта я проводил на виртуальном берегу Черного моря, "катаясь" по дороге вдоль Большого Сочи. Там на панорамах часто попадается морской горизонт (что удобно для сверки с моим горизонтом), а также тилты и роллы довольно заметны, поскольку дорога петляет вдоль холмов.
В общем, теперь эту софтину нужно тестировать, искать баги, исправлять. В частности один баг я сегодня уже обнаружил около Эйфелевой башни - в одной точке не было информации об азимуте, и панорама оказалась повёрнута неверно относительно аналемм - разумеется это никуда не годится, буду исправлять. Найдёте ещё баги - рассказывайте.
__________________
2018-12-31 Сделал видео по сервису: https://www.youtube.com/watch?v=WUY8Hgoh004
|
|
|
|
Просмотров: 14458 |
|
|
|
----
|
|
|
Архив сайта |
|
|
|
|
|
|
|