Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение адреса и КЛАДР / 20 сообщений из 20, страница 1 из 1
11.09.2006, 11:49
    #33977530
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
Интересует кто как с КЛАДР-ом интегрирует свои системы.
Дело в том что КЛАДР такая мутная вещь, в которой все на естественных ключах, транзитивные зависимости... вообщем кто сталкивался, тот знает.
Хранить ли адреса в своих базах в формате КЛАДР-а или попытаться каким то образом интегрироваться, как?
Если есть у кого то опыт, поделитесь пожалуйста.
...
Рейтинг: 0 / 0
11.09.2006, 12:35
    #33977700
iamhere
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
Храни в своем формате и делай привязку к кодам КЛАДРа
...
Рейтинг: 0 / 0
11.09.2006, 14:53
    #33978217
aag
aag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
Храним. Полная задница этот КЛАДР. Впрочем, естественные ключи (кстати, с чего вы взяли, что они естественные?) не самая большая беда.
А самая большая беда то, что первоисточники с адресами составлены не по КЛАДР. И то, что КЛАДР сам меняется.

Nobody faults but mine... (LZ)
...
Рейтинг: 0 / 0
11.09.2006, 15:32
    #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
11.09.2006, 18:27
    #33979048
drunk2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
мы слили весь кладр в одно дерево + таблица address которая содержит id_kladr, дом, кв...
...
Рейтинг: 0 / 0
12.09.2006, 07:48
    #33979574
smeh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
А мы его загрузили по разным таблицам:
- регионы,
- города,
- районы,
- насел.п.
- улицы

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

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

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

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

Избыточная инфа, но как от нее избавится непонятно (разве что декомпозицией, но тогда нарушается логика)
...
Рейтинг: 0 / 0
26.10.2006, 21:18
    #34085268
smeh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
У нас тоже так же.
никуда не избавится от этого, а то навводят таких адресов, замучеешься разгребать.
...
Рейтинг: 0 / 0
30.10.2006, 06:04
    #34089915
smoyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
To drunk2
Если зайдете сюда еще как-нибудь, обьясните, как вы сделали деревом. Такой вариант у нас тоже имелся, загнать все записи в одну таблицу (тем более информация об объектах одна и та-же что о регионах, что о районах, что о городах и нас. пунктах, т.е. набор полей один и тот-же), структура - дерево, и сделать в ней ссылку на саму себя. Какой вариант лучше я сообразить не смог, выбрал разбивку на таблицу потому-как он проще (вроде).
...
Рейтинг: 0 / 0
31.10.2006, 14:55
    #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
03.11.2006, 05:09
    #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
Период между сообщениями больше года.
29.03.2010, 12:53
    #36547935
1234123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
Очень нужна база КЛАДР в формате:
ID PARENT NAME(вместе с сокращением)
Подгружатся узлы дерева будут динамически.
У кого нибудь есть в sql?
...
Рейтинг: 0 / 0
29.03.2010, 12:58
    #36547948
legacy100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
1234123, вам нужная как я понял в таком формате:

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

P.S. заграница не нужна.
...
Рейтинг: 0 / 0
30.03.2010, 21:06
    #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
31.03.2010, 13:17
    #36552732
гость1000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
Здесь кто нибудь живой есть?
...
Рейтинг: 0 / 0
25.04.2010, 11:00
    #36596724
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
бывают тут живые ))
...
Рейтинг: 0 / 0
30.04.2010, 14:40
    #36607596
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
КЛАДР вполне адекватный формат имеет, не вижу смысла его во что-то преобразовывать. Как работать - см, например, здесь:
http://geomapx.blogspot.com/search/label/КЛАДР
...
Рейтинг: 0 / 0
13.05.2010, 12:04
    #36625255
Erik_Kartmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение адреса и КЛАДР
Улицы можно брать из кладра, районы, города из ОКАТО.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение адреса и КЛАДР / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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