0
Not a bug

Подсказка по адресу "г Краснодар, ул им Калинина, д 13/59" возвращает "fias_id":"18aaae78-6ec2-46c7-a421-9efbd057e254","fias_level":"7", но такого id в БД ФИАС нет.

Anonymous 3 years ago updated by Антон 3 years ago 5

Нет её ни в DBF, ни по поиску по GUID на сайте ФИАС. Ну и дополнительно вопрос -- поле street_fias_id в подсказках есть, но не заполняется -- почему?

Answer

Answer
Not a bug

Дело в том, что в ФИАС нет дома 13/59 по улице Калинина. Но в ФИАС нет многих реально существующих домов. Чтобы не терять такие адреса, мы их подсказываем. Поэтому:

  • Подсказки отдают "fias_level": "7" (значит, что адрес найден в ФИАС до улицы);
  • отдают код ФИАС ближайшего существующего в ФИАС дома (г Краснодар, ул им Калинина, д 13).

В DBF запись есть, вот выдержка из ФИАС от 18.04.2016:

HOUSE23.DBF, поле HOUSEGUID.

AOGUID    |8481b277-8697-462a-b3ed-2c174447e3a2
BUILDNUM  |          
ENDDATE   |06.06.2079
ESTSTATUS |2
HOUSEGUID |18aaae78-6ec2-46c7-a421-9efbd057e254
HOUSEID   |18aaae78-6ec2-46c7-a421-9efbd057e254
HOUSENUM  |13        
STATSTATUS|    0
IFNSFL    |2311
IFNSUL    |2311
OKATO     |03401370000
OKTMO     |03701000   
POSTALCODE|350044
STARTDATE |07.11.2014
STRUCNUM  |          
STRSTATUS |0
TERRIFNSFL|    
TERRIFNSUL|    
UPDATEDATE|03.01.2015
NORMDOC   |                                    
COUNTER   |  67

Поиск по GUID на сайте ФИАС обычно работает не очень хорошо :)

Answer
Not a bug

Дело в том, что в ФИАС нет дома 13/59 по улице Калинина. Но в ФИАС нет многих реально существующих домов. Чтобы не терять такие адреса, мы их подсказываем. Поэтому:

  • Подсказки отдают "fias_level": "7" (значит, что адрес найден в ФИАС до улицы);
  • отдают код ФИАС ближайшего существующего в ФИАС дома (г Краснодар, ул им Калинина, д 13).

В DBF запись есть, вот выдержка из ФИАС от 18.04.2016:

HOUSE23.DBF, поле HOUSEGUID.

AOGUID    |8481b277-8697-462a-b3ed-2c174447e3a2
BUILDNUM  |          
ENDDATE   |06.06.2079
ESTSTATUS |2
HOUSEGUID |18aaae78-6ec2-46c7-a421-9efbd057e254
HOUSEID   |18aaae78-6ec2-46c7-a421-9efbd057e254
HOUSENUM  |13        
STATSTATUS|    0
IFNSFL    |2311
IFNSUL    |2311
OKATO     |03401370000
OKTMO     |03701000   
POSTALCODE|350044
STARTDATE |07.11.2014
STRUCNUM  |          
STRSTATUS |0
TERRIFNSFL|    
TERRIFNSUL|    
UPDATEDATE|03.01.2015
NORMDOC   |                                    
COUNTER   |  67

Поиск по GUID на сайте ФИАС обычно работает не очень хорошо :)

Я настаиваю, что это ошибка. В документации сказано:

data.fias_id

Код ФИАС:

  • HOUSE.HOUSEGUID, если дом найден в ФИАС по точному совпадению;
  • HOUSEINT.INTGUID, если дом найден в ФИАС как часть интервала;
  • ADDROBJ.AOGUID в противном случае.

Подставить вместо него GUID другого дома -- это отсебятина.

Ну и очень хочется иметь street_fias_id. Он очень нужен.

По точному совпадению найден соседний дом. Если бы дома 13 не было, а был дом 11 (например) – мы бы поставили fias_id интервала. Если интервала нет (а так часто бывает) – поставили бы fias_id вышестоящего объекта (улицы).

Подставить вместо него GUID другого дома -- это отсебятина.

Уточните, пожалуйста, почему не нравится существующая логика? Какая у вас бизнес-задача? И какой код ФИАС вы ожидаете получить для несуществующего дома?


Насчет street_fias_id – позже мы будем заполнять это поле (и все остальные *_fias_id поля). Пока что не заполняем их.

Ладно, неважно уже (написал большой пост, но возникла ошибка при отправке, переписывать не хочется). Сделаю поправку на вашу логику. Всё равно без street_fias_id мне загонять в SQL таблицу домов и диапазонов, чтоб GUID улицы выдернуть.

Но зачем?

Вы можете брать kladr_id дома, обрезать его до уровня улицы, посылать его в наше API поиска по коду КЛАДР/ФИАС. Затем получать улицу по коду КЛАДР. И вытаскивать оттуда fias_id улицы.