Каким образом можно преобразовать два идентификатора ГАР в таблицу, структурированную по столбцам с указанием области, района, города (села), улицы, дома, корпуса, квартиры и полного адреса? Данные ГАР содержат информацию о иерархии адресов в колонке path таблицы adm_hierarchy и уровень адресных объектов в колонке level таблицы addr_obj.
Для разбора адреса необходимо использовать информацию из колонок "path" и "level" таблиц "adm_hierarchy" и "addr_obj". 1. Сначала необходимо определить иерархию адреса, используя колонку "path" из таблицы "adm_hierarchy". Здесь "path" представляет собой путь от общего к конкретному адресному объекту. Например, путь может выглядеть следующим образом: "Россия/Москва/ЦАО/Тверская ул./д. 15/корп. 1/кв. 10". 2. Затем необходимо определить уровень каждого адресного объекта, используя колонку "level" из таблицы "addr_obj". Уровень определяет, является ли адресный объект областью, районом, городом, улицей, домом, корпусом, квартирой и т. д. 3. Далее необходимо структурировать адрес по столбцам. Например: - Область: значения из иерархии адреса с уровнем "область". - Район: значения из иерархии адреса с уровнем "район". - Город (село): значения из иерархии адреса с уровнем "город" или "село". - Улица: значения из иерархии адреса с уровнем "улица". - Дом: значения из иерархии адреса с уровнем "дом". - Корпус: значения из иерархии адреса с уровнем "корпус". - Квартира: значения из иерархии адреса с уровнем "квартира". 4. Для полного адреса можно объединить структурированные значения адреса с помощью разделителей, например, через запятую или слэш. Например: - Полный адрес: "Москва, ЦАО, Тверская ул., д. 15, корп. 1, кв. 10". Таким образом, используя информацию из таблицы "adm_hierarchy" (колонка "path") и таблицы "addr_obj" (колонка "level"), можно разобрать адрес и структурировать его по столбцам, а затем объединить в полный адрес.
Добрый день. Тоже скачали справочник. Удалось создать запрос, который выводит плоскую таблицу.
А вот часть запроса как разделить на колонки path
select amh.objectid, (0 || split_part(amh."path", '.', 1))::integer as col1, (0 || split_part(amh."path", '.', 2))::integer as col2, (0 || split_part(amh."path", '.', 3))::integer as col3, (0 || split_part(amh."path", '.', 4))::integer as col4, (0 || split_part(amh."path", '.', 5))::integer as col5, (0 || split_part(amh."path", '.', 6))::integer as col6, (0 || split_part(amh."path", '.', 7))::integer as col7 from as_mun_hierarchy amh where objectid in (select objectid from as_apartments aa where aa.isactual = 1 and aa.isactive = 1 and aa.enddate > current_date)