Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/micronull/josm-russia-address-helper-plugin
Плагин JOSM для загрузки адресов из ЕГРН
https://github.com/micronull/josm-russia-address-helper-plugin
josm josm-plugin kotlin openstreetmap
Last synced: about 1 month ago
JSON representation
Плагин JOSM для загрузки адресов из ЕГРН
- Host: GitHub
- URL: https://github.com/micronull/josm-russia-address-helper-plugin
- Owner: micronull
- License: agpl-3.0
- Created: 2021-06-27T13:55:53.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-06-07T12:57:19.000Z (7 months ago)
- Last Synced: 2024-06-07T14:21:15.191Z (7 months ago)
- Topics: josm, josm-plugin, kotlin, openstreetmap
- Language: Kotlin
- Homepage:
- Size: 9.43 MB
- Stars: 11
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# JOSM-Russia-address-helper-plugin
Плагин JOSM для загрузки адресов из ЕГРН.## Что такое ЕГРН
Единый Государственный Реестр Недвижимости - государственная геоинформационная система, содержащая информацию о обьектах недвижимости, границах,
инфраструктуре. В интернете доступен по адресу [pkk.rosreestr.ru.](https://pkk.rosreestr.ru) С не очень давних пор [признан валидным](https://wiki.openstreetmap.org/wiki/RU:%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F/%D0%9F%D1%83%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D0%BA%D0%B0%D0%B4%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BA%D0%B0%D1%80%D1%82%D0%B0) (лицензионно совместимым) источником для ОСМ.
Плагин russia-address-helper позволяет в полуавтоматическом режиме извлекать текстовую информацию из слоев ЕГРН,
(используются слой земельных участков `PARCEL` и слой зданий `BUILDING`), в которой в большинстве случаев записан человекочитаемый адрес.## Как работает плагин
В программе реализованы два режима работы - запрос по клику (он же "Пипетка") и массовая загрузка адресов. Запрос по клику позволяет узнать адресную информацию в произвольной точке.
Клик на карте отправляет координату запроса в ЕГРН, и, при получении не пустого ответа, пытается с помощью эвристик и регулярных выражений
разобрать текстовое описание полученных адресов на составляющие (в данный момент улицу и номер дома, в который может входить буква, корпус, строение, квартира,
так же распознаются населенные пункты (в случае когда нет адреса по улице), кварталы и микрорайоны).
Затем происходит сопоставление имя распознанной улицы/места с существующими в ОСМ.
При успешном разборе и сопоставлении на каждый найденный адрес в месте клика создается по точке с тэгами ("addr:housenumber", "addr:street").
Адресные точки будут созданы и для всех нераспознанных адресов тоже, что иногда помогает разобрать адрес вручную, или понять, почему он не валидный.
Все созданные инструментом "Пипетка" точки будут удалены при загрузке данных в ОСМ, и в базу не попадут.### Массовая загрузка
Этот режим считается основным, и позволяет обработать нарисованные в ОСМ здания, запросив в ЕГРН, распарсив и присвоив им адреса в автоматическом режиме.
Нужно выделить здания, и запустить массовую загрузку. Плагин профильтрует список выделенных зданий по следующим правилам:
- это линия (мультиполигоны пока не поддерживаются)
- у нее есть тэг building и он не garage, shed или roof
- на ней нет тэга fixme
Есть ограничение на размер выделения (задано в настройках), здания свыше лимита запрошены не будут.
Для оставшихся в списке обьектов программа находит координаты точки запроса - для прямоугольника это пересечение диагоналей, для зданий сложной формы ищется точка, гарантированно лежащая внутри фигуры здания.
Затем выполняется запрос в ЕГРН, полученные данные разбираются на улицу, место и номер дома, улица/место сопоставляется с обьектами, уже внесенными в ОСМ. Если сопоставление прошло успешно,
адрес считается валидным, и присваивается зданию. Приоритет имеет адрес полученный со слоя ЕГРН `BUIDING`, если он есть. Проблемы, возникшие при разборе адреса и сопоставлении его с ОСМ,
обрабатываются валидаторами плагина, и отображаются в окне валидации JOSM. Их нужно обработать - исправить или проигнорировать.## Удаление дубликатов
При обработке частного сектора, промзон часто бывает, что на участке находится 2 и более строений, все они могут получить из ЕГРН одинаковый адрес.
Функция плагина 'Удаление дублей' после получения данных присвоит адрес только строению с наибольшей площадью.
Функция не трогает уже существующие в редакторе данные, т.е удаляются только загруженные из ЕГРН в данном запросе дубли.
Так же существует настройка дальности поиска дубликатов в метрах, чтобы не захватывать соседние НП или улицы-дубли в одном НП.
Для отображения и исправления дубликатов существует свой валидатор.## Установка
Зайдите в `Настройки` Josm (клавиша `F12`), `Модули`, найдите плагин по названию ("russian-address-helper") или его части, нажмите `Установить`, перезапустите Josm.
### Установка вручную
1. Скопируйте файл [russia-address-helper.jar](https://github.com/micronull/JOSM-Russia-address-helper-plugin/releases/latest/download/russia-address-helper.jar) в `%appdata%\JOSM\plugins` для Windows, и в `~/.local/share/JOSM/plugins` для Linux.
2. Включите плагин в `Правка - Настройки - Модули`.## Как пользоваться
1. (**ОБЯЗАТЕЛЬНО**) Подключите слои ЕГРН в редактор JOSM каким-либо доступным вам способом. Один из способов описан ниже:
1. Выберите в JOSM пункт меню «Слои» — «Настройки слоёв».
2. Нажмите кнопку «+WMS» справа от списка выбранных подложек (внизу).
В открывшемся диалоговом окне **«Добавить URL подложки»** вставить в поле **«6. Введите созданный URL WMS (необязательно)»** первое из приведённых ниже значений, а также заполните поле **«7. Введите название слоя»** (название обязательно должно содержать "ЕГРН"). Поля 1-5 остаются пустыми.| Название слоя | Ссылка URL WMS |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|
| Земельные участки | `http://localhost:8081/arcgis/rest/services/PKK6/CadastreObjects/MapServer/export?layers=show%3A21&format=PNG32&bbox={bbox}&bboxSR=102100&imageSR=102100&size=1024%2C1024&transparent=true&f=image` |
| Здания и сооружения | `http://localhost:8081/arcgis/rest/services/PKK6/CadastreObjects/MapServer/export?layers=show%3A30&format=PNG32&bbox={bbox}&bboxSR=102100&imageSR=102100&size=1024%2C1024&transparent=true&f=image` |3. Скачайте веб-прокси nginx с [сайта разработчика](https://nginx.org/ru/download.html), распакуйте в удобную вам папку. Nginx не требует прав администратора и установки в систему.
4. Отредактируйте файл конфигурации прокси, находящийся по пути (папка из п. III/conf/nginx.conf), добавив в него следующие строки:
```
server {
listen 8081;
server_name localhost;location / {
proxy_pass https://pkk.rosreestr.ru/;
proxy_ssl_verify off;
}
}
```
5. Запустите nginx просто двойным щелчком по nginx.exe, затем подключите слои зданий и земельных участков в редакторе, через меню JOSM "Cлои". Если все сделано по инструкции, через некоторое время (10-30 сек) в окне редактора появятся очертания зданий и границ участков. Запуск nginx нужно будет делать после каждой перезагрузки ПК.
(Примечание: пункты iii - v нужны для решения проблемы сайта ЕГРН с невалидными HTTPS сертификатами. Для пользователей, импортировавших сертификаты в хранилище Java URL слоев будут другими, без замены адреса сайта ПКК на localhost, так же необходимо убрать галочку с настройки "Отключить SSL при запросах к ЕГРН")
2. Настройте [смещение основного слоя спутниковых снимков](https://wiki.openstreetmap.org/wiki/RU:JOSM/Plugins/Imagery_Offset_Database/Quick_Start#%D0%A1%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%B4%D0%BB%D0%BE%D0%B6%D0%BA%D0%B8_%D0%B8_%D0%B5%D0%B3%D0%BE_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0) по GPS трекам (ссылка на вики ОСМ.)
3. Настройте смещение слоев ПКК с границами зданий и/или участков по спутниковому снимку. Слой участков легко привязать в частном секторе, по заборам. При сдвиге слоя зданий не забывайте, что контур здания из ПКК должен лечь на фундамент здания на спутниковом снимке, а не на крышу. (Примечание: точность привязки и участков и зданий сильно плавает в зависимости от многих условий - рельефа конкретной местности, качества геодезических работ при сьемках и др. Сдвиг участков и зданий меняется от района к району, его надо регулярно корректировать, иначе плагин может запросить некорректный участок/здание.)4. Зайдите в настройки плагина (горячая клавиша `F-12`, раздел "Настройки плагина ЕГРН"). Выберите в выпадающем списке настройки "Сдвигать координаты запроса согласно сдвигу выбранного слоя" слой Зданий или участков. (Как правило, слой здании привязан точнее, и лучше выбрать его.)
Плагин готов к работе.
5. Настройки редактора "Для удобства":
- вынесите кнопки плагина на панель инструментов. Для этого нажмите правой кнопкой на панель инструментов JOSM, выберите "Настроить панель инструментов", и добавьте кнопки из раздела "Действия - Данные - Загрузка адресов из ЕГРН"
- добавьте кнопку поиска зданий без адресов в области видимости. Для этого нажмите ctrl+F, введите в строке поиска `building=* AND -"addr:housenumber"=* AND inview` затем проставьте галочку "добавить кнопку на основную панель инструментов" и нажмите `Поиск`
6. Процесс работы
1. добавление улиц:
- нарисуйте линии улиц.
- вариант 1 (с помощью Пипетки): с помощью инструмента Пипетка (Запрос на месте клика) запросите адреса участков и/или зданий вдоль предполагаемой улицы, ориентируясь на приблизительные начало и конец улицы.
Из содержания тэга "addr:RU:egrn" сгенерированных точек прочтите имя улицы, и присвойте его линиям улицы, обязательно преобразовав в [формат наименования ОСМ](https://wiki.openstreetmap.org/wiki/RU:%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F/%D0%A1%D0%BE%D0%B3%D0%BB%D0%B0%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1_%D0%B8%D0%BC%D0%B5%D0%BD%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8_%D0%B4%D0%BE%D1%80%D0%BE%D0%B3).
Сгенерированные плагином точки с тэгом fixme=REMOVE_ME! удалятся автоматически при загрузке в ОСМ.
- вариант 2 : добавьте здания, запросите их адреса и исправьте ошибку валидатора "ЕГРН не найдена улица"
2. добавление зданий:
- обрисуйте здания по спутниковому снимку или загрузите данные ОСМ, где здания уже обрисованы.
- с помощью поискового запроса зданий без номера, либо инструмента выделения/лассо выделите разумное количество зданий (10-100) (Хороший вариант - выбрать полигон жилой застройки и воспользоваться функцией "Выделение - Все внутри"). Если попутно выделятся дороги или просто точки, ничего страшного, плагин отфильтрует их при запросе.
- запросите данные с помощью кнопки "Для выделенных объектов" . Поскольку сайт ЕГРН не очень стабильно отвечает на запросы, придется подождать некоторое время.
- плагин обработает полученные данные по следующему алгоритму:
1. если у здания/участка есть адрес, и он успешно разобран на составляющие, и для распознанных обьектов нашлось соответствие в данных ОСМ (найдена улица либо точка населенного пункта/квартала/микрорайона), и не найден дубликат, то зданию будет присвоен адрес.
2. в остальных случаях плагин сгенерирует в окне валидации одну из возможных ошибок или предупреждений, которые нужно просмотреть и обработать:
1. **ЕГРН пустой ответ**. Самоочевидное предупреждение. Оно генерируется в категории OTHER, вы не увидите его, если в настройках JOSM не включено отображение этой категории ошибок.
2. **ЕГРН адрес найден**. Это предупреждение генерируется, если адрес успешно распознан и присвоен. Но **такие предупреждения все равно нужно обработать** - просмотреть глазами и убедиться, что алгоритм разбора не ошибся. Частая ошибка - присвоение зданию номера участка, он может совпадать с номером дома, а может и нет. Так же пока нерешенная проблема - номера участков в СНТ могут быть присвоены как адреса по деревне или НП, к которому приписано СНТ. Такие адреса в базу ОСМ загружать нельзя!
При нажатии на кнопку "Исправить" отобразится диалог исправления в котором можно исправить адресные тэги, удалить уже присвоенные, либо проигнорировать ошибку.
3. **ЕГРН несколько адресов**. Плагин получил в ответе несколько валидных адресов. Для исправления нужно выбрать один, как правило, это адрес здания, а не участка. Если ни один адрес на самом деле не подходит, можно проигнорировать ошибку. Частый вариант для домов на два хозяина, что у двух участков, на которых расположен дом, одинаковый адрес, а у частей здания - свои, с номерами квартир или через дробь. В таком случае нужно либо выдать адрес участка зданию, либо разбиь здание на две части и перезапросить адреса.
4. **ЕГРН нечеткое совпадение**. Плагин сопоставил адрес с улицей или местом по алгоритму нечеткого совпадения, и теперь надо убедиться, что это не ложное срабатывание. Можно присвоить распознанные адресные тэги, или игнорировать эту ошибку.
5. **ЕГРН содержит номер квартиры**. Адрес успешно присвоен, но в нем содержатся номера квартир. Можно сгенерировать адресную точку с номером квартиры (не обязательно и не вполне укладывается в логику ОСМ), или игнорировать ошибку.
6. **ЕГРН не найдена улица**. Адрес был распознан, но в данных ОСМ не нашлось линии с подходящим именем. Возможна ошибка сопоставления плагина, или в данных ОСМ отсутствует линия дороги с подходящим названием.
7. **ЕГРН не найдено место**. Адрес был распознан, но в данных ОСМ не нашлось объекта (точки, полигона или мультиполигона) с подходящим именем и тэгами.
8. **ЕГРН дубликат адреса** Адрес был распознан, но он уже существует в ОСМ или среди других распознанных адресов. Диалог исправления предложит несколько вариантов разрешения проблемы, но как правило действие по умолчанию (назначить адрес зданию с максимальной площадью) является правильным.
9. **ЕГРН ошибка разбора** Не удалось распознать адрес, но можно попробовать разобрать вручную, или игнорировать эту проблему.
10. **ЕГРН граница места неполная** Распознанный адрес сопоставлен с границей места, нарисованной в ОСМ мультиполигоном. Но этот мультиполигон загружен не до конца и проверить адрес на вхождение в границу не получается. Надо догрузить границу вручную.
11. **ЕГРН вне границ места** Дом с распознанным адресом не лежит внутри полигона/мультиполигона границы.
12. **ЕГРН место слишком далеко** Адрес дома сопоставлен с местом, у которого нет полигональной границы, а точка места находится слишком далеко (дальше заданного в настройках значения).
13. **ЕГРН улица слишком далеко** Адрес дома сопоставлен с линией улицы, которая находится слишком далеко (дальше заданного в настройках значения). Это может быть одноименная улица в соседнем НП, или же линия улицы требует продолжения.## Горячая клавиша
1. Добавьте кнопку на панель инструментов в `Правка - Настройки - Панель инструментов`.
2. Нажмите правой кнопкой по иконке плагина на панели инструментов и выберите `Свойства горячей клавиши`.## Ограничения плагина
1. Не выделяйте много домов сразу, при большом количестве одномоментных запросов (приблизительно >500) сервис ЕГРН может выдать бан по IP на сутки. В плагин встроен лимит (по умолчанию - 200) зданий в одном запросе, выделение сверх того запрашиваться не будет. Нормальный способ работать - выделяя дома вдоль улицы или в небольшой области, приводить данные в порядок, выгружать данные в базу ОСМ, и уже после этого приступать к следующим.
2. На данный момент ошибка пропадет из списка валидации, если зайти в диалог ее исправления и закрыть окошко крестиком или выбрать "Отмена". При этом ошибка не будет исправлена. Это проблема кода валидации JOSM, обходной путь - нажать в окне валидаторов кнопку "Валидировать". Неисправленная ошибка снова отобразится.
3. Плагин не может корректно разобрать 100% полученных адресов, поскольку есть:## Ограничения ЕГРН
1. Целью ЕГРН не является сбор и хранение адресных данных, это побочный продукт ведения земельных и имущественных реестров.
2. Адрес ЕГРН в зависимости от региона, конкретного НП и конкретного работника Росреестра, заполнявшего данные на участок/здание, может иметь почти произвольный формат и содержание,
включть адресацию по территориям, СНТ, гаражным кооперативам, ориентирам на местности, инвентарные номера, старый адрес, адрес прописью, примечания работника и так далее.
3. Адрес ЕГРН может просто не соответствовать действительности в результате опечатки, изменения адресов и миллиона других причин (встречалось неоднократно)Вывод - приоритет во внесении в ОСМ всегда является truth on the ground - проверенная на местности адресная табличка, или хотя бы увиденная на снимках разрешенных к использованию панорам (Яндекс). Никакие другие картографические материалы, за исключением может быть официальных документов сельских, городских администраций,
источником адресной информации или эталоном для ее сверки быть не могут. Многие старые или современные картографические ресурсы черпают данные ровно из тех же источников вроде ЕГРН или устаревших схем НП, повторяя снова и снова ошибки. Если адрес полученный из ЕГРН странно выглядит, выбивается из соседних, или, тем более, противоречит внесенному при обходе - не вносите его в базу ОСМ!## Примечания
* Плагин на данный момент может разобрать данные только для улиц, переулков, проездов, проспектов, бульваров, шоссе, аллей, тупиков, площадей, кварталов, микрорайонов (обозначенных точкой или мульти/полигоном place=neighbourhood, suburb, quarter), деревень, сёл и поселков (обозначенных точкой или мульти/полигоном) c тэгом place=village, hamlet).
* Если в ЕГРН встречается многократное именование улицы, которое не может быть сопоставлено с данными ОСМ ("Советская Б улица"), в качестве временного решения можно добавить улице в ОСМ тэг "egrn_name", в который вписать наименование из ЕГРН. При загрузке в ОСМ тэг egrn_name удалится автоматически.
* Для того чтобы в тэги обьектов сохранялись сырые данные ЕГРН, необходимо в настройках включить галочку "Записывать адрес из ЕГРН в `addr:RU:egrn`". Это отладочные данные, они будут удалены автоматически при загрузке данных в OSM.
* Плагин умеет сопоставлять номерные улицы и улицы с инициалами ("улица Карла Маркса" сопоставится с "ул. К. Маркса")
* Программа пытается распознать номер дома с учетом строения, корпуса, буквы. Номера квартир в адресе приведут к генерации предупреждения валидатора, в диалоге которого можно сгенерировать дополнительные точки адреса с тэгами `addr:flats`. Понимания, что делать с такими данными пока нет, лучше не загружать их в ОСМ.## Запрос дополнительных данных
Экспериментальная фича: при включении в настройках опции "Запрашивать расширенные данные из ЕГРН для точечного запроса", точечный запрос так же отправит дополнительные запросы расширенных данных ЕГРН,
который вернёт в тэгах с префиксом "egrn:" следующие потенциально полезные поля:| Тип обьекта | Тэг | Описание |
|-------------|--------------|------------------------------------------------------------------------------------|
| Участок | util_by_doc | Текстовое описание назначения земельного участка |
| Здание | levels | Расчетная этажность здания (общее количество этажей минус количество подземных) |
| Здание | purpose | Код назначения здания по справочнику ЕГРН |
| Здание | purpose_name | Назначение здания по справочнику в текстовом виде |
| Здание | oks_type | Тип объекта капитального строительства (здание, сооружение, незавершенная стройка) |
| Здание | name | Обычно информация о типе и назначении здания (магазин, дом, школа, клуб, и т.п) |
| Здание | year_built | Год постройки здания |
| Здание | year_used | Год ввода в эксплуатацию |Следует отметить, что назначение здания может меняться, не факт что это корректно отражено в ЕГРН. Неизвестно, как именно формируется этажность для многоквартирных домов с подьездами переменной этажности.
Год постройки и год ввода в эксплуатацию могут сильно различаться, и не факт, что какой-либо из них совпадет по смыслу с тэгом ОСМ start_date.
Включение данной настройки приводит к утроению количества запросов в ОСМ(основной + данные по участку + данные по зданию), что может привести к временному или постоянному бану по IP.## Изменения
[см. CHANGELOG.md](https://github.com/micronull/JOSM-Russia-address-helper-plugin/blob/master/CHANGELOG.md)