Обратное геокодирование
Сообщение от вас:
Чтобы установить последнюю версию Docker Compose на CentOS 7, выполните следующие шаги:
-
Установите Docker:
- Установите репозиторий Docker:
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - Установите Docker:
sudo yum install -y docker-ce docker-ce-cli containerd.io - Запустите и активируйте Docker:
sudo systemctl start docker sudo systemctl enable docker
- Установите репозиторий Docker:
-
Установите Docker Compose:
- Загрузите последнюю версию Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose - Дайте права на выполнение файлу Docker Compose:
sudo chmod +x /usr/local/bin/docker-compose - Создайте символическую ссылку:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
- Загрузите последнюю версию Docker Compose:
-
Проверьте установку Docker Compose:
docker-compose -v
Теперь вы должны увидеть версию Docker Compose, которую вы установили.
Быстрый, самостоятельно размещённый сервис обратного геокодирования, построенный на основе данных OpenStreetMap. Имея координаты широты и долготы, он возвращает ближайший адрес улицы, включая номер дома, название улицы, город, штат, округ, почтовый индекс и страну.
- Обратное геокодирование на уровне улицы на основе данных OSM
- Поиск по адресной точке, названию улицы и интерполяции по адресу
- Определение административных границ (страна, штат, округ, город, почтовый индекс)
- Субмиллисекундная задержка запросов с индексными файлами, отображаемыми в памяти
- Автоматический HTTPS с Let's Encrypt
- Поддержка Docker с автоматической загрузкой и индексацией PBF
services:
geocoder:
image: traccar/traccar-geocoder
environment:
- PBF_URLS=https://download.geofabrik.de/europe/monaco-latest.osm.pbf
ports:
- "3000:3000"
volumes:
- geocoder-data:/data
volumes:
geocoder-data:
docker compose up
# All-in-one: download, build index, and serve
docker run -e PBF_URLS="https://download.geofabrik.de/europe-latest.osm.pbf" \
-v geocoder-data:/data -p 3000:3000 traccar/traccar-geocoder
# Build index only
docker run -e PBF_URLS="https://download.geofabrik.de/europe-latest.osm.pbf" \
-v geocoder-data:/data traccar/traccar-geocoder build
# Serve only (from pre-built index)
docker run -v geocoder-data:/data -p 3000:3000 traccar/traccar-geocoder serve
# Multiple PBF files
docker run -e PBF_URLS="https://download.geofabrik.de/europe/france-latest.osm.pbf https://download.geofabrik.de/europe/germany-latest.osm.pbf" \
-v geocoder-data:/data -p 3000:3000 traccar/traccar-geocoder
# With automatic HTTPS
docker run -e PBF_URLS="https://planet.openstreetmap.org/pbf/planet-latest.osm.pbf" \
-e DOMAIN=geocoder.example.com \
-v geocoder-data:/data -p 443:443 traccar/traccar-geocoder
Файлы PBF можно скачать с Geofabrik.
Полный индекс Земли займёт около 18 ГБ дискового пространства, поэтому для высокой производительности нужен компьютер с минимум 16 ГБ оперативной памяти или быстрый NVME-носитель.
Параметры запроса:
lat- широта (требуется)lon- долгота (требуется)key- Ключ API (обязательно)
Пример запроса:
GET /reverse?lat=43.7384&lon=7.4246&key=YOUR_API_KEY
Ответы следуют формату Nominatim:
{
"display_name": "Avenue de la Costa 42, 98000 Monaco, Monaco",
"address": {
"house_number": "42",
"road": "Avenue de la Costa",
"city": "Monaco",
"state": "Monaco",
"county": "Monaco",
"postcode": "98000",
"country": "Monaco",
"country_code": "MC"
}
}
Поля опускаются, когда они недоступны.
Коды статуса:
200- успех401- отсутствующий или некорректный ключ API429- превышенный лимит ставки
Сервер включает веб-панель управления ключами API. При первом запуске перейдите по URL сервера в браузере, чтобы создать аккаунт администратора. После входа вы можете генерировать API-ключи и создавать дополнительных пользователей с настраиваемыми ограничениями скорости.
Проект состоит из двух компонентов:
- Builder (C++) — парсирует файлы OSM PBF и создаёт компактный бинарный индекс с использованием ячеек геометрии S2 для пространственного поиска.
- Server (Rust) — отображает файлы индекса памяти и отправляет запросы через HTTP/HTTPS с задержкой до миллисекунды.
Сборщик создаёт 14 бинарных файлов:
| Файл | Описание |
|---|---|
geo_cells.bin |
Объединённый индекс ячеек S2 для улиц, адресов и интерполяций |
street_entries.bin |
Уличные идентификаторы на ячейку |
street_ways.bin |
Заголовки уличных путей (смещение узлов, название) |
street_nodes.bin |
Координаты уличных узлов |
addr_entries.bin |
ID адресных точек на ячейку |
addr_points.bin |
Данные адресных точек (координаты, номер дома, улица) |
interp_entries.bin |
ID путей интерполяции на ячейку |
interp_ways.bin |
Интерполяционные заголовки пути |
interp_nodes.bin |
Координаты узла интерполяции |
admin_cells.bin |
Индекс ячеек S2 для границ администратора |
admin_entries.bin |
Идентификаторы полигонов администратора на ячейку |
admin_polygons.bin |
Метаданные админских полигонов |
admin_vertices.bin |
Вершины админ-полигонов |
strings.bin |
Дедупликационный пул струн |
Builder (C++):
- CMake 3.16+
- Компилятор C++17
- libosmium, protozero, s2geometry, zlib, bzip2, expat
Сервер (Rust):
- Инструментарий Rust
# Build the indexer
mkdir build && cd build && cmake ../builder && make
# Build the server
cargo build --release --manifest-path server/Cargo.toml
# Create index from PBF file
./build/build-index output-dir input.osm.pbf [input2.osm.pbf ...]
# Start the server
./server/target/release/query-server output-dir [bind-address]
# Start with automatic HTTPS
./server/target/release/query-server output-dir --domain geocoder.example.com
| Переменная | Описание | По умолчанию |
|---|---|---|
PBF_URLS |
Разделённый по пробелу список URL для загрузки PBF | (требуется для авто/сборки) |
DOMAIN |
Доменное имя для автоматического HTTPS через Let's Encrypt | (отключённый) |
BIND_ADDR |
HTTP-адрес связи | 0.0.0.0:3000 |
DATA_DIR |
Каталог данных для PBF-файлов и индекса | /data |
CACHE_DIR |
Каталог кэша сертификатов ACME | acme-cache |








