Часть 4: Генерация gpx-файлов.

В третьей части был описан сервис, который получает координаты и сохраняет их в MariaDB базе.

Теперь опишу скрипты, которыми я генерирую gpx-файлы.

Скрипт db2gpx.sh, который генерирует gpx:

#!/bin/bash

if [ "$2" == "" ]
then {
  /usr/bin/echo "Usage: ./db2gpx.sh clientname trackname"
} else {
  CLIENT=$1
  TRACKNAME=$2
  MYSQL_DB=gpsdb
  MYSQL_HOST=127.0.0.1
  MYSQL_USER=dbuser
  MYSQL_PASS=dbpass
  MYSQL_TABLE=track

  GPXHEADER="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n
  <gpx\n
  xmlns=\"http://www.topografix.com/GPX/1/1\"\n
  version=\"1.1\"\n
  creator=\"Wikipedia\"\n
  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n
  xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd\">"

  GPXBODY="\t<metadata>\n
  \t\t<name>$1</name>\n
  \t</metadata>"

  TIME=`/usr/bin/echo $1 | /usr/bin/awk '{print substr($0,1,4) "-" substr($0,5,2) "-" substr($0,7,2) "T" substr($0,9,2) ":" substr($0,11,2) ":" substr($0,13,2) "Z"}'`

  /usr/bin/echo -e $GPXHEADER
  /usr/bin/echo -e "\t<time>$TIME</time>"
  /usr/bin/echo -e $GPXBODY
  /usr/bin/echo -e "\t<trk>\n\t\t<name>exercise</name>\n\t\t<trkseg>"

  ### SQL
  /usr/bin/mysql -N --user=$MYSQL_USER --password=$MYSQL_PASS --host=$MYSQL_HOST --database=$MYSQL_DB --execute="SELECT lon, lat, alt, pdate, ptime FROM $MYSQL_TABLE WHERE client=\"$CLIENT\" AND dbid=\"$TRACKNAME\" ORDER BY pid" | /usr/bin/awk '{print "\t\t\t<trkpt lat=\""$2"\" lon=\""$1"\">\n\t\t\t\t<time>"$4"T"$5"Z</time>\n\t\t\t\t<ele>"$3"</ele>\n\t\t\t</trkpt>"}'
  /usr/bin/echo -e "\t\t</trkseg>\n\t</trk>\n</gpx>"
}
fi

Скрипт generateGPX.sh, который запускает генерирование треков:

#!/bin/bash

MYSQL_DB=gpsdb
MYSQL_HOST=127.0.0.1
MYSQL_USER=dbuser
MYSQL_PASS=dbpass
MYSQL_TABLE=track

# На основе треки, созданных раньше этой даты, не будут генерироваться gpx-файлы
# Здесь за 2 месяца до текущей даты.
MINDATE=`/usr/bin/date -d "-2 month" "+%Y%m%d%H%M%S"`

# Получаем список клиентов, которые загружали треки
CLIENTS=`/usr/bin/mysql -N --user=$MYSQL_USER --password=$MYSQL_PASS --host=$MYSQL_HOST --database=$MYSQL_DB --execute="SELECT DISTINCT client FROM $MYSQL_TABLE"`

for CLIENT in $CLIENTS
do
  # Получаем список доступных треков.
  TRACKS=`/usr/bin/mysql -N --user=$MYSQL_USER --password=$MYSQL_PASS --host=$MYSQL_HOST --database=$MYSQL_DB --execute="SELECT DISTINCT dbid FROM $MYSQL_TABLE WHERE client=\"$CLIENT\" ORDER BY dbid DESC"`
  for TRACK in $TRACKS
  do
    if [ $TRACK -gt $MINDATE ]; then {
      # Генерируем gpx-файлы.
      ./db2gpx.sh $CLIENT $TRACK > $CLIENT-$TRACK.gpx
    }; fi
  done
done

Добавим права на запуск:

chmod +x db2gpx.sh

chmod +x generateGPX.sh

Для генерирования файлов с треками достаточно запустить ./generateGPX.sh

Запись опубликована в рубрике gps, linux. Добавьте в закладки постоянную ссылку.

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