View on GitHub

Raster tiles chartplotter

Download this project as a .zip file Download this project as a tar.gz file

GaladrielMap License: CC BY-SA 4.0

Простой картплоттер (навигационно-картографическая система), ориентированный на любительское использование на маломерных судах.
Приложение может быть размещено на слабом сервере типа RaspberryPi, NAS или сетевом маршрутизаторе и предполагает использование с достаточно производительных клиентских устройств, преимущественно мобильных. Желательно применять планшет с большим экраном, однако пользоваться с телефона тоже вполне возможно. На клиентском устройстве требуется только наличие браузера – никаких приложений устанавливать не нужно.

v. 1.8

screen
Технически это веб-приложение – просмотрщик тайловых онлайн карт. При использовании с GaladrielCache становится возможным предварительное скачивание и последующий просмотр карт без подключения к сети Интернет.
Предполагается, что приложение функционирует в бортовой сети катера, яхты или автомобиля, поэтому никакого разграничения доступа к функциям не предусмотрено. Автор пользуется GaladrielMap на своей яхте Galadriel, где в качестве сервера применяется wi-fi маршрутизатор под управлением OpenWRT .

Внимание! Автор не несёт никакой ответственности за последствия использования GaladrielMap для навигации!

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

Возможности:

  1. Конфигурируемые пользователем локальные или сетевые карты
  2. Отображение положения
  3. Запись пути
  4. Отображение маршрутов, путевых точек и точек достопримечательностей
  5. Создание и редактирование маршрута
  6. Ввод и получение координат
  7. Прогноз погоды от Thomas Krüger Weather Service
  8. Отображение информации AIS
  9. Поддержка netAIS
  10. Режим “Человек за бортом!”
  11. Отдельная приборная панель, оптимизированная для устройств с экраном на “электронных чернилах” (E-Ink)
  12. Управление скачиванием карт
  13. Русский и английский интерфейс

Совместимость

Требуется Linux на сервере и более-менее современный браузер на клиентском устройстве.

Демо

Полнофункциональная демонстрация. Иногда там плавает виртуальный кораблик.

Готовые образы машин

Имется настроенный и готовый к запуску образ виртуальной машины в общепринятом формате, а также загрузочный образ для Raspberry Pi, также настроенный и готовый к работе с первого запуска. Образы содержат GaladrielMap, GaladrielCache, netAIS, gpsd, gpxlogger и всё остальное, что необходимо для функционирования полноценного бортового сервера.

Установка и конфигурирование:

Требуется веб-сервер под управлением Linux с поддержкой php. Скопируйте приложение и установите указанные ниже зависимости в желаемое место на веб-сервере.
Укажите пути и другие параметры в params.php

Аварийный набор

Однако, всё, что необходимо для установки приложения, включая зависимости, находится в архиве в каталоге emergencykit/. Нужно просто распаковать.
Можно скачать комплект без поддержки векторных тайлов (без шрифтов, значков и библиотек) – его размер менее 1MB, или полный комплект – размером более 4MB.

Зависимости и благодарности

Для установки зависимостей нужно сделать локальную копию каждого проекта в каталоге приложения так, как это описано на сайте проекта, а потом, при необходимости, откорректировать пути в index.php

Ещё благодарности

Карты

В GaladrielMap используются тайловые карты в разграфке, принятой для OSM. Основной формат – растровые тайлы, но могут быть использованы и векторные тайлы в формате Mapbox.
stacked maps
В сочетании с GaladrielCache (что предполагается по-умолчанию) одновременно может быть показано любой число карт, наложенных друг на друга (география + гидрография + погода, например) из сети Интернет и/или из локального хранилища.
Конфигурация карт определяется пользоватетем и описана в документации к GaladrielCache. Как минимум, среди карт уже есть Open Sea Map и Open Topo Map.

Векторные тайлы

GaladrielMap имеет некоторую поддержку векторных тайлов в формате Mapbox. Такие карты могут отображаться.
Описывающий карту файлMapbox style должен находиться в каталоге $mapSourcesDir GaladrielCache, и называться также, как файл источника карты, но с расширением .json. В файле Mapbox style можно использовать значки и шрифты (Sprites and glyphs) из каталога styles/ .

Отображение положения

GaladrielMap получает координаты, скорость, направление от работающего на сервере сервиса gpsd.
Positioning
Установка и конфигурирование gpsd описаны в документации к gpsd. Обычно никакой настройки не требуется: достаточно просто подсоединить приёмник ГПС в гнездо usb, и координаты начнут отображаться в GaladrielMap.
Если координаты имеются – карта всегда позиционируется на экране в соответсвии с текущим положением. Это поведение можно временно отключить в меню настроек Settings.
Также следование за курсором отключается, если открыты панели Route и Loader.

Текущий путь

GaladrielMap может показывать текущий путь по мере его записи.
Для записи текущего пути на сервере используется приложение gpxlogger из комплекта gpsd-clients, имеющегося в дистрибутивах, но устанавливаемого отдельно. Конфигурирование gpxlogger описано в документации к gpsd. Записью пути включается на вкладке Пути.
Вместо gpxlogger можно использовать любую другую работающую на сервере программу, записывающую текущий путь в формате gpx. Она указывается в файле настройки params.php.
Если запись текущего пути внезапно прервалась, и на диске остался некорректный файл gpx, его можно поправить, запустив

php chkGPXfiles.php

Текущий путь записывается в папку tracks (в папку, указанную в переменной $trackDir конфигурационного файла params.php).

Отображение маршрутов

GaladrielMap показывает маршруты и точки достопримечательностей, записанные в форматах gpx, kml и csv:
Display routes and POIs
Файлы располагаются на сервере в папке route (как она указана в файле конфигурации params.php). Откройте панель POI.

CSV

Текстовый файл в формате Comma-Separated Values – самый простой способ заранее подготовить список интересующих точек (POI) для предстоящего путешествия. Для создания такого файла нужен только текстовый редактор, хотя удобней будет любой табличный процессор.
Первой строкой в csv файле должны быть наименования колонок. GaladrielMap понимает следующие наименования:
"number","name","description","type","link","latitude","longitude"
хотя минимально-полезный набор состоит из
"name","latitude","longitude"
В файле возможны и другие колонки, но информация из них, скорее всего, на карте показана не будет.
Широту и долготу можно указывать почти в любом формате, как в градусах, минутах и секундах – 61°04’50”N, например, так и в десятичных градусах.
Примером реального использования файла csv для обмена информацией о маринах и природных стоянках на озере Сайма в Финляндии может быть начинание SaimaaPOI. Там же имеется файл csv с точками фотографирования и с ссылками на фотографии.
Файл с путевыми точками надо положить в папку route на сервере (в папку, указанную в переменной $routeDir конфигурационного файла params.php). Следует избегать совпадений имён файлов в папках route и tracks.

Создание и редактирование маршрута

Планирование маршрута происходит на клиентском устройстве, при этом имеется возможностью сохранить маршрут на сервере в формате gpx.
Creating a route
Инструменты для планирования и редактирования маршрута находятся на панели Маршрут. Созданный маршрут автоматически сохраняется на клиентском устройстве (и на выключенном), а на сервер сохраняется нажатием кнопки.
Этот инструмент может быть использован и для редактирования существующего маршрута в формате gpx, загруженного с сервера через панель Маршруты . Если редактируемый маршрут показывается ещё на каком-то устройстве, то после сохранения на сервере он сразу отобразится на этом устройстве в изменённом виде.
Это может быть полезно, если нужно из тёплой рубки уточнить маршрут находящемуся под ветром и дождём рулевому.
Однако, инструмент имеет только самую базовую поддержку gpx. Так, <metadata> не поддерживаются, любимые GARMIN <extensions> не поддерживаются тоже. Поэтому следует быть осторожным при редактировании сторонних файлов gpx.
Также следует проявлять осторожность (и отключить возможность автоматического обновления маршрутов в params.php), если существует возможность неадекватного редактирования маршрута со стороны детей или гостей.

При наличии Интернет можно искать объекты по географическому наименованию или почтовому адресу, и наоборот – получить ближайшее к координатам центра экрана географическое название или адрес. Для этого воспользуйтесь текстовым полем ввода.

Ввод и получение координат

Для получения текущего положения нажмите на цифры координат на панели Приборная панель . Координаты будут скопированы в буфер обмена. Можно вставить их в sms, мессенджер или письмо.
Аналогично, координаты маркированной точки на карте могут быть получены нажатим на наименование точки в всплывающем окне этой точки.

Получить координаты произвольной точки на карте можно, открыв панель Маршрут. Координаты перекрестия будут отображаться в текстовом поле. Если же, наоборот, ввести в это поле какие-либо координаты (широту и долготу, почти в любом формате), и нажать кнопку рядом – карта переместиться так, что перекрестие будет указывать в эту точку. Кнопки над текстовым полем помогут ввести знаки градусов и минут.

Прогноз погоды

Прогноз погоды от Thomas Krüger Weather Service Weather forecast
На трое суток, с интервалом в 6 часов. Доступны сила ветра, давление, температура, осадки и волнение моря в любых сочетаниях.

Отображение информации AIS

AIS info
Сбор данных AIS осуществляется от gpsd, которому может понадобится некоторая настройка для получения данных от приёмопередатчика AIS. Если же имеется только usb приёмник AIS – никакой настройки не требуется.
Получение информации AIS по умолчанию отключено. Его можно включить, раскомментировав строку с переменной $aisServerURI в файле params.php.

Поддержка netAIS

netAIS – сервис обмена информацией о местоположении через интернет. Обмен идёт внутри приватных групп, никаких централизованных серверов не нужно.
netAIS
GaladrielMap поддерживает все возможности сервиса, отображая и нестандартные статусы и текстовые сообщения.

Человек за бортом

Control Loader
Нажатие на кнопку MOB button включает режим “Человек за бортом!” При этом активируется запись маршрута, ставится маркер в точке нажатия на кнопку и на карте рисуется линия от текущего положения к точке маркера. Информация сохраняется на сервере. На открывшейся панели отображается направление и расстояние до маркера.
Имеется возможность установить ещё маркеры и передвинуть существующие. Линия от текущего положения протягивается к последнему установленному маркеру или к тому, на который нажали.
Информация “Человек за бортом!” и все её изменения распространяется на все подключенные компьютеры, и может быть изменена с любого из них.
Для завершения режима “Человек за бортом!” нужно предварительно нажать на серую точку слева от кнопки.

Приборная панель

dashboard.php – отдельное приложение, предназначенное для показа некоторых имеющихся приборов на очень слабых и/или медленных клиентских устройствах. Например, на читалке электронных книг с E-ink экраном: Dashboard velocity
Dashboard heading
Dashboard depth
Показывается истинная скорость, истинный или магнитный курс и глубина. Разумеется, соответствующие приборы должны быть подключены к gpsd. Только с приёмником геопозиционирования доступны истинный курс и скорость.
Можно выставить сигнализацию на глубину и скорость.
Dashboard alarm
Необходимо указать в настройках браузера разрешение воспроизводить звук.
Это приложение не использует никакого хитрого javascript и никаких замысловатых стилей.

Загрузчик GaladrielCache

Control Loader
Указывается регион для загрузки, после чего сформированное задание передаётся на сервер и там запускается загрузчик. Можно следить за прогрессом скачивания.
Загрузчик работает автономно, и переживёт выключение сервера – после включения он запустится автоматически и будет работать до тех пор, пока не скачает всё указанное. Не указывайте пол-планеты: места на диске не хватит!
Чтобы видеть, какие участки карты уже есть в кеше – можно включить показ схемы покрытия.

Поддержка

За чашку кофе через ЯндексДеньги или PayPal можно получить консультации по адресу galadrielmap@gmail.com