powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение адреса и КЛАДР
20 сообщений из 20, страница 1 из 1
хранение адреса и КЛАДР
    #33977530
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересует кто как с КЛАДР-ом интегрирует свои системы.
Дело в том что КЛАДР такая мутная вещь, в которой все на естественных ключах, транзитивные зависимости... вообщем кто сталкивался, тот знает.
Хранить ли адреса в своих базах в формате КЛАДР-а или попытаться каким то образом интегрироваться, как?
Если есть у кого то опыт, поделитесь пожалуйста.
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #33977700
iamhere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Храни в своем формате и делай привязку к кодам КЛАДРа
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #33978217
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Храним. Полная задница этот КЛАДР. Впрочем, естественные ключи (кстати, с чего вы взяли, что они естественные?) не самая большая беда.
А самая большая беда то, что первоисточники с адресами составлены не по КЛАДР. И то, что КЛАДР сам меняется.

Nobody faults but mine... (LZ)
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #33978384
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В КЛАДР мутная концепция изменений. Актуальные данные вполне понятны и аккуратно разложены по записям вплоть до улиц.
Разделены понятия административное деление на 4 уровня ( в кодах) и тип (город, село, ...) Так, город может находиться на любом уровне кроме второго. Это создает сложности при сопряжении с системами имеющими таблицы Регион и Город. Как записано в конституции , Москва и Санкт Петербург одновременно и субъекты РФ и города. Я в этом случае по простому записал их в обе таблицы.
Для практического использования удобно таблицу KLADR дополнить явно выделенными полями (синтаксис ORACLE):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
INSERT INTO  x_KLADR
SELECT
  CODE, SOCR, "NAME", "INDEX", GNINMB,UNO,OCATD,STATUS,
  substr(CODE, 1 , 11 ) xk_Code,        -- СС РРР ГГГ ППП Собственно код без флага актуальности
  substr(CODE, 1 , 2 ) xk_1RFSubject_Code,  -- СС Сегмент субъект РФ 
  substr(CODE, 3 , 3 ) xk_2Region_Code,     -- РРР Сегмент район
  substr(CODE, 6 , 3 ) xk_3City_Code,       -- ГГГ Сегмент город
  substr(CODE, 9 , 3 ) xk_4Town_Code,       -- ППП Сегмент населенный пуект в городе
  substr(CODE, 12 , 2 ) xk_Actual_Flag , -- АА флаг актуальности
  -- Уровень
  CASE  WHEN substr(code, 9 , 3 )<>'000' THEN '4'
        WHEN substr(code, 6 , 3 )<>'000' THEN '3'
        WHEN substr(code, 3 , 3 )<>'000' THEN '2'
        ELSE '1'
  END xk_Level,
  -- Предок
  CASE CASE WHEN substr(code, 9 , 3 )<>'000' THEN '4'
            WHEN substr(code, 6 , 3 )<>'000' THEN '3'
            WHEN substr(code, 3 , 3 )<>'000' THEN '2'
            ELSE '1'
       END
       WHEN '1' THEN NULL
       WHEN '2' THEN RPad(substr(CODE, 1 , 2 ), 11 ,'0')
       WHEN '3' THEN RPad(substr(CODE, 1 , 5 ), 11 ,'0')
       WHEN '4' THEN RPad(substr(CODE, 1 , 8 ), 11 ,'0')
  END  xk_Parent_Code,
  -- текст до первой заглавной буквы, знака N или цифры - своего рода список под типов ( x_Socr_In_Names)
  Trim(SubStr("NAME", 1 ,InStr (translate( name
                                      ,'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ1234567890N'
                                      , RPad('*',Length('АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ1234567890N'),'*') )
                            ,'*', 1  ) -  1 
                    )) xk_Name_Type,
  -- текст до '('  - собственно наименование
  CASE WHEN InStr("NAME",'(', 1 ) >  0  THEN
       RTrim(SubStr("NAME", 1 ,InStr("NAME",'(', 1 )- 1 ))
       ELSE "NAME" END  xk_Name,
  -- текст начиная с '('...  - комментарий, разрешает неоднозначность наименования в пределах предка.
  CASE WHEN InStr("NAME",'(', 1 ) >  0  THEN
       LTrim(SubStr("NAME", InStr("NAME",'(', 1 )))
       ELSE NULL END  xk_Name_Comm
Можно по дополнительным полям построить индекс. (Конечно в Оракл, можно пользоваться FBI ).
Далее x_KLADR использовался для проверки существующих адресных баз и автоматического присвоения кодов КЛАДР "хорошим" адресным объектам, а также для подгузки каких-то данных, скажем городов областного подчинения.
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #33979048
drunk2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мы слили весь кладр в одно дерево + таблица address которая содержит id_kladr, дом, кв...
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #33979574
Фотография smeh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мы его загрузили по разным таблицам:
- регионы,
- города,
- районы,
- насел.п.
- улицы

а таблица адреса такая:
- индекс
- регион
- район
- город
- нас.пункт
- улица
- дом
- корпус
- квартира
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #34083180
Фотография smoyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To smeh
Былоб неплохо узнать структуру таблиц районов, городов и нас. пунктов.
Я собсно тоже так сделал, но у меня структура таблин не нормализована по нормальному:

Район
id Код_Региона Код_Района name и т.д.

Город
id Код_Региона Код_Района Код_Города name и т.д.

Нас. пункт
id Код_Региона Код_Района Код_Города Код_Нас.пункта name и т.д.

Избыточная инфа, но как от нее избавится непонятно (разве что декомпозицией, но тогда нарушается логика)
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #34085268
Фотография smeh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас тоже так же.
никуда не избавится от этого, а то навводят таких адресов, замучеешься разгребать.
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #34089915
Фотография smoyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To drunk2
Если зайдете сюда еще как-нибудь, обьясните, как вы сделали деревом. Такой вариант у нас тоже имелся, загнать все записи в одну таблицу (тем более информация об объектах одна и та-же что о регионах, что о районах, что о городах и нас. пунктах, т.е. набор полей один и тот-же), структура - дерево, и сделать в ней ссылку на саму себя. Какой вариант лучше я сообразить не смог, выбрал разбивку на таблицу потому-как он проще (вроде).
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #34094466
drunk2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все слито в эту таблицу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE TABLE kladr
(
  id_kladr int4 NOT NULL DEFAULT nextval('kladr_id_seq'),
  id_kladr_parent int4,
  kladr_name varchar( 40 ) NOT NULL,
  socr varchar( 10 ),
  country_code int2, -- код страны
  region_code int2, -- код региона
  area_code int2, -- код района
  city_code int2, -- код города
  item_code int2, -- код населенного пункта
  urgecy_code int2, -- код актуальности наименования адресного объекта
  street_code int2, -- street code
  zip_code int4,
  gnimb int2,
  uno int2,
  ocatd numeric( 11 ),
  kl_status numeric( 1 ),
  is_kladr int2 DEFAULT  0 , -- 1 - original kladr, 0 - new string
  note varchar( 511 ),
  status int2 NOT NULL,

  CONSTRAINT pk_kladr PRIMARY KEY (id_kladr),
  CONSTRAINT fk_kladr_parent FOREIGN KEY (id_kladr_parent)
      REFERENCES kladr (id_kladr) 
)
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #34102608
Фотография johndes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я взял кладр в чистом виде, разбивая код на 4 части при запросе делю так:

select code, name, socr from kladr_kladr where
code like "'.$a.'00000000000" or
code like "'.$a.$b.'00000000" or
code like "'.$a.$b.$c.'00000" or
code like "'.$a.$b.$c.$d.'00"
order by code
это объект и его предки...

select code, name, socr from kladr_kladr where
(("'.$code.'" like "0000000000000" and code like "__00000000000") or
("'.$code.'" like "__00000000000" and code like "'.$a.'___00000000") or
("'.$code.'" like "_____00000000" and code like "'.$a.$b.'___00000") or
("'.$code.'" like "________00000" and code like "'.$a.$b.$c.'___00"))
and code not like "'.$code.'"
order by name
а это дети...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
хранение адреса и КЛАДР
    #36547935
1234123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень нужна база КЛАДР в формате:
ID PARENT NAME(вместе с сокращением)
Подгружатся узлы дерева будут динамически.
У кого нибудь есть в sql?
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #36547948
legacy100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1234123, вам нужная как я понял в таком формате:

1 0 г.Пермь
2 1 р-н.Индустриальный
3 1 р-н. Свердловский
4 2 ул.Мира
5 4 д.114
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #36548129
dvim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учтите что могут быть еще адреса, не попадающие в Кладр
это вся заграница (у нас покупатели были без адресов в РФ)
а во вторых те же воинские части, например....
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #36548137
1234123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
legacy100, да именно. Искал в тырнете, обсуждается много, а готовой базы не выкладывают, жадничают.

P.S. заграница не нужна.
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #36551596
donriga77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Преобразовал таблицы кладр, улицы, дома с помощью:

автор
update doma set ss = left(code,2) , rrr = substring(code,3,3), ggg = substring(code,6,3),
ppp = substring(code,9,3), uuuu = substring(code,12,4), dddd = substring(code,16,4) from doma

update kladr set ss = left(code,2), rrr = substring(code,3,3), ggg = substring(code,6,3), ppp = substring(code,9,3) from kladr

update street set ss = left(code,2), rrr = substring(code,3,3), ggg = substring(code,6,3), ppp = substring(code,9,3), uuuu = substring(code,12,4)
from street

Как теперь сделать полноценный иерархический справочник? с отдельным числовым идом и парентом
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #36552732
гость1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здесь кто нибудь живой есть?
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #36596724
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бывают тут живые ))
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #36607596
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
КЛАДР вполне адекватный формат имеет, не вижу смысла его во что-то преобразовывать. Как работать - см, например, здесь:
http://geomapx.blogspot.com/search/label/КЛАДР
...
Рейтинг: 0 / 0
хранение адреса и КЛАДР
    #36625255
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Улицы можно брать из кладра, районы, города из ОКАТО.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение адреса и КЛАДР
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]