Стандартизация адресов - 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 Стандартизация адресов
| Field | Type | Description |
|---|---|---|
ID* PK | int | Уникальный идентификатор записи SO+ |
ID_Record* | int | Ссылка на запись, адрес которой проходит стандартизацию |
ObjectCode* | varchar(max) | Объект стандартизации |
ID_Geographygeography | int | Географическая иерархия |
ID_Statusgeo-status | tinyint | Статус обработки адреса |
ID_GeospatialStatusgeospatial-status | tinyint | Статус координат |
ID_CityDistrictcity-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_Countrycountry | int | Страна |
AddrAttributes | nvarchar(100) | Атрибуты адреса |
geography Географическая иерархия
| Field | Type | Description |
|---|---|---|
ID* PK | int | Уникальный идентификатор записи SO+ |
ID_GeographyTypegeography-type | int | Тип географии |
Name | varchar(1000) | Наименование |
Description | varchar(2000) | Описание |
ID_Parentgeography | int | Родительская запись |
ID_Countrycountry | int | Страна |
FlagActive* | bit | Признак активности записи |
RowVersion* | bigint | Версия записи |
ID_ParentLevel1geography | int | Родительская запись первого уровня |
ID_ParentLevel2geography | int | Родительская запись второго уровня |
ID_ParentLevel3geography | int | Родительская запись третьего уровня |
FullName_ParentLevel3 | varchar(4000) | Родительская запись третьего уровня (описание) |
Level | tinyint | Уровень |
PostalCode | varchar(20) | Почтовый индекс |
geography-ext Географическая иерархия переводы
| Field | Type | Description |
|---|---|---|
ID* PK | int | Уникальный идентификатор записи SO+ |
ID_Geography*geography | int | Географическая иерархия |
ID_Language_ext*language | tinyint | Идентификатор языка |
Name | nvarchar(500) | Наименование |
Description | nvarchar(1000) | Описание |
RowVersion* | biging | Версия записи |
ID_ParentLevel1geography | int | Родительская запись первого уровня |
geography-attribute Атрибуты географической иерархии
| Field | Type | Description |
|---|---|---|
ID* PK | int | Уникальный идентификатор записи SO+ |
ID_Geography*geography | int | Географическая иерархия |
Name* | varchar(100) | Наименование атрибута |
Value* | varchar(100) | Значение атрибута |
RowVersion* | bigint | Версия записи |
ID_ParentLevel1geography | int | Родительская запись первого уровня |
ID_ParentLevel1 - столбец группировки для расчета контрольных сумм
geo-status Статус стандартизации адреса
| Field | Type | Description |
|---|---|---|
ID* PK | int | Уникальный идентификатор записи SO+ |
Code | varchar(5) | Код |
Name | varchar(255) | Наименование |
Description | varchar(250) | Описание |
RowVersion* | bigint | Версия записи |
geospatial-status Статус координат
| Field | Type | Description |
|---|---|---|
ID* PK | int | Уникальный идентификатор записи SO+ |
Code* | varchar(100) | Код |
Name* | varchar(255) | Наименование |
RowVersion* | bigint | Версия записи |
geography-type Тип географии
| Field | Type | Description |
|---|---|---|
ID* PK | int | Уникальный идентификатор записи SO+ |
Code | nvarchar(255) | Код |
Name | nvarchar(255) | Наименование |
FlagActive* | bit | Признак активности записи |
RowVersion* | bigint | Версия записи |
country Страна
| Field | Type | Description |
|---|---|---|
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 Районы города
| Field | Type | Description |
|---|---|---|
ID* PK | int | Уникальный идентификатор записи SO+ |
ID_GeographyCity*geography | int | Город из географической иерархии |
ID_GeographyType*geography-type | int | Тип географии |
ID_Parentcity-district | int | Родительская запись (округ города) |
Name* | varchar(1000) | Наименование |
OKATO | varchar(11) | Код из справочника ОКАТО РФ |
FlagActive* | bit | Флаг активности |
RowVersion* | bigint | Версия записи |