OsmAnd GPX
Вступ
GPX (GPS Exchange Format) — це широко використовуваний стандарт на основі XML для зберігання даних GPS, включаючи треки, маршрути та маршрутні точки. OsmAnd підтримує формат GPX для імпорту, експорту та налаштування даних GPS для навігації, що дозволяє як початківцям, так і досвідченим користувачам оптимізувати свій досвід.
Що робить OsmAnd GPX унікальним?
OsmAnd розширює стандартний формат GPX 1.1, запроваджуючи власний користувацький простір імен XML osmand:
. Цей простір імен дозволяє зберігати додаткові дані, такі як:
- Візуальні налаштування треку (колір, ширина, стрілки).
- Групування та іконки маршрутних точок.
- Детальні атрибути маршруту, включаючи розраховані маршрути та типи активності.
Що ви дізнаєтеся з цього посібника?
Ця стаття надає вичерпний огляд структури та функцій файлів GPX в OsmAnd. Ви дізнаєтеся:
- Як налаштувати треки та маршрутні точки за допомогою тегів GPX.
- Розширені функції, такі як HTML-описи, дані датчиків та типи активності.
- Як експортувати розраховані маршрути та зберегти їх повну функціональність.
- Перетворення файлів GPX у формат OBF для оптимізованого зберігання та розширених можливостей пошуку.
Огляд структури GPX
Файли GPX в OsmAnd організовують дані ієрархічно за такими елементами:
<gpx>
- кореневий елемент файлу.<trk>
- представляє треки, які містять:<trkseg>
- сегменти треку, які далі поділяються на<trkpt>
(точки треку).
<rte>
- представляє маршрути, включаючи маршрутні точки та ключові точки.<wpt>
- представляє окремі маршрутні точки.
Налаштування треку
Параметри зовнішнього вигляду треку
У цьому розділі описано, як OsmAnd відображає треки на карті та доступні параметри налаштування їх зовнішнього вигляду. Описані нижче параметри застосовуються в межах тегу <gpx>
і впливають на всі треки, включені до файлу GPX.
Назва тегу | Опис / Значення |
---|---|
<color> | - Визначає колір лінії треку на карті. - Рядок: HEX-код кольору #RRGGBB або #AARRGGBB |
<width> | - Визначає ширину лінії треку. - Рядок: “thin” , “medium" , “bold” (визн ачається атрибутом “currentTrackWidth” ), або ціле число (1-24) |
<show_arrows> | - Вмикає або вимикає стрілки напрямку вздовж треку. - Булеве значення: "true" / "false" |
<show_start_finish> | - Показує або приховує маркери початку та кінця треку. - Булеве значення: "true" / "false" |
<split_type> | - Визначає тип сегментації для треку. - Рядок: "no_split" , "distance" , "time" |
<split_interval> | - Встановлює інтервал для сегментації треку на основі вибраного типу. - Подвійне значення: Ціле число (метри для "distance" , секунди для "time" ) |
<line_3d_visualization_by_type> | - Визначає тип 3D-візуалізації для треку. - Рядок: "none" , "altitude" , "shared_string_speed" , "map_widget_ant_heart_rate" , "map_widget_ant_bicycle_cadence" , "map_widget_ant_bicycle_power" , "shared_string_temperature" , "shared_string_speed" , "fixed_height" |
<line_3d_visualization_wall_color_type> | - Визначає тип кольору стіни для 3D-візуалізації. - Рядок: "none" , "solid" , "downward_gradient" , "upward_gradient" , "altitude" , "slope" , "speed" |
<line_3d_visualization_position_type> | - Встановлює положення 3D-візуалізації відносно треку. - Рядок: "top" , "bottom" , "top_bottom" |
<vertical_exaggeration_scale> | - Множник для масштабування значення атрибута line_3d_visualization_by_type . - Число з плаваючою комою: За замовчуванням: 1.0 |
<elevation_meters> | - Визначає фіксовану висоту в метрах для "fixed_height" в <line_3d_visualization_by_type> . - Число з плаваючою комою: За замовчуванням: 1000 |
<coloring_type> | - Визначає метод розфарбовування треку. - Рядок: "solid" , "speed" , "altitude" , "slope" , "routeInfo_roadClass , "routeInfo_surface" , "routeInfo_smoothness" |
<color_palette> | - Визначає колірну схему для треку. - Рядок: "default" / користувацькі схеми |
Приклад:
<gpx version="1.1" creator="OsmAnd~ 5.0.0" xmlns="https://www.topografix.com/GPX/1/1" xmlns:osmand="https://osmand.net/docs/technical/osmand-file-formats/osmand-gpx" xmlns:gpxtpx="https://www8.garmin.com/xmlschemas/TrackPointExtensionv1.xsd" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.topografix.com/GPX/1/1 https://www.topografix.com/GPX/1/1/gpx.xsd">
...
<extensions>
<osmand:color>#4e4eff</osmand:color>
<osmand:width>bold</osmand:width>
<osmand:show_arrows>true</osmand:show_arrows>
<osmand:split_type>distance</osmand:split_type>
<osmand:split_interval>2000.0</osmand:split_interval>
</extensions>
</gpx>
Тег 'coloring_type'
Тег <coloring_type>
в OsmAnd дозволяє користувачам налаштовувати розфарбовування треку на основі конкретних атрибутів даних, надаючи візуальний спосіб інтерпретації ключової інформації вздовж треку.
Тип | Опис | Випадок використання |
---|---|---|
<solid> | Весь трек відображається одним суцільним кольором, визначеним тегом color . | Використовуйте, коли потрібен однорідний колір для чіткої видимості. |
<speed> | Трек розфарбовується градієнтом на основі значень швидкості в кожній точці треку (<trkpt> ). Вищі швидкості представлені різними кольорами. | Ідеально підходить для таких видів діяльності, як їзда на велосипеді або водіння, для візуалізації змін швидкості. |
<altitude> | Трек розфарбовується відповідно до даних про висоту в кожному <trkpt> . Застосовується градієнт, що вказує на різні діапазони висот. | Корисно для піших або гірських маршрутів, щоб виділити зміни висоти. |
<slope> | Трек розфарбовується на основі нахилу/спуску між послідовними точками треку. Позитивні градієнти вказують на підйоми, тоді як негативні гра дієнти вказують на спуски. | Підходить для велосипедистів або туристів, які аналізують складність треку. |
<routeInfo_roadClass> | Розфарбовує сегменти треку на основі класифікації доріг OpenStreetMap (OSM) (наприклад, шосе, житлова вулиця). | Допомагає розрізняти різні типи доріг під час руху за маршрутом. |
<routeInfo_surface> | Розфарбовує сегменти треку на основі типу поверхні OSM (наприклад, асфальт, гравій, ґрунт). | Корисно для визначення умов треку під час таких видів діяльності, як бездоріжжя. |
<routeInfo_smoothness> | Розфарбовує трек відповідно до рейтингів гладкості OSM, що вказують на шорсткість або гладкість шляху (наприклад, відмінно, погано). | Корисно для оцінки прохідності треку для конкретних транспортних засобів. |
Теги GPX в інтерфейсі користувача
Теги р озширень GPX відображаються внизу контекстного меню треку.
Перелічуються як <metadata>
, так і <gpx>
<extensions>
.
Теги зовнішнього вигляду виключені з переліку.
Підтримується з OsmAnd Android 5.0.
Налаштування маршрутних точок
У цьому розділі пояснюється, як OsmAnd дозволяє налаштовувати маршрутні точки у файлах GPX за допомогою іконок, кольорів та групування.
Іконки маршрутних точок
Наступні теги керують зовнішнім виглядом іконок маршрутних точок в OsmAnd:
Тег GPX | За замовчуванням | Призначення |
---|---|---|
<icon> | (немає) | Визначає іконку для маршрутної точки (наприклад, historic_castle ). |
<color> | "red" | Встановлює колір іконки за допомогою HEX-коду (наприклад, #FF0000 ) або назви кольору (наприклад, "blue" ). |
<background> | "circle" | Визначає форму фону іконки. Можливі значення: "circle" , "square" , "octagon" . |
Приклад:
<wpt lat="52.5163" lon="13.3779">
<name>Бранденбурзькі ворота</name>
<extensions>
<osmand:color>#FF5020</osmand:color>
<osmand:icon>city_gate</osmand:icon>
<osmand:background>square</osmand:background>
</extensions>
</wpt>
Групи маршрутних точок
Маршрутні точки в OsmAnd можна сортувати за групами на основі їх типу. Це групування дозволяє користувачеві організовувати кілька маршрутних точок за певними категоріями, покращуючи чіткість та читабельність карти.
- Визначення групи точок. Тег
<type>
всередині елемента<wpt>
визначає групу точки (наприклад,"castle"
,"aqueduct"
). - Конфігурація групи. Розширення
<osmand:points_groups>
в елементі<gpx>
визначає налаштування для кожної групи, включаючиname
,color
,icon
таbackground
для всіх маршрутних точок у цій групі.
Приклад:
<gpx>
<wpt lat="1.234" lon="5.678">
<name>Подивіться вгору, щоб побачити воду</name>
<type>aqueduct</type>
</wpt>
<wpt lat="5.678" lon="1.234">
<name>Остерігайтеся привидів</name>
<type>castle</type>
</wpt>
<wpt lat="66.666" lon="66.666">
<name>Будинок Бітлджуса</name>
<type>castle</type>
</wpt>
<extensions>
<osmand:points_groups>
<group name="castle" color="#FF0000" icon="historic_castle" background="circle"/>
<group name="aqueduct" color="#0000FF" icon="bridge_structure_arch" background="circle"/>
</osmand:points_groups>
</extensions>
</gpx>
Розширені функції GPX
Тип активності
Починаючи з версії 4.9 OsmAnd, ви можете класифікувати свої треки за типом активності для подальшого аналізу та організації в папки.
Список підтримуваних типів активності доступний у файлі activities.json. Кожна активність ідентифікується своїм унікальним ID
і зберігається в розширеннях <metadata>
файлу GPX.
Приклад:
<metadata>
<extensions>
<osmand:activity>off_road_motorcycling_dirt_biking</osmand:activity>
</extensions>
</metadata>
HTML в описах
HTML-теги можна використовувати в тегах <desc>
в елементах <metadata>
або <wpt>
для надання форматованих описів для треків або маршрутних точок.
Щоб уникнути конфліктів із синтаксисом XML, замініть спеціальні символи наступним чином:
<
→<
>
→>
&
→&
Приклад:
<metadata>
<desc>
<p>
Перший абзац буде відображатися як <b>короткий</b> опис.
HTML-теги видаляються в коротких описах.
</p>
<p>
<h3>Другий абзац</h3>
<b>Привіт, світе!</b><br/>
<img src="..."/><br/>
<a href="...">url</a><br/>
<table> ... </table>
</p>
</desc>
</metadata>
Важливі примітки:
- OsmAnd видаляє всі HTML-теги під час створення коротких описів, залишаючи простий текст.
- Ви можете використовувати теги, такі як
<b>
,<i>
,<p>
,<br/>
,<a>
,<img>
та інші для налаштування.
Тег посилання
Використовуйте тег <link>
для зв'язування URL-адрес з метаданими, інформацією про автора або маршрутними точками у файлах OsmAnd GPX. Цей тег також може відображати зображення, якщо URL-адреса вказує на файл зображення.
Приклади (Посилання на метадані із зображенням):
<metadata>
<link href="https://osmand.net/img/logo.png">
<text>Логотип OsmAnd</text>
</link>
</metadata>
Приклади (Посилання на маршрутну точку із зображенням):
<wpt lat="52.5163" lon="13.3779">
<link href="https://osmand.net/img/logo.png" />
</wpt>
Теги даних датчиків
Ви можете збагатити свої треки даними з фітнес-датчиків, таких як пульсометри або датчики температури. OsmAnd використовує схему TrackPointExtension Garmin для зберігання цих даних, що робить їх сумісними з такими платформами, як Strava та Garmin Basecamp.
Підтримувані теги даних датчиків:
- hr - частота серцевих скорочень (у ударах на хвилину).
- cad - каденс велосипеда (в обертах на хвилину).
- atemp - температура навколишнього середовища (у градусах Цельсія).
- power - вихідна потужність велосипеда (у ватах).
Приклад:
<extensions>
<gpxtpx:TrackPointExtension>
<gpxtpx:hr>145</gpxtpx:hr>
<gpxtpx:cad>80</gpxtpx:cad>
<gpxtpx:atemp>22</gpxtpx:atemp>
<gpxtpx:power>250</gpxtpx:power>
</gpxtpx:TrackPointExtension>
</extensions>
Деталі точки треку
Кожна <trkpt>
(точка треку) у файлі GPX може містити додаткові атрибути для збору даних, таких як швидкість, напрямок та висота.
Підтримувані атрибути:
- speed - швидкість у точці треку (у метрах на секунду).
- heading - напрямок руху (0-359 градусів).
- ele - висота над рівнем моря (у метрах).
- time - мітка часу для точки треку.
Приклад:
<trkpt lat="52.397799" lon="4.575998">
<ele>203</ele>
<time>2019-05-08T10:36:43Z</time>
<hdop>3</hdop>
<extensions>
<heading>273</heading>
<speed>5.02</speed>
</extensions>
</trkpt>
Розраховані маршрути
В OsmAnd ви можете розрахувати маршрут і зберегти всі дані в GPX, щоб пізніше всі функції навігації були доступні як навігація за GPX, тому GPX OsmAnd буде містити сегменти маршруту, повороти, назви доріг, типи доріг, обмеження тощо. Маршрут може бути повністю відновлений, ніби щойно побудований, навіть за відсутності відповідних офлайн-карт.
Файл gpx може містити кілька маршрутів. Кожен з них міститься в певному сегменті під trkseg / extensions. Файл gpx зберігається в такому вигляді при експорті побудованого маршруту або при збереженні треку, що складається з декількох окремих сегментів, за допомогою функції Планування маршруту.
Планування маршруту також додає один (або кілька, відповідно до кількості окремих сегментів / треків) блоків rte до файлу gpx, що містять ключові точки маршруту (rtept).
Структура Gpx:
<trk>
<trkseg>
// Список точок сегмента. Порядок точок відповідає порядку та довжині сегментів маршруту (<route><segment length="x" ... />).
// Значення атрибута "length" відповідає кількості точок у цьому сегменті маршруту.
<trkpt ... ></trkpt>
<extensions>
// Список сегментів маршруту
<route>
<segment ... />
</route>
// Властивості сегментів, включених до маршруту.
// Ці дані беруться з офлайн-карт під час початкового побудови маршруту.
<types>
<type ... />
</types>
</extensions>
</trkseg>
</trk>
// Список проміжних точок маршруту. Якщо є кілька маршрутів, порядок списку rte відповідає порядку сегментів маршруту.
<rte>
<rtept ... />
// Для маршрутів, побудованих за допомогою "Планування маршруту", зберігаються параметри ключових точок.
// Якщо rtept не є першим і останнім, перед ним (з тим же idx) буде trkpt з тими ж даними.
<extensions>
// Тип профілю маршруту для наступного сегмента (автомобіль, велосипед, пішохід тощо).
<profile>...</profile>
// Індекс точки в сегмен ті gpx, що відповідає першій точці розрахованого маршруту для цього сегмента.
// Якщо rtept не є першим і останнім, перед ним (з тим же idx) буде trkpt з тими ж даними.
<trkpt_idx>...</trkpt_idx>
</extensions>
</rtept>
</rte>
Важливі властивості:
- trkpt_idx першого rtept в trkseg дорівнює 0. Отже, якщо є два trkseg, буде два rtept з trkpt_idx = 0
- trkpt_idx останнього rtept в trkseg дорівнює кількості trkpt в trkseg мінус 1. Наприклад, якщо trkseg має 12 trkpt, trkpt_idx останнього rtept має бути 11
- Сусідні сегменти маршруту перекриваються: кінець попереднього сегмента та початок наступного сегмента є однією і тією ж trkpt.
- Існує виняток, коли сусідні сегменти маршруту не перекриваються (не мають спільної trkpt). Це відбувається, коли є rtept "між" сегментами маршруту. Кінець попереднього сегмента маршруту є однією trkpt, а початок наступного сегмента маршруту є іншою rtept. Але ці дві trkpt повністю рівні за широтою, довготою та іншими параметрами.
- Перекриття сегментів маршруту можна виявити за допомогою length та startTrkptIdx (останній використовується лише для зручності читання людиною):
- Якщо сума startTrkptIdx та length попереднього сегмента маршруту дорівнює startTrkptIdx наступного сегмента маршруту, сегменти маршруту не перекриваються
- Якщо сума менша на одиницю, то сегменти маршруту перекриваються
- Можуть бути прямі сегменти маршруту. Вони позначаються id="-1". Вони можуть з'явитися у двох випадках:
- Це багатопрофільний маршрут, і користувач вибрав пряму лінію
- Користувач розмістив rtept занадто далеко від найближчої дороги, тому osmand зробив пряму лінію між rtept та дорогою
- trkpts = length - (segments - 1) + (rtepts - 2), де:
- trkpts - кількість trkpt всередині trkseg
- length - сума всіх length сегментів маршруту всередині trkseg
- segments - кількість сегментів маршруту всередині trkseg
- rtepts - кількість rtept, що належать trkseg