ObjectLand поддерживает три различных метода геокодирования. Выбор одного из этих методов определяется тем, какая задача должна решаться с помощью геокодирования, с какой точностью должны размещаться на карте создаваемые объекты и какие данные имеются для выполнения геокодирования.
Координатное геокодирование требует для своего выполнения, чтобы в двух полях геокодируемой таблицы содержались значения координат X и Y. При выполнении геокодирования для каждой записи таблицы создается точечный объект с указанными координатами.
При выполнении координатного геокодирования можно также выполнить трансформацию координат создаваемых объектов. Это полезно в том случае, если координаты, содержащиеся в таблице, заданы в системе координат, отличающейся от системы координат данной карты.
Координатное геокодирование – это самый простой из методов геокодирования, который в то же время позволяет наиболее точно разместить создаваемые объекты на карте.
Геокодирование по объектам основано на привязке создаваемых точечных объектов к положению существующих объектов какого-либо типа. Такой метод геокодирования применяется, например, в том случае, если геокодируемая таблица содержит список адресов интересующих пользователя объектов (магазинов, станций обслуживания и т.п.).
Определение положения объекта по его адресу – это задача, которую каждому человеку не раз приходилось решать на практике. Для ее решения достаточно иметь подробный план города, где показаны все здания и указаны их адреса. Тогда положение искомого объекта можно определить с точностью до здания.
В соответствии с этой аналогией, для геокодирования по объектам в ObjectLand необходимо, кроме исходной геокодируемой таблицы и геокодируемого типа, указать еще два компонента ГБД, участвующих в операции:
ссылочный тип – тип объектов, к положению которых на карте будут привязываться создаваемые объекты (например, в качестве ссылочного можно использовать тип объектов «Здание»);
ссылочную таблицу – таблицу, записи которой связаны с объектами ссылочного типа и в то же время содержат данные, позволяющие с каждой записью геокодируемой таблицы связать запись ссылочной таблицы. Таким образом, через посредство ссылочной таблицы можно для каждой записи геокодируемой таблицы найти соответствующий объект ссылочного типа и использовать этот объект для определения положения создаваемого объекта на карте.
Если ссылочный тип – «Здания», то в качестве ссылочной таблицы можно использовать таблицу «Паспорта зданий», записи которой содержат, в частности, адреса соответствующих зданий.
По сравнению с координатным геокодированием, применение геокодирования по объектам дает меньшую точность, но зато не требует явного указания координат создаваемых объектов.
Адресное геокодирование основано на приближенном вычислении положения создаваемого объекта относительно заданного линейного объекта.
Продолжая аналогию с использованием плана города, можно представить себе такой план, на котором не указаны адреса конкретных зданий, но для каждой улицы на каждом квартале нанесены минимальное и максимальное значение адресов зданий этого квартала. Если предположить, что здания в некотором квартале имеют номера от 100 до 120, то объект, который находится в здании с номером 118, должен быть размещен вблизи конца квартала.
В ObjectLand для выполнения адресного геокодирования необходимо, кроме исходной геокодируемой таблицы и геокодируемого типа, указать еще два компонента ГБД, участвующих в операции:
ссылочный тип – линейный тип объектов, относительно которых будет вычисляться положение на карте создаваемых объектов. В качестве ссылочного типа можно, например, использовать тип объектов «Сегменты улиц», который содержит отрезки улиц, соответствующие отдельным кварталам;
ссылочную таблицу сегментов – таблицу, записи которой, во-первых, связаны с объектами ссылочного типа, во-вторых, содержат данные, позволяющие с каждой записью геокодируемой таблицы связать запись ссылочной таблицы и вычислить положение создаваемого объекта.
Если ссылочный тип – «Сегменты улиц», то в качестве ссылочной таблицы можно использовать таблицу «Сегменты», записи которой содержат код улицы и диапазон адресов зданий соответствующего сегмента.
Точность определения координат объектов при адресном геокодировании зависит от того, насколько сильно различаются по размерам объекты, соответствующие различным адресам. Если в приведенном выше примере здание номер 120 занимает половину всего квартала, то положение здания номер 118 будет вычислено весьма неточно.
Для любого из описанных методов геокодирования имеется дополнительная возможность установить связи между создаваемыми объектами и записями таблиц. В качестве связанных таблиц могут выступать как сама геокодируемая таблица, так и другие таблицы ГБД. В последнем случае информация из геокодируемой таблицы используется для определения записи связанной таблицы, присоединяемой к создаваемому объекту.