Перейти к содержимому
Начать бесплатно

Импорт существующих данных

Эта страница — о данных, которые уже где-то есть: картах, которые ваш клуб годами привязывал к местности, дистанциях из других программ, целом архиве на сервере RouteGadget. Вместо того чтобы создавать всё заново вручную, их можно перенести в Checkpoint скриптом через 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:

  1. Читает с сервера список карт и стартов.
  2. Пересчитывает привязку каждой карты в реальное положение четырёх углов изображения, а КП каждой дистанции — из положения на изображении в широту и долготу.
  3. Создаёт клуб, загружает каждую карту и создаёт её дистанции.

Непривязанные карты пропускаются: без реальных координат накладывать на местность нечего.

Чтобы запустить скрипт, заполните константы в начале файла — email и пароль вашей учётной записи Checkpoint, название нового клуба и адреса вашего сервера RouteGadget (в примере указан один из серверов British Orienteering), — а затем выполните в Node.js 20 или новее:

Terminal window
node import-routegadget.mjs

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

Импортируйте только те карты и дистанции, которые вы вправе публиковать. Карта принадлежит клубу или картографу, который её сделал, — даже если она лежит на общедоступном сервере.

Написали импорт из другого инструмента — OCAD, Purple Pen, Condes, Livelox, архива своего клуба? Мы будем рады вкладу в репозиторий примеров: откройте pull request — он поможет следующему клубу, который решит переехать так же.

Если для импорта нужно то, чего API пока не умеет, или вам нужна помощь с переносом, напишите нам в разделе Импорт на доске идей.