Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Stasroot1
Сообщения: 1030
ОС: Debian9

Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение Stasroot1 »

Доброго времени суток! Столкнулся с неприятной штуковиной...
Открываю файл формата xml - там данные о моей тренировки с GPS GARMIN EDGE705. Размер файла 2,5 мб. Файл открываю в Kwrite он его открывает, но из за размера мне его совсем не удобно читать... в результате я его преобразую, так чтобы он перемещал по словам на следующую строчку... и он подвисает... висит висит... и комп отправляется в перезагрузку. Не приятно в общем то, и такого никогда не было...

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

Буду рад любой помощи в вопросе открытия файла и изучения его формата... маленькие файлы открываются нормально. Но мне надо открыть именно этот файл и именно его отредактировать...

ОС: Debian6.0.4


UPD1. 31.03.2012 - Тема переименована из "Вылет операционной системы на перезагрузку в результате открытия xml на 2,5мб в Kwrite" в "Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс." Так как такое название больше соответствует содержанию темы.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение sash-kan »

одна десятая секунды:

Код: Выделить всё

$ time sed -i 's/></>\n</g' 2012.tcx

real    0m0.100s
user    0m0.048s
sys    0m0.052s
$ head -n 10 2012.tcx
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
<Activities>
<Activity Sport="Biking">
<Id>2012-03-22T08:28:04Z</Id>
<Lap StartTime="2012-03-22T08:28:04Z">
<TotalTimeSeconds>9206.87</TotalTimeSeconds>
<DistanceMeters>10615.707031</DistanceMeters>
<MaximumSpeed>111.007004</MaximumSpeed>
<Calories>1147</Calories>
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение sash-kan »

а с помощью двух sed-скриптов:

Код: Выделить всё

$ cat format1
1d
s/</\n</g
s/>/>\n/g
s/\n\n/\n/g
s/^\n//
$ cat format2
/^<\// b min
H
x
s/^-//
h
s/\n.*$/\t/
x
s/\n//
b out
: min
H
x
s/^\t//
s/\t//
h
s/\n.*//
s/^\t/-\t/
x
s/\n//
s/^-//
: out
этот файл можно превратить в красивое дерево:

Код: Выделить всё

cat этот-самый-файл | sed -f format1 | sed -f format2 | less -S


получается примерно такая картина:

Код: Выделить всё

<TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
    <Activities>
        <Activity Sport="Biking">
            <Id>
                2012-03-22T08:28:04Z
            </Id>
            <Lap StartTime="2012-03-22T08:28:04Z">
                <TotalTimeSeconds>
                    9206.87
                </TotalTimeSeconds>
                <DistanceMeters>
                    10615.707031
                </DistanceMeters>
                <MaximumSpeed>
                    111.007004
                </MaximumSpeed>
                <Calories>
                    1147
                </Calories>
                <AverageHeartRateBpm>
                    <Value>
                        118
                    </Value>
                </AverageHeartRateBpm>
                <MaximumHeartRateBpm>
                    <Value>
                        192
                    </Value>
                </MaximumHeartRateBpm>
                <Intensity>
                    Active
                </Intensity>
                <TriggerMethod>
                    Manual
                </TriggerMethod>
                <Track>
                    <Trackpoint>
                        <Time>
                            2012-03-22T08:28:05Z
                        </Time>
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение watashiwa_daredeska »

sash-kan писал(а):
22.03.2012 23:53
а с помощью двух sed-скриптов
tidy -xml -utf8 -indent <вход >выход
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение sash-kan »

watashiwa_darede...
а получить что-то аналогичное с помощью tidy можно?

с указанными тобой параметрами получается каша:

Код: Выделить всё

  <Activities>
    <Activity Sport="Biking">
      <Id>2012-03-22T08:28:04Z</Id>
      <Lap StartTime="2012-03-22T08:28:04Z">
        <TotalTimeSeconds>9206.87</TotalTimeSeconds>
        <DistanceMeters>10615.707031</DistanceMeters>
        <MaximumSpeed>111.007004</MaximumSpeed>
        <Calories>1147</Calories>
        <AverageHeartRateBpm>
          <Value>118</Value>
        </AverageHeartRateBpm>
        <MaximumHeartRateBpm>
          <Value>192</Value>
        </MaximumHeartRateBpm>
        <Intensity>Active</Intensity>
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение watashiwa_daredeska »

sash-kan писал(а):
23.03.2012 11:18
с указанными тобой параметрами получается каша:
С указанными мной параметрами получается не каша, а правильно. То, что делают твои sed-скрипты — не совсем правильно, ибо они изменяют содержимое тегов с character data (leading & trailing spaces). За подробностями — в спеки XML.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение sash-kan »

watashiwa_darede...
зато

Код: Выделить всё

                <TotalTimeSeconds>
                    9206.87
                </TotalTimeSeconds>
гораздо читабельнее, чем

Код: Выделить всё

        <TotalTimeSeconds>9206.87</TotalTimeSeconds>
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение Portnov »

xmllint --format же.

Ну и если машина перезагружается — то проблема, скорее всего, в битой памяти. Или в перегреве чего-нибудь, но это менее вероятно, имхо.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение sash-kan »

Portnov писал(а):
23.03.2012 14:28
xmllint --format же.
то же самое:

Код: Выделить всё

        <TotalTimeSeconds>9206.87</TotalTimeSeconds>


watashiwa_darede... писал(а):
23.03.2012 11:36
leading & trailing spaces
кстати, в данном файле таковые отсутствуют·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение watashiwa_daredeska »

sash-kan писал(а):
23.03.2012 15:33
кстати, в данном файле таковые отсутствуют·
Да, а после твоего sed появляются:
sash-kan писал(а):
23.03.2012 11:44

Код: Выделить всё

                <TotalTimeSeconds>
                    9206.87
                </TotalTimeSeconds>
гораздо читабельнее
пробелы между ">" и 9206.87 и "<" — лишние и потенциально могут повлиять на обработку. Насчет читабельности готов поспорить: to whom how, как говорится.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение sash-kan »

watashiwa_darede... писал(а):
23.03.2012 16:42
пробелы между ">" и 9206.87 и "<" — лишние
согласен, лишние·
ибо их там нет·
есть \t и \n·
которые после редактирования лёгким движением руки можно убрать·

watashiwa_darede... писал(а):
23.03.2012 16:42
Насчет читабельности готов поспорить: to whom how, как говорится.
нда·
забавный мог бы быть опрос: в какой строке цифры легче воспринимаются —

Код: Выделить всё

            9206.87

            <TotalTimeSeconds>9206.87</TotalTimeSeconds>
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение drBatty »

sash-kan писал(а):
23.03.2012 11:44
гораздо читабельнее, чем

Код: Выделить всё

        <TotalTimeSeconds>9206.87</TotalTimeSeconds>

читабельнее. Но вот распарсить уже будет сложнее...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение SLEDopit »

sash-kan писал(а):
23.03.2012 17:43
забавный мог бы быть опрос: в какой строке цифры легче воспринимаются
всё зависит от того, кто принимает участие в опросе: парсеры однозначно выбрали бы второй вариант (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение drBatty »

SLEDopit писал(а):
23.03.2012 19:11
всё зависит от того, кто принимает участие в опросе: парсеры однозначно выбрали бы второй вариант (:

ковырять файл в 3 миллиона символов без поиска по регуляркам - удовольствие не из лучших. А вот файл в 100 байт и так можно прочитать...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Stasroot1
Сообщения: 1030
ОС: Debian9

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение Stasroot1 »

Нет проблемы с памятью скорее всего исключены тест проходит при включении, правда он простенький как я понимаю. Температура... нет тоже нет. Нехватка памяти? врядли, ее на момент запуска программы занятно 550-600Мб и еще свободно почти 1,5Гб... Нигде в других местах комп (ноутбук) не вылетает на перезагрузку!

Вижу что тема вызвала живой интерес по части разбора файла. Я к сожалению в этом не секу, надеюсь что разберусь.

Как вы можете догадаться - это файл с записью моей тренировки. Такие файлы я получаю со своего устройства каждый день по несколько рас. Периодически бывают проблемы с некорректными данными.

Программа которой я пользуюсь для просмотра тренировок: GarminTrainingCentr Она работает только под виндой и макос. По этой причине приходиться поднимать виртуалку с тяжелой виндой и там смотреть графики, как мне кажется та программа отображает не всю информацию которую прибор записал в память в такого рода файл, а как бы делает выборку. ... Я хочу разобрать файл так и отпарсить его таким образом, чтобы остались только данные о пульсе и скорости (скорость определяется как я понимаю исходя из координат и времени) далее хочу обработанный файл разбить и данные занести в БД (MySQL). Потом данные из БД брать для анализа и построения графика например через вэбинтерфейс... Таким образом хочу избавиться от ненужной программы от гармина. Правда эта программа еще и задания на тренировку формирует... тоже xml как я понимаю...
Т.е. глобально я хочу сделать обмен и загрузку данных на устройство доступными из вэбинтерфейса сайта основанного например на Drupal6/7. Я просто хорошо знаком с этой CMS.
К тому же часто бывает что мой тренер бывает далеко от меня географически и нужно с ним посоветоваться, он не может объективно что либо сказать без видио и этих графиков сопоставленных с видеорядом. Видеоряд решаемо, а вот с графиками и парсиногом а так же удаленным(через сайт) составлением задания на тренировку я слаб как новорожденный младенец.

Как думаете, сколько может стоить подобного рода разработка? Сориентируйте. К справке, я занимаюсь греблей на каноэ. Мастер спорта.
Было бы совсем здорово если бы можно было организовать такого рода проект и потихоньку реализовывать его. Может кому будет интересно и кто то решит принять участие в таком проекте...

Буду рад выслушать предложения, критику и вопросы.

С уважением, Станислав. Мастер спорта по гребле на каноэ.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение drBatty »

Stasroot1 писал(а):
24.03.2012 10:08
Я хочу разобрать файл так и отпарсить его таким образом, чтобы остались только данные о пульсе и скорости (скорость определяется как я понимаю исходя из координат и времени) далее хочу обработанный файл разбить и данные занести в БД (MySQL). Потом данные из БД брать для анализа и построения графика например через вэбинтерфейс...

ну можно напрямую парсить и сразу в gnuplot, получится полный аналог вендовых прог. Можно и через СУБД. Могу только подсказать как парсить - в подписи.
Писать про СУБД лень, без меня Over9000 мануалов по-русски.
Stasroot1 писал(а):
24.03.2012 10:08
вэбинтерфейса сайта основанного например на Drupal6/7

эх... в след. абзаце будет облачные вычисления?
вы там палку не перегнули? Какой друпал?! Там код строчек на 30 на быдлопхп.
Stasroot1 писал(а):
24.03.2012 10:08
Я просто хорошо знаком с этой CMS.

ну и что?
Stasroot1 писал(а):
24.03.2012 10:08
Как думаете, сколько может стоить подобного рода разработка?

$20 я-бы взял...


PS
э... наверное $20 за 30 строчек пхп это грабёж...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Stasroot1
Сообщения: 1030
ОС: Debian9

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение Stasroot1 »

sash-kan писал(а):
22.03.2012 22:42
одна десятая секунды:

Код: Выделить всё

$ time sed -i 's/></>\n</g' 2012.tcx

real    0m0.100s
user    0m0.048s
sys    0m0.052s
$ head -n 10 2012.tcx
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
<Activities>
<Activity Sport="Biking">
<Id>2012-03-22T08:28:04Z</Id>
<Lap StartTime="2012-03-22T08:28:04Z">
<TotalTimeSeconds>9206.87</TotalTimeSeconds>
<DistanceMeters>10615.707031</DistanceMeters>
<MaximumSpeed>111.007004</MaximumSpeed>
<Calories>1147</Calories>


Спасибо, после файл стал структурированным и понятным по структуре. Отображается все в столбик и формат очень понятный.
Теперь думаю попробовать самостоятельно его отпарсить и положить в БД... тем самым быдлокодом на php... попытка то не пытка!

drBatty, относительно облачных вычислений... ну да, без облачных вычислений это НЕ РЕАЛИЗУЕМО! поэтому облака в студию! Шучу.
Почему мне понадобился друпал6/7? По той причине, что на нем у меня уже работает проект (пока не очень популярный и совсем не коммерческий), ссылку не даю в открытом форуме. Проект этот сводится к спортивному профессиональному дневнику с вытекающими, вот функций по обработке треков с навигаторов (разных) и не хватает этому проекту. Приходиться грузить картинку в png к примеру с графиком из GarminTreningCentr... а это не удобно. И не очень информативно. Сначала естественно надо реализовать простенько чтобы работало вне проекта, а потом внести этот функционал в существующий проект.

С огромным уважением к выше отписавшимся участникам форума,
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение sash-kan »

как я понял, ключевая и атомарная информация — это записи <trackpoint>...</trackpoint>·
вот такой конструкцией с ними будет, мне кажется, удобнее работать:

Код: Выделить всё

$ cat файл.с.информацией | sed -r 's!(<Trackpoint>)!\n\1!g;s!(</Trackpoint>)([^\n])!\1\n\2!g' | grep Trackpoint > файл.только.с.трекпойнтами

будут присутствовать только эти записи, по одной записи на строку·
остаётся преобразовать эти строки в конструкцию "insert into"·
пример не привожу, ибо это зависит от того, какие именно данные и под какими именами вы будете сохранять в базе данных·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение sash-kan »

Stasroot1 писал(а):
24.03.2012 10:08
скорость определяется как я понимаю исходя из координат и времени
а distancemeters — это разве не готовое расстояние (от старта, видимо)?
ну, чтоб с координатами не возиться·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение drBatty »

Stasroot1 писал(а):
25.03.2012 13:24
Приходиться грузить картинку в png к примеру с графиком из GarminTreningCentr... а это не удобно. И не очень информативно. Сначала естественно надо реализовать простенько чтобы работало вне проекта, а потом внести этот функционал в существующий проект.

ну кодом на php вы можете добиться двух вещей:
1. считать датчики и загрузить их показания в БД.
2. Сделать выборку из БД, и отобразить её в виде гламурного графика в виде картинки (например png).
Как эту картинку показать в друпале - не помню, это не ко мне.
sash-kan писал(а):
26.03.2012 14:50
вот такой конструкцией с ними будет, мне кажется, удобнее работать:

как-то так, но раз это всё в друпале надо по ТЗ, то следовательно sed 's///' следует заменить на <?php preg_replace() ?>
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Stasroot1
Сообщения: 1030
ОС: Debian9

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение Stasroot1 »

sash-kan писал(а):
26.03.2012 15:01
Stasroot1 писал(а):
24.03.2012 10:08
скорость определяется как я понимаю исходя из координат и времени
а distancemeters — это разве не готовое расстояние (от старта, видимо)?
ну, чтоб с координатами не возиться·


Да судя по всему вы правы, а координаты по всей видимости используются в GarminTreaningCentr для отрисовки прохождения тренировки на карте встроенной в интерфейс программы. Если выделить задачу - только скорость и пульс, тогда данные о координатах судя по всему можно было бы выкинуть и не засорять этой информацией БД. Но в перспективе эти данные могут понадобиться как рас для анализа прямолинейности хождения во время тренировок, но это далекая перспектива, но все же эти данные не стоит удалять.
Соответственно скорость надо будет вычислять так: расстояние в точке с временем t+1 (сек) минус расстояние в точке с временем t и делить на время равное 1сек, получиться скорость метров/секунду. И для каждой секунды в БД занести эту скорость. Далее можно будет с этими данными делать что угодно.

А то, что я писал, что скорость определяется исходя из координат со временем, ну вообще было излишне получается, думаю вы правы.
Спасибо сказали:
Stasroot1
Сообщения: 1030
ОС: Debian9

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение Stasroot1 »

sash-kan писал(а):
26.03.2012 14:50
как я понял, ключевая и атомарная информация — это записи <trackpoint>...</trackpoint>·
вот такой конструкцией с ними будет, мне кажется, удобнее работать:

Код: Выделить всё

$ cat файл.с.информацией | sed -r 's!(<Trackpoint>)!\n\1!g;s!(</Trackpoint>)([^\n])!\1\n\2!g' | grep Trackpoint > файл.только.с.трекпойнтами

будут присутствовать только эти записи, по одной записи на строку·
остаётся преобразовать эти строки в конструкцию "insert into"·
пример не привожу, ибо это зависит от того, какие именно данные и под какими именами вы будете сохранять в базе данных·


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

Поэтому данные ID и другие, делающие запись уникальной, например устройств с одинаковым <UnitId>3803286278</UnitId>
<ProductID>625</ProductID> не встречаются. должны быть тоже сохранены.
Спасибо сказали:
Stasroot1
Сообщения: 1030
ОС: Debian9

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение Stasroot1 »

drBatty писал(а):
26.03.2012 16:34
Stasroot1 писал(а):
25.03.2012 13:24
Приходиться грузить картинку в png к примеру с графиком из GarminTreningCentr... а это не удобно. И не очень информативно. Сначала естественно надо реализовать простенько чтобы работало вне проекта, а потом внести этот функционал в существующий проект.

ну кодом на php вы можете добиться двух вещей:
1. считать датчики и загрузить их показания в БД.
2. Сделать выборку из БД, и отобразить её в виде гламурного графика в виде картинки (например png).
Как эту картинку показать в друпале - не помню, это не ко мне.
sash-kan писал(а):
26.03.2012 14:50
вот такой конструкцией с ними будет, мне кажется, удобнее работать:

как-то так, но раз это всё в друпале надо по ТЗ, то следовательно sed 's///' следует заменить на <?php preg_replace() ?>


Кодом на PHP мы должны данные занести в БД и это реализуемо как мне кажется довольно не сложно - да ваш пункт 1.
Пункт2. скорее всего очень не оптимален. Думаю график надо отрисовывать на стороне клиента, т.е. данные отдать клиенту (в браузер) и там в зависимости от требований отрисовывать нужные графики, так как требуется просмотреть весь график, часть графика, приблизить участок графика, и все в таком роде... боюсь если отдать это все на PHP, т.е. на серверную сторону, то как минимум будет пораждено большое количество паразитного, если можно так сказать, трафика на отдачу сформированных картинок, а может еще и на само формирование, по этой причине мне кажется что оптимальнее делать отрисовку графика на стороне клиента, могу и ошибаться, поправьте тогда меня.

Учитывая, что на вэбхостинге скорее всего нет доступа на консоль, то обработку файлов правильнее делать через php, или я ошибаюсь?

На данный момент создал темму с моей проблеммой в части PHP тут: http://www.php.ru/forum/viewtopic.php?f=13...=317503#p317503, и там, сделал ссылку на это обсуждение. Надеюсь привлечь опытных разработчиков к этой вроде не очень сложной работе для профессионалов.

На счет Drupal... думаю потом можно будет переработать проект и адаптировать его к Drupal6/7 для этого надеюсь привелечь разработчиков с drupal.ru и drupal.org

Если кому интересно, то тут: http://www.php.ru/forum/viewtopic.php?t=7939 я впервые задумался о создании сайта для спортсменов. Увы много времени с того момента (5 лет) ушло и не все делалось так как там писалось, в частности я ушел в сторону не полного самостоятельно написания а в сторону использования CMS Drupal... она со своими модулями предоставляет очень широкие возможности и многое использую, но есть специфические задачи... Собственно проект у меня сейчас в стадии возрождения так как я им почти 1,5 года совсем не занимался.
Спасибо сказали:
Stasroot1
Сообщения: 1030
ОС: Debian9

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение Stasroot1 »

Может быть перенести тему в "Проекты нашего форума", безусловно если она может там находиться и если админы форума сочтут такой перенос своевременным/уместным/достойным.

С соответствующим переименовыванием и изменением целепостановки.
Спасибо сказали:
Stasroot1
Сообщения: 1030
ОС: Debian9

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение Stasroot1 »

http://www.drupal.ru/node/54023 тема на Drupal.ru по модулю для импорта xml.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение sash-kan »

перенести тему — дело простое·
вот только тут переносить-то нечего: обсуждения того, как можно просматривать xml, как-то не вяжутся с «проектами нашего форума»·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Stasroot1
Сообщения: 1030
ОС: Debian9

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение Stasroot1 »

sash-kan писал(а):
27.03.2012 20:28
перенести тему — дело простое·
вот только тут переносить-то нечего: обсуждения того, как можно просматривать xml, как-то не вяжутся с «проектами нашего форума»·

Да пожалуй до уровня проекта пока очень далеко. Думаю надо сначала самостоятельно потрудиться поработать, а потом что то работающее уже выкладывать в общий доступ для развития и оптимизации. Надеюсь найдуться люди которые смогут помочь в этом. Спортсмены в этом помочь не смогут увы.

sash-kan, как лучше делать разбор xml? загрузка-обработка исключительно через php? И как лучше строить график на стороне сервера через php, gdimage. Или на стороне клиента? В браузере? Более широко описывал эти вопросы чуть чуть выше.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение sash-kan »

Stasroot1 писал(а):
27.03.2012 22:57
загрузка-обработка исключительно через php?
прототип можно делать любыми средствами·
а вот когда вы начнёте ваш код оформлять в виде плагина (?) для drupal-а, логичным будет реализовать логику именно на php·
(upd. вам сначала, imho, лучше бы определиться со структурой той информации, которую вы собираетесь импортировать-хранить-обрабатывать, а потом уже вдаваться в детали реализации алгоритмов)

Stasroot1 писал(а):
27.03.2012 22:57
Или на стороне клиента? В браузере?
это как? (я не настоящий сварщик^w веб-разработчик)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Stasroot1
Сообщения: 1030
ОС: Debian9

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение Stasroot1 »

sash-kan писал(а):
28.03.2012 11:04
Stasroot1 писал(а):
27.03.2012 22:57
загрузка-обработка исключительно через php?
прототип можно делать любыми средствами·
а вот когда вы начнёте ваш код оформлять в виде плагина (?) для drupal-а, логичным будет реализовать логику именно на php·
(upd. вам сначала, imho, лучше бы определиться со структурой той информации, которую вы собираетесь импортировать-хранить-обрабатывать, а потом уже вдаваться в детали реализации алгоритмов)

Stasroot1 писал(а):
27.03.2012 22:57
Или на стороне клиента? В браузере?
это как? (я не настоящий сварщик^w веб-разработчик)


Я вовсе не сварщик. :-( Предполагаю что то типа вот такого: http://ru.wikipedia.org/wiki/%D0%92%D0%B5%...%BD%D0%B8%D0%B5

Там особенно интересно по части "Устройство веб-приложений" т.е. с сервера грузим данные, а на стороне клиента в браузере через что то из этого:
Для формирования и обработки запросов, создания интерактивного и независимого от браузера интерфейса:

ActiveX
Adobe Flash, Adobe Flex
Java
JavaScript
Silverlight

И все. Основные данные это те самые трэкпоинты, их хранить в обязательном порядке, эти данные и только эти будут отправляться клиенту для дальнейшей обработки на его стороне.
На его стороне требуется: Построить график всей тренировки. Построить график произвольной части тренировки, Приблизить (повысить атомарность отображаемых на графике данных) график, выделить особоважные для анализа части, Особоважные части отправить на сервер для хранения. Остатки данных (не важные части) удалять из БД по мере их ненадобности, например через год после загрузки.
Как то так.
На днях спроектирую БД и то что в нее писать.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Разбор tcx файла с Garmin навигатора для построения на основе данных графиков через WEB-интерфейс.

Сообщение drBatty »

sash-kan писал(а):
28.03.2012 11:04
это как? (я не настоящий сварщик^w веб-разработчик)

это плохо. Клиенты взвоют, особенно те из них, у которых обычные компьютеры, а не навороченные игровые этого года выпуска.
Stasroot1 писал(а):
28.03.2012 18:25
ActiveX
Adobe Flash, Adobe Flex
Java
JavaScript
Silverlight

одно дело - выделить и вставить цитату, как я только-что сделал JavaScript'ом, совсем другое - нарисовать график.
Учтите также тот факт, что программа на стороне пользователя является потенциально опасной, и потому всегда огорожена и сильно ограничена в возможностях, это тоже не добавляет производительности, а как раз наоборот. На стороне сервера никаких ограничений нет. Ну и наконец, не забудьте о мобильных устройствах - моя мобила не всякую страничку осилит, а уж такое...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: