borders/README.md

63 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Набор скриптов и веб-интерфейс для правки границ
В этих каталогах лежит набор инструментов для редактирования набора границ
в формате [Osmosis Poly](http://wiki.openstreetmap.org/wiki/Osmosis/Polygon_Filter_File_Format).
## Развёртывание в Docker
Самое простое — запустить систему в Docker-контейнерах.
#### Предварительные требования
* Должен быть установлен docker https://docs.docker.com/engine/install/
* и docker-compose https://docs.docker.com/compose/install/
* Для всей планеты во время сборки необходимо ~200 Гб дискового пространства
(после сборки — 30 Гб), разворачивание может длиться около суток.
#### Настройка сборки
В файле docker-compose.yaml нужно выставить желаемый порт, на котором будет
работать веб-интерфейс (сейчас это число 8081 в строке "8081:80"),
и URL с файлом планеты в переменной PLANET_URL. Переменные PLANET_URL_<suffix>
не используются, это просто примеры. Для тестирования советуется подставить
в PLANET_URL небольшой файл, тогда вся сборка займёт несколько минут.
## Развёртывание вручную
Для работы требуется база данных PostgreSQL + PostGIS, инициализированная
скриптами из каталога `db`. Последовательность выполнение скриптов и необходимые
переменные окружения см. в `db/Dockerfile.db` и `docker-compose.yaml`.
Для оценки размера файла MWM нужно заполнить
таблицу `tiles` из файла планеты (см. скрипты `db/*tiles*.sh`).
Также для обновления и замены границ из OpenStreetMap желательно импортировать
таблицу `osm_borders` — см. `db/prepare_borders.sh` и `db/load_borders.sh`.
Начальный набор границ для редактирования можно либо загрузить скриптом
`scripts/poly2postgis.py`, либо скопировать из таблицы `osm_borders` по,
например, `admin_level=2`.
После редактирования набор файлов `poly` создаст скрипт `scripts/export_poly.py`
или ссылка *Скачать poly - всё* в веб-интерфейсе.
#### Серверная часть
Два скрипта в каталоге `server` должны работать постоянно на фоне.
* `borders-api.py` — сервер на Flask, работает на порту 5000. К нему обращается
веб-интерфейс через XHR-запросы. В начале скрипта проверьте названия таблиц
и флаг READONLY.
* `borders-daemon.py` — непрерывно проверяет таблицу `borders` на пустые значения
в столбце количества данных, и найдя их, пересчитывает. Запустите, если нужна
оценка размера MWM.
#### Веб-интерфейс
Файлы в каталоге `web/app/static` не требуют каких-либо интерпретаторов или
выделенных серверов: просто откройте `index.html` в браузере. На карте
нарисованы границы, по клику на границу панель справа наполнится кнопками.
Оттуда можно разрезать и склеивать границы, переименовывать их, заменять и
дополнять из таблицы `osm_borders`, а также экспортировать в JOSM для сложных
модификаций.
## Автор и лицензия
Написал Илья Зверев для MAPS.ME, опубликовано под лицензией MIT.