Скоро будет два года, как стало возможным привязывать почтовые индексы к точкам. Однако, переход в соответствующий слой явно указывает, что данная механика полноценно не работает. В Орловской области, где живу, сколько-нибудь существенно индексы были проставлены только в областном центре. Что наиболее критично, адресные точки в нескольких районах города имели неверные индексы.
В условиях ручной привязки к адресным точкам, поддерживать индексы в актуальном состоянии очень сложно. Получается нудное и бестолковое накликивание (этакий корова кликер 2.0). Предлагаю добавить возможность создавать почтовый индекс на уровне Дорог (улиц) и Населенных пунктов. Если индекс проставлен на уровне населенного пункта, то все Адресные точки, привязанные к подчиненным Дорогам (улицам), получат этот индекс. Если индекс Населенного пункта не задан, его можно задать на уровне Дороги (улицы) и адресные точки также должны его получить.
Такое изменение на порядки сократит объём механических действий для поддержания актуальности базы индексов. Вместо того, чтобы править сотни адресных точек в поселках и деревнях можно будет исправить только индекс Населенного пункта. Аналогично и в городах — большая часть улиц находится в одном индексе. Также это будет полезно для новых адресных точек — не нужно думать об индексе, если он уже задан для дороги или Населенного пункта.
Алгоритм:
К объектам «Дорога» и «Административная единица\населённый пункт» добавляется по два атрибута: чек-бокс «Единый индекс» и текстовое поле «Индекс».
Функция вывода адреса, везде, где используется, модифицируется: вместо прямого получения индекса из адресной точки, добавляется проверка на задание индекса на уровне Населённого пункта и Дороги, к которым адресная точка привязана. Соответственно, на вывод отдается индекс самого высокого уровня: индекс Населенного пункта, если задан; иначе индекс Дороги, если задан; иначе индекс адресной точки.
Если индекс создан на более высоком уровне, то в младших уровнях на НЯК соответствующие поля становятся неактивными и заполняются данными из верхнего уровня.
Существующие данные об индексе в адресных точках не трогаем, если индекс будет задан на более высоком уровне, то просто их игнорируем. Если в будущем единый индекс на уровне Дороги или Населенного пункта будет удален, то тогда вновь начинаем работать с индексами в Адресных точках.
Предложение, конечно, выглядит как костыль, но он лучше, чем тот, что есть сейчас.
P. S. Еще два небольших предложения по теме:
Создать технический индекс с именем «Отсутствует» и без ограничения по расстоянию до него. Этот индекс можно будет использовать для различных СНТ и т. п., чтобы визуально отличать точки, у которых индексы еще не проставлены, от тех, у которых индекса вообще нет.
Для индексов, у которых нет привязанных адресных точек изменить оттенок цвета на НЯК, чтобы можно было легко их увидеть для последующей привязки или удаления.