Files
autopilot/dissertation/chapter_3/3.6_map_providers/3.6_map_providers.md
2026-04-01 14:00:38 +03:00

2.8 KiB
Raw Blame History

3.6 Поставщики карт

Система поддерживает два картографических источника: Яндекс.Карты и Google Maps. Соответствующие модули реализованы в файлах yandex_map.py и google_map.py.

\section{Яндекс.Карты}

Класс YandexMap обеспечивает взаимодействие с картографическим сервисом Яндекса:

\begin{itemize} \item Инициализация браузера Chrome в режиме максимального окна \item Закрытие боковой панели и элементов интерфейса \item Переход к заданным координатам на спутниковой карте \item Получение скриншотов текущего вида \item Программное перемещение карты \end{itemize}

\section{Google Maps}

Класс GoogleMap реализует аналогичный функционал для сервиса Google Maps:

\begin{itemize} \item Инициализация драйвера Chrome \item Открытие карты по заданным координатам и масштабу \item Закрытие информационных элементов интерфейса \item Получение скриншотов \item Перемещение карты для имитации движения \end{itemize}

\section{Формирование URL}

Оба класса используют функцию generateURL для формирования адреса карты:

\begin{itemize} \item Яндекс: \texttt{https://yandex.ru/maps/.../?l=sat&ll=lat,lon&z=zoom} \item Google: \texttt{https://www.google.com/maps/@lon,lat,zoom z} \end{itemize}

\section{Получение скриншотов}

Метод make_screenshot выполняет захват текущего вида карты. Для этого:

\begin{enumerate} \item Выполняется JavaScript-запрос для скрытия динамических элементов \item С помощью Pillow формируется изображение из видимой области браузера \item Изображение возвращается в формате PIL.Image \end{enumerate}

\section{Соотношение пикселей}

Каждый картографический сервис имеет собственное соотношение пикселей на метр, которое зависит от уровня приближения (zoom). Эти коэффициенты определяются константами в файле constants.py.