Как наложить GPS треки на карту

  Linukso

Задача довольно простая: на входе имеем много GPS треков, на выходе хотим получить набор растровых тайлов, готовых для использования в качестве оверлей слоя поверх OSM карты. Для этого воспользуемся утилитами Эрика Фишера datamaps.

Устанавливаем необходимые пакеты (archlinux):

$ yaourt --noconfirm -S datamaps-git pngquant

Далее парсим треки:

$ find tracks -name '*.gpx' -print0 | \
    xargs -0 datamaps-parse-gpx | \
    awk '{print $1,$2,":350"}' | \
    datamaps-encode -z20 -m8 -o datamaps/gpx.dm

И рендерим тайлы:

$ datamaps-enumerate -s -z18 datamaps/gpx.dm | \
    xargs -L1 -P8 bash -c 'mkdir -p tiles/$1/$2; \
    datamaps-render -B 13:1:1.23 -L3 -g -t0 -C50 $0 $1 $2 $3 | \
    pngquant 256 > tiles/$1/$2/$3.png'

Рендеринг займет много времени, можно пойти попить кофе.

В документации к утилитам более чем подробно описано назначение всех параметров. Единственно поясню, что awk '{print $1,$2,":350"}' при парсинге необходим чтобы сделать все треки одного цвета - пурпурными.

Загружаем готовые тайлы на серевер, в моём случае тайлы доступны по ссылке:

https://tiles.sikmir.ru/{z}/{x}/{y}.png

Теперь можно добавить оверлей слой с треками в nakarte.me, результат тут.

Также тайлы можно запаковать в MBTiles:

$ yaourt --noconfirm -S mbutil
$ mb-util tiles mytracks.mbtiles

Ссылки

  1. datamaps
  2. gpx-layer
  3. mbutil
  GIS
blog comments powered by Disqus