Yangeomapper — это веб-приложение на базе Spring Boot, предназначенное для получения координат из адресов с использованием Yandex Geocoder API и сохранения результатов в формате Excel. Позволяет автоматизировать процесс геокодирования адресов из Excel файлов.
- Загрузка Excel файлов (.xlsx)
- Извлечение адресов (наименования площадок) из Excel
- Геокодирование адресов с использованием Yandex Geocoder API
- Сохранение результатов в Excel файл
- Spring Boot
- Java 21
- Apache POI
- Lombok
- Yandex Geocoder API
mvn clean package -DskipTests spring-boot:repackagemvn spring-boot:runДоступен по адресу http://localhost:8080
- Загрузка Excel файла с адресами
- Обработка и геокодирование адресов
- Сохранение результата в Excel файл
Для развертывания с помощью Docker:
docker-compose up -dВходной файл Excel должен быть в формате .xlsx и содержать следующие столбцы. Только некоторые из них используются для обработки, но рекомендуется сохранять исходную структуру.
Исходный файл содержит скрытые столбы, поэтому индекс столбца важен.
| Индекс столбца (начиная с 0) | Заголовок (пример) | Тип данных | Описание |
|---|---|---|---|
| 0 | NN | Целое число | Порядковый номер |
| 1 | Балансовая зона | Строка | Зона баланса |
| 5 | ID УУГ в ИМУС | Строка | Идентификатор УУГ в системе ИМУС |
| 6 | Наименование УУГ | Строка | Наименование УУГ |
| 8 | ID Площадки в ИМУС | Строка | Идентификатор площадки в системе ИМУС |
| 9 | Наименование Площадки | Строка | Полный адрес или наименование площадки, используемое для геокодирования |
| 16 | СТМ | Строка | СТМ |
| 17 | Тип СТМ (для Автоучета) | Строка | Тип СТМ (для Автоучета) |
| 18 | ID во внешней системе (в СТМ) | Строка | Идентификатор во внешней системе (в СТМ) |
| 22 | Время последнего сеанса СТМ | Дата и время | Время последнего сеанса СТМ |
| 23 | Принадлежность СТМ | Строка | Принадлежность СТМ |
Выходной файл будет содержать все столбцы из входного файла плюс два дополнительных столбца с координатами.
| Индекс столбца (начиная с 0) | Заголовок | Тип данных | Описание |
|---|---|---|---|
| 0 | NN | Целое число | Порядковый номер |
| 1 | Балансовая зона | Строка | Зона баланса |
| 2 | ID УУГ в ИМУС | Строка | Идентификатор УУГ в системе ИМУС |
| 3 | Наименование УУГ | Строка | Наименование УУГ |
| 4 | ID Площадки в ИМУС | Строка | Идентификатор площадки в системе ИМУС |
| 5 | Наименование Площадки | Строка | Полный адрес или наименование площадки |
| 6 | СТМ | Строка | СТМ |
| 7 | Тип СТМ (для Автоучета) | Строка | Тип СТМ (для Автоучета) |
| 8 | ID во внешней системе (в СТМ) | Строка | Идентификатор во внешней системе (в СТМ) |
| 9 | Время последнего сеанса СТМ | Строка | Время последнего сеанса СТМ (отформатировано) |
| 10 | Принадлежность СТМ | Строка | Принадлежность СТМ |
| 11 | Широта | Число с плавающей точкой | Широта геокодированного адреса |
| 12 | Долгота | Число с плавающей точкой | Долгота геокодированного адреса |
Базовый URL: http://localhost:8080
- Загружает Excel файл и обрабатывает его содержимое для получения координат.
- Тело запроса: multipart/form-data с ключом
csvFile, содержащим Excel файл. - Пример:
curl -X POST "http://localhost:8080/uploadcsv" \
-H "Content-Type: multipart/form-data" \
-F "csvFile=@input.xlsx"- Ответ: "Addresses processed successfully"
Примечание: Файл должен быть в формате .xlsx и содержать данные (наименования площадок) в определенном формате.
Приложение использует Yandex Geocoder API. Ключ API можно задать через переменную окружения YANDEX_API_KEY или в application.yml.
Пример:
yandex:
api:
key: ${YANDEX_API_KEY:ваш_ключ_API}- Приложение использует Yandex Geocoder API, который имеет ограничения на бесплатное количество запросов 1000 адресов в день.
- Количество одновременных запросов ограниченно 40, при ошибке от Яндекса 429 это число можно снизить.
- Для обработки Excel файлов используется Apache POI.