Gremlin92
@Gremlin92
Целеустремленный

Как разложить адрес гар?

Есть допустим два идентификатора ГАР - один до улицы, второй до дома. Нужно развернуть их в таблицу по столбцам - область, район, город(село), улица, дом, корпус, квартира, адрес целиком. В гаре есть path в adm_hierarchy - там через точку указана иерархия адреса. В addr_obj есть колонка level:
1 – уровень региона
2 – уровень автономного округа (устаревшее)
3 – уровень района
35 – уровень городских и сельских поселений
4 – уровень города
5 – уровень внутригородской территории (устаревшее)
6 – уровень населенного пункта
65 – планировочная структура
7 – уровень улицы
75 – земельный участок
8 – здания, сооружения, объекта незавершенного строительства
9 – уровень помещения в пределах здания, сооружения
90 – уровень дополнительных территорий (устаревшее)
91 – уровень объектов на дополнительных территориях (устаревшее)
P.S. Нумерация похоже не правильная из интернета.
//донецкая респ
select name,typename,* from gar.addr_obj where level = '1' and isactual = 1 order by name

658d54d723490593137426.png
//ясиноватое
select name,typename,* from gar.addr_obj a
join gar.adm_hierarchy h on h.objectid = a.objectid
where h.parentobjid = 155815692
and isactual = 1 order by name

658d54ef70f8e367928979.png
//нетайлово
select name,typename,* from gar.addr_obj a
join gar.adm_hierarchy h on h.objectid = a.objectid
where h.parentobjid = 155816063
and isactual = 1 order by name

658d54f925591509937059.png
//безкаравайной
select name,typename,* from gar.addr_obj a
join gar.adm_hierarchy h on h.objectid = a.objectid
where h.parentobjid = 156148609
and isactual = 1 order by name

658d55075ac10652696866.png
//пусто
select name,typename,* from gar.addr_obj a
join gar.adm_hierarchy h on h.objectid = a.objectid
where h.parentobjid = 160316367
and isactual = 1 order by name

Тут пусто
//дом
select housenum,hs.* from gar.houses hs
join gar.adm_hierarchy h on h.objectid = hs.objectid
where h.parentobjid = 160316367
and isactual = 1 order by housenum

658d550f96270680260868.png
То есть идентификатор 8faa9729-75fd-4d4b-8b6e-a1a9f82515ab например до улицы безкаравайной хранится в objectguid столбце в таблице addr_obj, в этой же строчке будет и path - 155815692.155816063.156148609.160316367 в этой же строчке будет и level для данной улицы 8. Нужно path разрезать по точкам и сделать запросы для каждого числа(objectid) к таблице addr_obj и по уровню level'а записать в таблицу
658d5712ee7eb062646538.png
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы