Как сохранить панораму с гугл карт
Перейти к содержимому

Как сохранить панораму с гугл карт

  • автор:

Записываем видео из Google Street View

Сама по-себе возможность, конечно же замечательная, но сайт не позволяет сохранять результаты экспериментов в виде роликов. Вот эту досадную неприятность решено было исправить, и не просто исправить, а реализовать в виде программки для iOS, помогая тем самым, превратить iPhone или iPad в устройство для создания, а не потребления, контента.
Как всё устроено
Итак, на сегодняшний день у нас есть несколько ресурсов, позволяющих снимать Стрит Видео. В первую очередь, это, hyperlapse.tllabs.io, который позволяет отметить 2 точки, проложить между ними маршрут и наслаждаться зацикленной анимацией.
image
Второй сайт, который позволяет смотреть стрит видео это http://track-kit.net
image
Этот сайт позволяет просматривать видео для созданных или импорированных треков. Несмотря на то, что Стрит Видео здесь не является основной функцией, можно сгенерировать прямую ссылку именно на видео для тека. Например, такую:
http://track-kit.net/maps_s3/index.php?track=8821.gpx&svv=134
Правда, на моём Маке более-менее работает только в Хроме.

  1. Проложить маршрут от точки А к точке Б. Желательно, отобразить доступность Гугл Стрит Вью.
  2. Загрузить кадры панорам
  3. Дать возможность пользователю отредактировать панорамы, например, направив камеру на какой-лиобо объект.
  4. Сгенерировать видео из набора кадров
  5. Решить ряд типичных для iOS проблемм.
Прокладываем маршрут

Для этого мы используем Google Maps SDK for iOS и Google direction API
С помощью Google direction API запрашиваем у Google набор точек между начальной и конечно точек пути в закодированном виде.
Google Maps SDK for iOS (класс GMSPath) понадобится чтобы перевести закодированый список точек который получили от Google в широту и долготу.
Для общения с Google используется AFNetworking.

Если загрузка прошла успешно в списке coordinatesArr мы храним набор координат точек нашего пути.
P.S. у Google direction API есть 1 нюанс — если необходимо провести маршрут не через 2, а скажем, через 20 точек, то придется делать несколько запросов для интервалов точек пути так как если передать в запрос через «&waypoints» большое количество промежуточных точек, Google может вернуть ошибку.

Загружаем панорамы

Для загрузки панорамы можно использовать запрос вида cbk0.google.com/cbk?output=json&ll=latitude,longitude
Он нам вернет информацию о ближайшей к точке панораме с координатами latitude,longitude.
Самое важное что мы можем получить это «panoId» — id нужной нам панорамы (помимо panoID мы можем получить так же информацию об углах смещения панорамы, которые могут пригодиться если надо будет повернуть панораму в определенном направлении):

Далее с помощью полученного ID панорамы мы можем через запрос:
cbk0.google.com/cbk?output=tile&panoid=panoid&zoom=zoom&x=x&y=y
получить уже необходимые нам тайлы панорамы, где panoId — это полученный ранее идентификатор панорамы, zoom — это масштаб панорамы (ее размер), x и y — это номера тайла панорамы по вертикали и горизонтали, при этом количество тайлов панорамы зависит от введенного нами зума. Например, если мы выберем zoom = 3, то панорама будет состоять из 7 тайлов в ширину и 3 в высоту.
То есть чтобы получить целую панораму нам надо загрузить все тайлы:

Таким образом, пройдясь по всем точкам полученного от Google маршрута, мы можем загрузить для них панорамы и далее отобразить их пользователю в виде видео.

Генерируем видео

Для этого нам понадобится библиотека AVFoundation:

От туда берем всего 3 класса:
AVAssetWriter — запись медиа данных в файл
AVAssetWriterInput — Добавляет пакет медиаданных в AVAssetWriter для записи в файл
AVAssetWriterInputPixelBufferAdaptor — предоставляет пакет видеоданных (CVPixelBuffer) для AVAssetWriterInput
Соответственно нам надо их где-то определить:

После этого все готово к записи видео.
В AVAssetWriterInput имеется функция:
(void)requestMediaDataWhenReadyOnQueue:(dispatch_queue_t)queue usingBlock:(void (^)(void))block
Которая, вызывает Block каждый раз когда нужна новая порция данных.

Скорость проигрывания видео контролируется с помощью переменной presentationTime, которая указывает время кадра в выходном файле
UIImage *image — это текущий кадр
Когда все кадры записаны в видео, мы сообщаем videoWriter и writerInput о том что необходимо остановить запись видео:

Функция получения CVPixelBufferRef с изображения:

Работа в фоновом режиме

Чтобы видео продолжало генерироваться когда наше приложение находится в фоновом режиме, можно использовать long-running background task для этого советую использовать неплохой класс
https://github.com/vaskravchuk/VideoMaker/

Добавляя немножко опций, получаем такой вот программный продукт.
itunes.apple.com/us/app/street-video-maker-free-create/id788610126?mt=8
image
Вот пример видео, созданного при помощи такой программы:

Как сохранить панораму с гугл карт

Привет всем.Начал делать модель фонтана «Театральный»,который у Большого театра в Москве.Подумал об освещении.В Google Maps много всяких панорам.Решил сделать HDR сам.Как делал.

(Мне HDR была нужна для цветных отблесков на фонтане в реальном месте. Т.е. основной свет подразумевается от фонарей фонтана,освещающих струи воды. Для дневных сцен этот способ с HDR думаю тоже можно использовать,увеличив количество файлов с разными EV,и при наличии основного ИС-Солнца.)

Сначала надо скачать программу Street View Download 360.Установить,запустить.

Теперь открываем сайт iStreetView.com.Перетаскивая человечка-найдем нужное место и панораму.

Нажав на ссылку-копируем.В открытой программе Street View Download 360 указываем путь для скачивания (указал что файл PNG),и вставляем скопированную ссылку.Жмем загрузить.

Открываем панораму в Adobe Photoshop CC.

Уменьшаем Экспозицию до -2.Сохраняем.(Сохранил под названием Fountain Theatrical Night-2.png.)

Откатываем назад и увеличиваем Экспозицию до +2.Сохраняем.(Сохранил как Fountain Theatrical Night+2.png.)Закрываем файл в Photoshop.

Получились три файла с разными экспозициями -2,0 (исходная панорама),и +2.Их надо объединить.

В Photoshop идем Файл\Автоматизация\Объединить в HDR Pro.

Жмем Обзор,выбираем три подготовленные файла.Жмем ОК.

Теперь для каждой панорамы указываем Экспозицию.Проверяем.

Переключаем режим на 32 бит.Жмем Тон в ACR.

В Camera Raw колдуем как захочется или лениво жмем Авто.

Всё.Готово.Теперь меняем режим опять на 32 бит.И сохраняем с расширением .HDR.

Что имеем?Имеем ночное HDRI.Всем желаю удачи,надеюсь что кому-то пригодится.Пока.

P.S.:И да,мощность излучения регулируйте в 3ds max в карте HDR — Output\Output Amount.

Комментарии (63)

Тем, что как вы не крутите кривые на жпеге, больше инфы чем есть вы не вытяните. Есть большая разница, снять 5 фотографий с разной экспозицией, каждая из которых хранит инфу в определённом диапазоне яркостей и попытаться выдоить эту инфу из жпега, сделав 5 разных копий, отличающихся яркостью.

Ну и ещё новость вспышка — возможности редактирования в фш ограничены и яркость больше 20 он вам не покажет и не сделает.

Где это всё вылезет? В первую очередь на отражающих поверхностях, имеющих матовость (да и на глянцевых тоже). Уже потом это повлияет на качество теней и прочего.
Как по мне, самая полезная часть урока — место, где выдираются панорамы из гуглстритвью. Дальше можно удалить.

Итак: есть 2 панорамы: одна нормальная, 2я та, которая по уроку: в нюке всё практически одинаково (небольшие разницы в яркости думаю из-за тонмаппинга (на самом деле нет) -https://dl.dropbox.com/s/v99ypusa8suvn5x/hdr_vs_fromjpg.png?dl=0
А теперь погрейдим их!https://dl.dropbox.com/s/mnu5nwte6tpn30j/hdr_vs_fromjpg_graded.png?dl=0
Да как так?! Я же в фш +2 ев сделал! Ну ладно, ну оно уж точно лучше чем жпег! https://dl.dropbox.com/s/tisyyi029hidu1v/jpg_vs_hdrjpeg.png?dl=0
А вот и нет. Ну ладно, это всё теория. Может и не нужна нам та самая хдр карта? Давайте ка сравним!
Оригинал https://dl.dropbox.com/s/9shyp7efo4uf8ho/original.png?dl=0
Из жпегов: https://dl.dropbox.com/s/m430gurer7p6tct/from_jpg.png?dl=0
Темновато. Давайте поднимем яркость! https://dl.dropbox.com/s/um71v9jt3yz01mp/from_jpg_x20.png?dl=0
Ну, хотя бы видно. Видно то, что мы получили непонятный синий цвет и полное отсутствие теней. Взгляните на исходную ХДР карту — тени там резкие и синий оттенок хоть и есть, но минимален.
Карта этаhttps://hdrihaven.com/hdri/?c=outdoor&h=colosseum

В общем — нельзя её использовать для дневных сцен. И для других тоже. Если выбора нет и есть только жпег — его и юзайте, без лишних телодвиженй!

истинная хдр отличается следующим:
8 битный jpg имеет 16 млн градаций цвета и заточен только под диапазон восприятия человеческого глаза
16 битная хдр — 281 474 976 710 656 градаций цвета (65536 в кубе) — что исключает залипы в темных областях, хайлайтах и в других цветовых диапазонах.так же исключает «срез» цвета во всех областях. по сути вы получаете плавно растянутый градиентик, которым можно уже освещать сцену.

про 32 бита на канал продолжать? )

«Так называемые полноцветные изображения с 24-битной цветовой глубиной (в рамках данной статьи они будут обозначаться аббревиатурой LDRI — Low Dynamic Range Imaging) тоже не могут претендовать на точность отображения перепадов освещенности, присущих окружающему миру. Появление HDRI-форматов (динамический диапазон которых исчисляется десятками порядков), описывающих цвет вещественными числами с плавающей запятой, является естественной попыткой преодоления ограничений, присущих традиционному целочисленному представлению цветовой информации.»
Вещественные числа для удобства могут быть представлены 32, 64 и 80-битными числами. Конкретно exr поддерживает
«OpenEXR is a high dynamic range raster file format, released as an open standard along with a set of software tools created by Industrial Light and Magic (ILM), under a free software license similar to the BSD license.[1]

It is notable for supporting multiple channels of potentially different pixel sizes, including 64-, 32- and 16-bit floating point values, as well as various compression techniques which include lossless and lossy compression algorithms. It also has arbitrary channels and encodes multiple points of view such as left- and right-camera images.[2]»

Можно ли себе на комп сохранить панорамы 360 с гугл карт?

Есть программа SAS Planet — она сохраняет локально открываемые тобой карты (в том числе спутник, но про панорамы не уверен, давно не пользовался). Т. е. первый раз просматриваешь с интернетом, а потом те же самые картинки берутся из локального кэша. Вроде бы бы была портативная версия.

Скачать всё полностью не получится, поскольку там огромный объём и даже просто хранить на компьютере такой объём данных (фото по всей планете) не выйдет. По автоматизации скачивания в пределах города или района лично мне ничего не известно.

Это возможно используя Google Earth Pro (скачать на русском).

Там можно выбрать панораму и она закешируется на вашем компьютере.

Кроме того, существует аналог под Андроид и iOS, а также дополнение к Chrome с похожим функционалом.

Как скопировать изображение из Google Maps

Видео: Как сохранить картинку с Яндекс/Гугл карты (Сентябрь 2022)

Одним из ограничений Google Maps является невозможность сохранения изображений карты. Если щелкнуть правой кнопкой мыши карту, откроется меню «Карты» вместо традиционного меню Windows, вызываемого правой кнопкой мыши. Однако сохранить карту не невозможно. Карты Google, как и все, что отображается на экране, могут быть захвачены с помощью кнопки «Печать экрана» на клавиатуре.

Кредит: Джек Холлингсворт / Фотодиск / Getty Images

Шаг 1

Перейдите к Google Maps.

Шаг 2

Введите местоположение, которое вы хотите сопоставить, в строку поиска и нажмите кнопку «Поиск на карте».

Шаг 3

Щелкните значок с двойной стрелкой, расположенной слева, в верхнем левом углу карты (при наведении курсора на значок появится надпись «Скрыть панель»). Это позволит увеличить карту Google, чтобы она соответствовала всей ширине экрана.

Шаг 4

Нажмите кнопку «F11» на клавиатуре, чтобы перевести браузер в полноэкранный режим. Обратите внимание, что карта на вашем экране стала еще больше.

Шаг 5

Нажмите кнопку «Печать экрана». Это скопирует ваш текущий вид в буфер обмена.

Шаг 6

Откройте Microsoft Paint, нажав «Пуск»> «Все программы»> «Стандартные» и выбрав «Paint».

Шаг 7

Нажмите «Редактировать»> «Вставить», чтобы вставить изображение буфера обмена в Paint. Сохраните файл.

Как скопировать изображение JPEG в документ Word

Как скопировать изображение JPEG в документ Word

JPEG — это графический формат, широко используемый для фотографий и публикации изображений в Интернете. С помощью Microsoft Word вы можете создавать и редактировать документы, а также делиться ими или распечатывать. Слово также .

Как сохранить изображение из слайд-шоу как изображение

При просмотре слайд-шоу вы можете сохранить определенные изображения на вашем компьютере. Независимо от того, какое слайд-шоу вы используете, есть метод, который лучше всего подходит для вашей ситуации .

Как скопировать спутниковое изображение из Google Maps

Как скопировать спутниковое изображение из Google Maps

Вы нашли спутниковое изображение, которое было бы абсолютно идеальным для использования в вашей презентации PowerPoint, в вашем блоге или на вашем веб-сайте, но как вы туда попали? С .

Добавить комментарий

Ваш адрес email не будет опубликован.