Сравнение пространственных объектов между собой

Критерии пересечения объектов

Рисунок 769. Критерии пересечения объектов


STDistance(<объект_сравнения>)

Возвращает расстояние между ближайшими точками сравниваемых объектов.

STEquals(<объект_сравнения>)

Выполняет сравнение пространственного объекта, для которого вызвана функция, с пространственным объектом <объект_сравнения>. Сравнение выполняется по типу объектов, размерам и положению в пространстве.

Возвращает 1 (True), если объекты равны, и 0 (False) в обратном случае.

STDisjoint(<объект_взаимодействия>)

Проверяет отсутствие пересечений и касаний пространственного объекта, для которого вызвана функция, с пространственным объектом <объект_взаимодействия>.

Возвращает 1 (True), если <объект_взаимодействия> пространственно никак не накладывается, не пересекает и не касается данного объекта, и 0 (False) в обратном случае.

STTouches(<объект_касания>)

Проверяет, не касается ли <объект_касания> пространственного объекта, для которого вызвана функция.

Возвращает 1 (True) в случае касания и 0 (False) в обратном случае.

STWithin(<объект_вхождения>)

Проверяет объект, для которого вызвана функция, на вхождение в пространственный объект <объект_вхождения>. Пространственный объект считается входящим в другой объект, если все его точки лежат внутри границ другого объекта.

Возвращает 1 (True) в случае вхождения и 0 (False) в обратном случае.

STOverlaps(<объект_перекрытия>)

Проверяет, не перекрывает ли пространственный объект, для которого вызвана функция, пространственный объект <объект_перекрытия>. Считается, что один пространственный объект перекрывает другой, если часть его точек лежит внутри границ второго объекта, а часть – снаружи.

STCrosses(<объект_пересечения>)

Проверяет, пересекает ли пространственный объект, для которого вызвана функция, объект <объект_пересечения>. Пересекать другие объекты могут пространственные объекты типов LineString и Point.

Пересечением считается случай, в котором точки пересекающего объекта располагаются от одной границы пересекаемого объекта до другой, либо, в случае пересечения ломаной, достаточно расположения хотя бы одной точки пересекающего объекта на пересекаемой ломаной.

Возвращает 1 (True) в случае пересечения и 0 (False) в обратном случае.

STIntersects(<объект_взаимодействия>)

Проверяет пространственный объект, для которого вызвана функция, на пространственное взаимодействие с с объектом <объект_взаимодействия>. Взаимодействием считается касание, перекрытие, пересечение одного объекта другим и включение одного объекта в другой.

Возвращает 1 (True) в случае взаимодействия и 0 (False) в обратном случае.

STContains(<объект_вхождения>)

Проверяет, не включает ли пространственный объект, для которого вызвана функция, в себя пространственный объект <объект_вхождения>.

Возвращает 1 (True) в случае вхождения и 0 (False) в обратном случае.

STRelate(<объект_сравнения>,<матрица_сравнения>)

Выполняет сравнение пространственного объекта, для которого вызывает функция, с объектом <объект_сравнения> в соответствии с заданной матрицей сравнения <матрица_сравнения>.

Матрица сравнения является матрицей 3x3, в ячейках которой задается тип взаимодействия между внутренними областями, границами и внешними областями сравниваемых пространственных объектов. Матрица имеет вид, представленный таблицей (). Столбцы матрицы отвечают за один сравниваемый объект, строки – за другой.

В ячейках таблицы сравнения записывается, какое количество измерений должно иметь взаимодействие соответствующих частей объектов:

В аргументе функции Relate матрица взаимодействия записывается в виде строки, в которой перечислены требуемые значения всех ячеек матрицы сравнения, слева-направо, сверху-внизу.

Например, для двух пространственных объектов a и b строка a.Relate(b, "TFFFTFFFT") аналогична строке a.Equals(b).

Таблица 11. Матрица сравнения пространственных объектов

 Внутренняя областьГраницаВнешняя область
Внутренняя область    
Граница    
Внешняя область