Импорт существующих данных
Эта страница — о данных, которые уже где-то есть: картах, которые ваш клуб годами привязывал к местности, дистанциях из других программ, целом архиве на сервере RouteGadget. Вместо того чтобы создавать всё заново вручную, их можно перенести в Checkpoint скриптом через API.
Что даёт API
Заголовок раздела «Что даёт API»Всё, что делает приложение, может сделать и скрипт — с той же учётной записью и теми же правами. Для импорта важны:
- Клубы —
POST /api/clubsсоздаёт клуб, которому будут принадлежать импортированные карты и дистанции. - Карты —
POST /api/mapsзагружает изображение карты вместе с широтой и долготой четырёх её углов; этого Checkpoint достаточно, чтобы наложить её на местность. Карту можно создать и без изображения, а привязать позже черезPUT /api/maps/{id}/georeference. - Дистанции —
POST /api/coursesсоздаёт дистанцию на карте по координатам её КП. Если дистанции уже есть в формате IOF XML (v2 или v3) или MapRun KML,POST /api/courses/importпрочитает файл и вернёт КП, готовые к сохранению.
Все параметры описаны в браузере OpenAPI. Помните об ограничении в 100 запросов в минуту: растягивайте большой импорт во времени, а не повторяйте запросы после ответа 429.
Примеры
Заголовок раздела «Примеры»Рабочие примеры лежат в репозитории Checkpoint-io/Checkpoint-Samples на GitHub. Они опубликованы под лицензией CC0 — копируйте и дорабатывайте свободно.
RouteGadget: все привязанные карты и их дистанции
Заголовок раздела «RouteGadget: все привязанные карты и их дистанции»Import/RouteGadget/import-routegadget.mjs берёт все
привязанные к местности карты с сервера RouteGadget вместе с дистанциями
всех проходивших на них стартов и воссоздаёт их в новом клубе в Checkpoint:
- Читает с сервера список карт и стартов.
- Пересчитывает привязку каждой карты в реальное положение четырёх углов изображения, а КП каждой дистанции — из положения на изображении в широту и долготу.
- Создаёт клуб, загружает каждую карту и создаёт её дистанции.
Непривязанные карты пропускаются: без реальных координат накладывать на местность нечего.
Чтобы запустить скрипт, заполните константы в начале файла — email и пароль вашей учётной записи Checkpoint, название нового клуба и адреса вашего сервера RouteGadget (в примере указан один из серверов British Orienteering), — а затем выполните в Node.js 20 или новее:
node import-routegadget.mjsСкрипт сам выдерживает паузы между запросами, чтобы не превысить ограничение, поэтому большой архив переносится не сразу.
Импортируйте только те карты и дистанции, которые вы вправе публиковать. Карта принадлежит клубу или картографу, который её сделал, — даже если она лежит на общедоступном сервере.
Участвуйте
Заголовок раздела «Участвуйте»Написали импорт из другого инструмента — OCAD, Purple Pen, Condes, Livelox, архива своего клуба? Мы будем рады вкладу в репозиторий примеров: откройте pull request — он поможет следующему клубу, который решит переехать так же.
Если для импорта нужно то, чего API пока не умеет, или вам нужна помощь с переносом, напишите нам в разделе Импорт на доске идей.