Стандартизация адресов - geography...

Адреса из записей источников справочника клиентов проходят процесс стандартизации, чтобы получить:

Поддерживается стандартизация адресов Украины и Казахстана, путем ручного выбора субъекта из иерархии страны. В будущем планируем добавить поддержку обработки и других стран СНГ.

Стандартизированная адресная строка

Стандартизированная адресная строка — это эталонное написание адреса. Оно получается путём объединения данных из поля Description объекта geography и номера дома из поля House объекта geography-object-record. Также полная адресная строка хранится в поле geography-object-record/FullAddress.

Пример сопосотавления стандартизированная адресной строки и клиента/юр. лица в sql

-- Клиент select * from geo.GeographyObjectRecord as gor inner join ref.Customer as c on c.ID = gor.ID_Record and gor.ObjectCode = 'ref.Customer' -- Юр. лицо select * from geo.GeographyObjectRecord as gor inner join ref.LegalEntity as c on c.ID = gor.ID_Record and gor.ObjectCode = 'ref.LegalEntity'

Географическая иерархия

Географическая иерархия позволяет разбить любой адрес на составляющие, определить, что в нем является городом, улицей и субъектом. Эти данные хранятся в объекте geography — она представляет собой parent-child иерархию, где на нижнем уровне будет улица, родителем для улицы — город и так далее.

В качестве примера разберем адрес Россия, г. Воронеж, ул. Ленина д. 17:

  • ул. Ленина — нижний уровень.

  • г. Воронеж — родитель для ул. Ленина и других улиц города, содержащихся в справочнике.

  • Воронежская область — родитель для г. Воронеж и других географических объектов области, содержащихся в справочнике.

Для удобства работы мы вывели денормализованные поля:

  • ID_ParentLevel1 — уровень административно-территориального или федеративного устройства: субъект РФ, республика, край и т.д.

  • ID_ParentLevel2 — уровень городов. Если адрес является не городской территорией, то проставляется значение из ID_ParentLevel1.

  • ID_ParentLevel3 — уровень населенного пункта.

Коды ОКАТО и ФИАС GUID

В объекте geography-attribute хранится перечисление ссылок на доступные классификаторы для записи географической иерархии. На данный момент поддерживаются классификаторы: ОКАТО и ФИАС GUID.
Данные еженедельно обновляются из Росстата и ФНС.

Районы и округа города

Для крупных городов России поддерживается муниципальное деление. Районы и округа города хранятся в отдельной объекта city-district, они определяются по исходному адресу из объекта geography-object-record. Район города определен корректно, если статус координат - Утверждено или Утверждено автоматически. В остальных случаях, корректность определения района необходимо проверить.

Спецификация

geography-object-record Стандартизация адресов

FieldTypeDescription
ID* PK
int
Уникальный идентификатор записи SO+
ID_Record*
int
Ссылка на запись, адрес которой проходит стандартизацию
ObjectCode*
varchar(max)
Объект стандартизации
ID_Geography
geography
int
Географическая иерархия
ID_Status
geo-status
tinyint
Статус обработки адреса
ID_GeospatialStatus
geospatial-status
tinyint
Статус координат
ID_CityDistrict
city-district
int
Районное деление города
Address*
varchar(max)
Адрес источника (исходный)
House
varchar(50)
Номер дома
Latitude
varchar(12)
Широта (координата)
Longitude
varchar(12)
Долгота (координата)
FullAddress
varchar(1000)
Стандартизированный адрес
Comment
varchar(2000)
Комментарий оператора к адресу
RowVersion*
bigint
Версия записи
ID_mapping_DataSource*
data-source
int
Data source
ID_AddressAccuracy
int
Address Accuracy
ID_Country
country
int
Страна
AddrAttributes
nvarchar(100)
Атрибуты адреса

geography Географическая иерархия

FieldTypeDescription
ID* PK
int
Уникальный идентификатор записи SO+
ID_GeographyType
geography-type
int
Тип географии
Name
varchar(1000)
Наименование
Description
varchar(2000)
Описание
ID_Parent
geography
int
Родительская запись
ID_Country
country
int
Страна
FlagActive*
bit
Признак активности записи
RowVersion*
bigint
Версия записи
ID_ParentLevel1
geography
int
Родительская запись первого уровня
ID_ParentLevel2
geography
int
Родительская запись второго уровня
ID_ParentLevel3
geography
int
Родительская запись третьего уровня
FullName_ParentLevel3
varchar(4000)
Родительская запись третьего уровня (описание)
Level
tinyint
Уровень
PostalCode
varchar(20)
Почтовый индекс

geography-ext Географическая иерархия переводы

FieldTypeDescription
ID* PK
int
Уникальный идентификатор записи SO+
ID_Geography*
geography
int
Географическая иерархия
ID_Language_ext*
language
tinyint
Идентификатор языка
Name
nvarchar(500)
Наименование
Description
nvarchar(1000)
Описание
RowVersion*
biging
Версия записи
ID_ParentLevel1
geography
int
Родительская запись первого уровня

geography-attribute Атрибуты географической иерархии

FieldTypeDescription
ID* PK
int
Уникальный идентификатор записи SO+
ID_Geography*
geography
int
Географическая иерархия
Name*
varchar(100)
Наименование атрибута
Value*
varchar(100)
Значение атрибута
RowVersion*
bigint
Версия записи
ID_ParentLevel1
geography
int
Родительская запись первого уровня

ID_ParentLevel1 - столбец группировки для расчета контрольных сумм

geo-status Статус стандартизации адреса

FieldTypeDescription
ID* PK
int
Уникальный идентификатор записи SO+
Code
varchar(5)
Код
Name
varchar(255)
Наименование
Description
varchar(250)
Описание
RowVersion*
bigint
Версия записи

geospatial-status Статус координат

FieldTypeDescription
ID* PK
int
Уникальный идентификатор записи SO+
Code*
varchar(100)
Код
Name*
varchar(255)
Наименование
RowVersion*
bigint
Версия записи

geography-type Тип географии

FieldTypeDescription
ID* PK
int
Уникальный идентификатор записи SO+
Code
nvarchar(255)
Код
Name
nvarchar(255)
Наименование
FlagActive*
bit
Признак активности записи
RowVersion*
bigint
Версия записи

country Страна

FieldTypeDescription
ID* PK
int
Уникальный идентификатор записи SO+
Code*
varchar(3)
Код
ShortName*
varchar(100)
Наименование
FullName*
varchar(1000)
Наименование
Alfa2Code*
varchar(2)
Код альфа-2
Alfa3Code*
varchar(4)
Код альфа-3
FlagActive*
bit
Признак активности записи
RowVersion*
bigint
Версия записи

city-district Районы города

FieldTypeDescription
ID* PK
int
Уникальный идентификатор записи SO+
ID_GeographyCity*
geography
int
Город из географической иерархии
ID_GeographyType*
geography-type
int
Тип географии
ID_Parent
city-district
int
Родительская запись (округ города)
Name*
varchar(1000)
Наименование
OKATO
varchar(11)
Код из справочника ОКАТО РФ
FlagActive*
bit
Флаг активности
RowVersion*
bigint
Версия записи