Постановка задачи
База Open Street Map (OSM) является открытым ресурсом, пополняемым добровольцами. Она широко используется в проектах, где нужно отобразить что-либо на карте. Встаёт вопрос: насколько данные в ней полные и корректные?
Мы попробуем ответить на него для объектов типа "строение" (дом) на территории России. В этом нам поможет база объектов ГАР ФИАС, которая также содержит объекты такого типа, и её с некоторыми оговорками можно брать за эталонный уровень полноты. С оговорками - потому что каждый месяц в ней появляются новые объекты. На данный момент в ней около 32 млн строений (не считая гаражей, земельных участков и устаревших объектов).
Объекты ГАР ФИАС не содержат координат GPS, но есть ещё один открытый ресурс - Публичная кадастровая карта Росреестра. К сожалению, она не даёт выгружать данные целиком, как предыдущие базы, а предоставляет только API, по которому можно извлекать один объект за раз. Но зато она для многих из них содержит GPS, так что их можно сопоставить с GPS от OSM.
Забегая вперёд, озвучим результат: OSM содержит около 24% от всех домов ГАР, ПКК - около 21%, пересечение OSM с ПКК - 6% и разница координат несущественная.
Для получения результата использовался движок нормализации адресов Pullenti Address.
Данные ГАР ФИАС
Данная база разрабатывается ФНС РФ и содержит в иерархическом виде российские адресные элементы начиная с регионов на верхнем уровне и заканчивая земельными участками, домами и помещениями в них. С сайта базу можно скачать в формате XML (zip-архив с множеством xml-файлов объёма около 46Гб).
Помимо строковых представлений адресов, для домов база содержит кадастровые номера. По кадастровому номеру можно путём запроса получить информацию из Росреестра (см. далее).
С помощью Pullenti Address можно для текстового представления произвольного адреса не только разобрать его на отдельные элементы (район, населенный пункт, улица, дом и др.), но и привязать эти элементы к объектам ГАР - это нам далее пригодится.
Данные ПКК Росреестра
На момент написания статьи в Росреестре данную возможность убрали, но до конца прошлого года информацию в json-виде для объекта можно было получить путём запроса http://pkk.rosreestr.ru/api/features/5/num, где num - кадастровый номер дома. Запросы можно было посылать с одного IP не более одного в секунду, иначе система блокировала на некоторое время. Файл json содержал такую полезную информацию, как координаты (в формате меркатора, несложно переводятся в GPS), год постройки, назначение, кадастровая стоимость и др.
Была проведена работа по извлечению информации для всех объектов ГАР, которые имели в атрибутах кадастровые номера (не все имеют, но большинство). Это позволило "обогатить" объекты ГАР дополнительными атрибутами, отсутствующими в базе ГАР. В результате 21% домов в среднем по России и 59% земельных участков получили географические координаты. Таблица по регионам приведена ниже.
В настоящий момент подобную информацию можно получить через новый сервис http://nspd.gov.ru/api/geoportal/v2/search, но я пока не разбирался с данной возможностью. Поверхностное тестирование показало, что новые данные улучшены в плане полноты (координаты есть там, где их раньше не было), также введены полигоны точек вместо прямоугольников в старой версии.
Данные OSM
Чтобы не иметь дело с огромными pbf-файлами, для России данные по слоям "населенный пункт (settlement)" и "здание (building)" для точек и полигонов в виде csv-файлов были получены у NextGis. И как их теперь связать с ГАР-объектами?

Помимо явного мусора, оставим только записи, у которых есть улица (A_STRT) и номер дома (A_HSNMBR). Как видно, населённый пункт (ADDR_CITY) задаётся редко, и даже когда он задаётся, то для небольших локаций по названию непонятно, что это и в каком регионе вообще. Но зато у нас есть GPS-координаты, и по ним можно многое восстановить. Для некоторых записей есть почтовый индекс (A_PSTCD), что также даёт возможность однозначно указать родительский объект, так как у ГАР-объектов среди атрибутов есть почтовый индекс.
Для некоторых объектов ГАР координаты домов и земельных участков мы получили ранее. По этой информации можно грубо восстановить прямоугольные области GPS для вышележащих объектов вверх по иерархии (вплоть до региона).
Далее, у нас есть файл от Nextgis с координатами населённых пунктов. К сожалению, там та же проблема, что и для зданий, но опираясь на грубо полученные координаты для населенных пунктов ГАР мы можем привязать населенные OSM к объектам ГАР, тем самым уточняя области GPS для объектов ГАР. Таким образом мы получили около 169 тыс. проверенных населенных пунктов из 214 тыс. записей OSM.
Теперь можно брать очередное здание OSM, по координатам находить наименьший объект, накрывающий координатами это задние, тем самым восстанавливая (или не восстанавливая) населённый пункт. В случае удачи формируем строку адреса из восстановленного объекта + улица + номер дома, и обрабатываем через SDK Pullenti. Если здание привязалось к ГАР-объекту, то добавляем в его атрибуты координаты OSM.
Исходно в OSM-данных (на момент сентября 2024) было около 9.2 млн зданий по России. Из них около 8.2 млн (88%) удалось сопоставить с объектами ГАР. Остальное или несуществующие здания, или мусор, или непонятно что.
Результат по регионам
Результат по российским регионам представлен в табличке, где в колонке houses - количествово зданий в ГАР ФИАС, housegps - процент из них, которые получают GPS, в pkk - процент зданий, имеющих GPS в базе ПКК, osm - процент зданий, для которых удалось привязаться в OSM, pkk&osm - координаты есть в обоих источниках.
Region | houses | housegps | pkk | osm | pkk&osm |
Всего | 31868553 | 40% | 21,2% | 24,6% | 5,8% |
01: республика Адыгея | 152906 | 63,2% | 15,5% | 54,9% | 7,2% |
02: республика Башкортостан | 1075201 | 45,4% | 33,2% | 18,5% | 6,3% |
03: республика Бурятия | 237118 | 38,5% | 36,3% | 3,9% | 1,7% |
04: республика Алтай | 84735 | 41,5% | 25,1% | 22,8% | 6,4% |
05: республика Дагестан | 620444 | 55,8% | 18,5% | 48,6% | 11,3% |
06: республика Ингушетия | 87123 | 21,6% | 7,3% | 15,6% | 1,4% |
07: республика Кабардино-Балкарская | 177717 | 43% | 18,5% | 31,9% | 7,4% |
08: республика Калмыкия | 73505 | 29,1% | 14% | 18,1% | 2,9% |
09: республика Карачаево-Черкесская | 109109 | 42,8% | 21,4% | 26,7% | 5,3% |
10: республика Карелия | 95022 | 49,5% | 17,5% | 35,5% | 3,6% |
11: республика Коми | 156488 | 58,2% | 27,8% | 41% | 10,6% |
12: республика Марий Эл | 199540 | 29,5% | 16,1% | 16% | 2,5% |
13: республика Мордовия | 236206 | 46,3% | 26,5% | 30,3% | 10,5% |
14: республика Саха | 229639 | 35,2% | 27,9% | 9,5% | 2,2% |
15: республика Северная Осетия | 137452 | 34,8% | 12,6% | 25,4% | 3,2% |
16: республика Татарстан | 961363 | 33,3% | 18% | 20,3% | 5% |
17: республика Тыва | 59949 | 67,5% | 54,7% | 37,3% | 24,4% |
18: республика Удмуртская | 418630 | 33,4% | 20,4% | 19,1% | 6,1% |
19: республика Хакасия | 146182 | 25,1% | 14,3% | 12,4% | 1,6% |
20: республика Чеченская | 296006 | 36,9% | 36,4% | 0,7% | 0,2% |
21: республика Чувашская | 303802 | 35,3% | 21,4% | 17,4% | 3,5% |
22: край Алтайский | 603615 | 36,5% | 16,8% | 24,9% | 5,3% |
23: край Краснодарский | 1794867 | 54,7% | 21,8% | 42,8% | 9,9% |
24: край Красноярский | 656929 | 28,7% | 16,3% | 15,6% | 3,2% |
25: край Приморский | 293347 | 57,8% | 15,8% | 49,6% | 7,6% |
26: край Ставропольский | 782188 | 40,3% | 15,3% | 29,9% | 4,8% |
27: край Хабаровский | 128686 | 70,1% | 14,3% | 64,7% | 8,8% |
28: область Амурская | 168255 | 41% | 12,1% | 33,4% | 4,6% |
29: область Архангельская | 250405 | 39,5% | 20,6% | 25,2% | 6,3% |
30: область Астраханская | 253054 | 46,8% | 27,1% | 27,6% | 7,8% |
31: область Белгородская | 474548 | 46,5% | 40,3% | 12,5% | 6,4% |
32: область Брянская | 405313 | 28,3% | 17,7% | 13,6% | 3,1% |
33: область Владимирская | 435514 | 31% | 18,1% | 16,1% | 3,2% |
34: область Волгоградская | 683939 | 36,1% | 16,7% | 23,7% | 4,3% |
35: область Вологодская | 311155 | 36% | 21,8% | 20,8% | 6,6% |
36: область Воронежская | 724417 | 29,7% | 16,6% | 16,5% | 3,4% |
37: область Ивановская | 242816 | 29,2% | 12,9% | 18,5% | 2,2% |
38: область Иркутская | 454463 | 47,7% | 26,5% | 28,1% | 7% |
39: область Калининградская | 159859 | 52,3% | 32,1% | 27,4% | 7,3% |
40: область Калужская | 401111 | 32,9% | 23,6% | 17,1% | 7,7% |
41: край Камчатский | 27852 | 38,7% | 21,2% | 19,8% | 2,4% |
42: область Кемеровская | 576814 | 50,9% | 20,1% | 42,6% | 11,8% |
43: область Кировская | 320148 | 49,2% | 20,8% | 39,8% | 11,4% |
44: область Костромская | 183361 | 27,6% | 11,1% | 19,1% | 2,6% |
45: область Курганская | 263586 | 43,7% | 14,5% | 34,2% | 5% |
46: область Курская | 328303 | 25,6% | 14,4% | 15,7% | 4,5% |
47: область Ленинградская | 515777 | 36,3% | 24,3% | 15,3% | 3,3% |
48: область Липецкая | 304434 | 32,8% | 21,1% | 15,4% | 3,7% |
49: область Магаданская | 11217 | 39,4% | 23,9% | 25,6% | 10,1% |
50: область Московская | 1931609 | 30,8% | 23,5% | 8,9% | 1,6% |
51: область Мурманская | 44988 | 33,4% | 9,2% | 26,4% | 2,2% |
52: область Нижегородская | 826772 | 43,9% | 22% | 28,2% | 6,2% |
53: область Новгородская | 244124 | 34,5% | 13,7% | 25,4% | 4,5% |
54: область Новосибирская | 502228 | 43,9% | 20,2% | 30,8% | 7,1% |
55: область Омская | 494391 | 21,1% | 14,3% | 8,7% | 2% |
56: область Оренбургская | 441100 | 56,1% | 32,7% | 36,6% | 13,3% |
57: область Орловская | 219720 | 26,7% | 15,6% | 12,7% | 1,6% |
58: область Пензенская | 376316 | 31,3% | 18,9% | 16,3% | 3,9% |
59: край Пермский | 634559 | 44,3% | 24% | 31,1% | 10,7% |
60: область Псковская | 232140 | 31,6% | 12,3% | 22,1% | 2,8% |
61: область Ростовская | 1072981 | 52,9% | 22,4% | 39,6% | 9% |
62: область Рязанская | 361210 | 26,8% | 18,7% | 9,5% | 1,5% |
63: область Самарская | 506325 | 50,7% | 21,1% | 38,1% | 8,5% |
64: область Саратовская | 621979 | 27,6% | 12,8% | 18,1% | 3,2% |
65: область Сахалинская | 53539 | 65,7% | 47,9% | 34,2% | 16,4% |
66: область Свердловская | 892808 | 45,5% | 14,9% | 36,6% | 6% |
67: область Смоленская | 254742 | 41,7% | 13,4% | 31,9% | 3,6% |
68: область Тамбовская | 330574 | 25,6% | 16,9% | 11% | 2,3% |
69: область Тверская | 505557 | 28,5% | 12,8% | 17,9% | 2,3% |
70: область Томская | 231653 | 38,1% | 28% | 18,8% | 8,7% |
71: область Тульская | 304110 | 32,6% | 25,6% | 9,5% | 2,5% |
72: область Тюменская | 330063 | 54,1% | 30,4% | 32% | 8,4% |
73: область Ульяновская | 275464 | 35,8% | 18,7% | 21,4% | 4,3% |
74: область Челябинская | 769573 | 46,3% | 15,4% | 37,4% | 6,5% |
75: край Забайкальский | 249959 | 20,3% | 15,8% | 5,5% | 1,1% |
76: область Ярославская | 264940 | 32% | 19,9% | 14,4% | 2,3% |
77: город Москва | 292336 | 65,8% | 59,5% | 34,9% | 28,6% |
78: город Санкт-Петербург | 133996 | 29,2% | 18,2% | 14,3% | 3,3% |
79: автономная область Еврейская | 29482 | 66,6% | 11,4% | 62,6% | 7,4% |
83: автономный округ Ненецкий | 9296 | 48% | 30,2% | 25% | 7,2% |
86: автономный округ Ханты-Мансийский | 137533 | 50,5% | 21,5% | 36,3% | 7,3% |
87: автономный округ Чукотский | 4348 | 29,4% | 8,4% | 23,3% | 2,3% |
89: автономный округ Ямало-Ненецкий | 53277 | 45,4% | 39,2% | 19,3% | 13% |
91: республика Крым | 503855 | 29,1% | 25% | 5,4% | 1,3% |
92: город Севастополь | 116896 | 49,2% | 38,1% | 14,7% | 3,7% |
Заключение
На момент осени 2024 года в OSM было около 9.2 млн записей уровня bulding по России. Из них валидируются (то есть привязываются к объектам ГАР) около 8.2 млн (88%), что составляет около 24.6% от всего количества зданий (по информации ГАР).
Не знаю, возможно ли как-либо автоматизировать коррекцию данных в OSM и загрузку. Но если да, то можно:
К существующим объектам OSM добавить дополнительные теги: полный адрес, почтовый индекс, ссылку на ГАР-объект (его GUID), год постройки, этажность;
Дополнить новыми объектами на основе данных ПКК, тем самым увеличив их количество почти вдвое.
Готов сформировать такие данные, если кто возьмётся за такую загрузку.