Комментарии 10
Но пока работы еще очень много.
Порядка как не было так и нет.
Например дом 22А может быть записан как номер дома «22А» так и номер дома «22» корпус «А» или дом «22» строение «А»
И при попытке сопоставить со своими справочниками приходится переходить на ручное управление.
Был у нас до ГИСа проект ЭЛЬПАС, дак там умудрялись и латинцией заводить.
Щас быстренько глянул house66 — латиницы нет. уже хорошо.
Преобразовать гигабайтные XML в CSV оказалось не простой задачей.
У меня есть решение на MS SQL у него есть компонент SQLXMLBulkLoad, для него достаточно указать особым образом аннотированную XSD схему и XML файл.
Дальше он сам создает таблицы и загружает данные из XML.
В MySql тоже есть подобный функционал.
Но к сожалению обе эти СУБД не включены в реестр отечественного ПО, и единственный вариант для меня это PG SQL. Беглый поиск в интернете показал что ничего подобного для PG нет, всё упирается в загрузку XML целиком и дальше с ним работать, что для ГАР не удобно т.к. много связей между таблицами, плюс нет уверенности что PG нормально загрузит XML на 5-6 ГБ, а всего там 30 гб XML в арихиве и 90 при распаковке.
MS SQL первую загрузку всего ГАР выполняет за 4,5 часа и это меня устраивает.
Ещё сложность в том что нужно не самому это сделать один раз, а сделать инструмент для пользователей которые будут скачивать классификатор (или дельты) и уже сами загружать данные.
Почему в файле AS_ADDROBJ_*.XML нет всех индексов? Например "195426", вроде есть и улица и дом где это отделение находится https://gdeposylka.ru/courier/russian-post/195426, а индекса нет в базе.
Мне трудно точно ответить на Ваш вопрос, т.к. я только пользователь данных ФИАС. А данные ФИАС - это "дитя" двух "нянек": ФНС(оператора) и администрации населенного пункта (в Вашем случае города Санкт-Петербурга). ФНС только хранит данные, а ответственность за них несет администрация города.
Можно попробовать направить Ваш вопрос в ФНС (https://www.nalog.gov.ru/rn77/service/service_feedback/?service=22). Но, скорее всего, Вам предложат обратится в службу администрации (или районной администрации) Санкт-Петербурга, которая предоставляет эти данные.
Я думаю, что поле POSTALCODE (почтовый индекс) в таблице ADDROB78 остается не заполненным потому, что дома на улице обслуживаются не одним, а несколькими почтовыми отделениями. Т.е. одной улице могут соответствовать несколько почтовых индексов. Но поле POSTALCODE имеет длину 6 символов, так что больше одного почтового индекса в него не запишешь. В этом случае можно было бы включить поле POSTALCODE в таблицу домов HOUSE, чего сделано небыло. Правда, это приведет к увеличению трудоемкости заполнения этой таблицы . Другим, но не слишком хорошим, решением могло быть разрешение вводить в поле POSTALCODE таблицы ADDROB более одного почтового индекса.
Есть и более сложные варианты решения этой задачи.
Поэтому я думаю, что одной из причин того, что «файле AS_ADDROBJ_*.XML нет всех индексов», является ошибка в схеме хранения данных или обменного формата ФИАС.
Дома ФИАС в среде PostgreSQL