Инструкция Загрузка карт

Как загрузить карту на findkp.ru

Для того, кто готовит карты в OCAD и выкладывает их на сайт: что выгрузить, как загрузить и какие коды раздать постановщикам и начальнику дистанции.

Открыть страницу загрузки

1Как устроено

Карта — это три файла из OCAD и два кода. Название карты приложение показывает постановщикам.

Картинка нужна Карта в PNG или JPEG.
Привязка нужна World-файл картинки: .pgw к PNG, .jgw к JPEG. По нему приложение ставит КП и точку «я».
КП нужны Файл дистанции IOF XML 3.0 с координатами контрольных пунктов.
Код карты 6 цифр. По нему карту открывают постановщики.
Код начальника по желанию Есть код — телефоны постановщиков отправляют на сервер свои КП и отметки, а начальник по своему коду видит сводку «Постановка». Нет кода — всё остаётся в телефоне каждого.

Названия файлов значения не имеют. Название карты видит каждый, кто открыл её по коду, а сами коды сайт наружу не отдаёт.

2Выгрузка из OCAD

Названия пунктов меню — по справке OCAD, английский интерфейс; карты на сайте выгружены из OCAD 2020. В другой версии пункты могут называться чуть иначе. Подойдут файлы и из другой программы, если они такие же: картинка с world-файлом в UTM / WGS 84 и IOF XML 3.0 с координатами КП.

Шаг 1. Привязка карты — один раз на карту

Map → Set Scale and Coordinate System: режим Real world coordinates, система координат UTM, WGS 84, зона — по долготе места:

Карта в другой системе (СК-42, МСК, Гаусс — Крюгер) не загрузится: сайт проверяет, что привязка в UTM. Без привязки OCAD не даст выгрузить world-файл.

Не подойдёт и карта, которая сама пересекает 36° или 42° в. д.: приложение выбирает зону по долготе точки, и за границей зоны всё съедет.

Шаг 2. Картинка карты с привязкой

  1. Откройте файл карты. Можно и проект постановки — тогда на картинке будут кружки КП. Приложение рисует КП поверх само, так что подойдёт любой вариант.
  2. File → Export, формат PNG (можно JPEG, но на наших картах PNG выходит меньше).
  3. Область — Entire Map, вся карта, чтобы все КП попали на картинку.
  4. Resolution — 300 dpi. При масштабе 1:10 000 это около 0,85 м на пиксель, картинка около 3000 × 3800 пикселей и 1–2 МБ. Больше не нужно: карта едет на телефон по мобильной сети и хранится в его памяти для работы без сети.
  5. Галка Create World file (*.pgw), для JPEG — (*.jgw). Рядом с картинкой появится файл привязки.

Картинку и привязку всегда берите из одной выгрузки: привязка от другой выгрузки сдвинет все КП. Страница загрузки это заметит — покажет КП за краем картинки.

Шаг 3. Контрольные пункты (xml)

  1. В проекте постановки: Course Setting → Export → Courses XML.
  2. Версия — IOF 3.0 (не 2.0.3).
  3. Получится файл ….Courses.xml.

В приложение попадут все КП проекта, а не одной дистанции. Номер КП — его код в OCAD, старт и финиш подписаны «Старт» и «Финиш».

3Загрузка через сайт

  1. Откройте findkp.ru/upload.html на компьютере и введите пароль. Пароль выдаёт владелец сайта, у каждого загрузчика свой. Страница помнит его, пока открыта вкладка.
  2. Название — его увидят постановщики, например Протвино-осень. Буквы, цифры, пробел и знаки - _ ( ) , №. Поменять потом нельзя.
  3. Перетащите три файла в рамку или нажмите Выберите файлы — можно все сразу, сайт сам разберёт, где что. Файл .ocd не нужен.
  4. Сайт проверит файлы и покажет картинку с КП. У каждого файла должна стоять галочка, а кружки КП — на своих местах: если картинка с кружками из OCAD — ровно в них.
  5. Код начальника дистанции — галка стоит. Сводка не нужна — снимите.
  6. Загрузить карту. Появятся коды и готовое сообщение для постановщиков.

Файлы вместе — до 50 МБ, картинка — до 45 МБ и 50 млн пикселей. Выгрузка по шагу 2 весит 1–3 МБ.

Предупреждение «КП за краем картинки» — картинка и привязка из разных выгрузок, xml от другой карты или на картинку попала не вся карта. Загрузить можно, но лучше выгрузить заново.

Без пароля выгрузку можно проверить на главной findkp.ru: вкладка Загрузить файлы → три файла → Показать на карте. Файлы при этом никуда не отправляются.

4Коды

Оба кода сайт придумывает сам: случайные, разные и не совпадают с кодами других карт. Посмотреть их можно в любой момент на странице загрузки, в списке «Карты на сайте».

Код — единственная защита. Кто знает код карты, видит карту и может отправлять отметки. Кто знает код начальника — может стереть отметки всем.

5Проверить и раздать коды

  1. После загрузки нажмите Проверить на сайте — откроется приложение. Введите код карты: должна открыться карта и список КП.
  2. Если есть код начальника — введите и его. Над списком КП появится сводка «Постановка» и строка «Код для постановщиков».
  3. Скопировать сообщение и отправьте в чат постановщиков: в нём адрес сайта, код карты и ссылка на инструкцию. Код начальника — отдельно, только ему.

Заводить постановщиков не нужно. Каждый открывает карту по коду и выбирает свои КП, при этом приложение спросит имя — под ним он и будет в сводке. Как это выглядит у них — инструкция для постановщиков.

6Замена, новая постановка, удаление

Всё — кнопками у карты в списке «Карты на сайте».

Старые файлы при замене и удалённые карты сайт не стирает, а уносит в корзину на сервере — вернуть их может владелец сайта. Каждое действие записывается: кто и когда загрузил или заменил карту.

7Если что-то не так

«Неверный пароль» или «Слишком много неверных паролей»
Проверьте пароль у владельца сайта. После 10 ошибок вход закрыт на 15 минут.
«Не IOF XML 3.0 (похоже на версию 2.0.3)»
Выгрузите заново: Course Setting → Export → Courses XML, версия IOF 3.0.
«В файле КП нет ни одного КП с координатами»
Карта в OCAD не привязана (шаг 1) или выгружен не тот файл.
«Привязка не в UTM»
Карта в другой системе координат. Переключите на UTM, WGS 84 (шаг 1) и выгрузите картинку с привязкой заново.
«КП за краем картинки» или «Ни один КП не попал на картинку»
Картинка и привязка из разных выгрузок, xml от другой карты или экспортирована не вся карта. Выгрузите png и pgw заново одним экспортом, область Entire Map.
«Файлы вместе больше 50 МБ»
Картинка выгружена с большим разрешением. Хватит 300 dpi (шаг 2).
«Карта … уже есть»
Название занято. Обновить ту карту — Заменить файлы у неё, нужна новая — другое название.
КП не в своих кружках, точка «я» в стороне
Картинка и привязка из разных выгрузок. Замените их файлами из одного экспорта.
У карты в списке оранжевая пометка
С файлами в папке что-то не так: не хватает файла, два файла одного вида, код совпал с другой картой. Обычно это карты, положенные вручную. Замените файлы через сайт или поправьте папку (раздел 8).

8Вручную на сервере

Для владельца сайта — если страница загрузки недоступна или нужно то, чего она не умеет.

Пароли загрузчиков

На сервере (SSH или терминал aaPanel), от пользователя сайта:

cd /www/wwwroot/findkp.ru
runuser -u www -- php84 upload.php passwd Иван    # выдать или сменить пароль, покажет его
runuser -u www -- php84 upload.php users          # кто есть
runuser -u www -- php84 upload.php remove Иван    # закрыть доступ

Пароль сайт хранит только в виде хэша: потерянный не восстановить, только выдать новый.

Где лежит карта

Каждая карта — папка в /www/wwwroot/findkp.ru/maps/, название папки — название карты.

maps/Протвино-осень/
  code.txt                         — код карты: 6 цифр
  chief.txt                        — код начальника (если нужна сводка)
  map-20261024-113005-a1b2.png     — картинка (или .jpg)
  map-20261024-113005-a1b2.pgw     — привязка (у .jpg — .jgw)
  course-20261024-113005-a1b2.xml  — КП

Сайт называет файлы по времени загрузки — у каждой замены новые имена, так телефон не смешает старую картинку с новой привязкой. Вручную можно класть файлы с любыми названиями. Каждого вида — ровно по одному файлу. Корзина и журнал загрузок — в /www/wwwroot/findkp.ru/data/: trash/ и upload.sqlite.

Папка вручную

# с компьютера: папка с тремя файлами → на сервер
rsync -av --chmod=D755,F644 "Протвино-осень" <сервер>:/www/wwwroot/findkp.ru/maps/

# на сервере: свободный код (запустить дважды — для карты и для начальника)
cd /www/wwwroot/findkp.ru/maps
while :; do c=$(shuf -i 100000-999999 -n 1); cat */code.txt */chief.txt 2>/dev/null | tr -d ' \r' | grep -qx "$c" || break; done; echo "$c"

# коды и права
cd "/www/wwwroot/findkp.ru/maps/Протвино-осень"
printf '%s\n' <код карты> > code.txt
printf '%s\n' <код начальника> > chief.txt   # только если нужна сводка
chown -R www:www . && chmod 640 *.txt

Код — ровно 6 цифр, коды карты и начальника разные и не совпадают ни с одним другим code.txt или chief.txt, иначе откроется чужая карта. Не простой: не 111111, не 123456, не дата. Права 640 ставьте, только если владелец файла — www, иначе сайт не прочитает код.

Посреди постановки не переименовывайте папку: сводка привязана к её названию.