Получение пересечения двух геометрических объектов.
Intersection
(<объект1>
,<объект2>
)
<объект1> ,<объект2> – геометрические
объекты произвольного типа. |
В случае нормального завершения – геометрический объект, представляющий пересечение заданных геометрических объектов.
Для включения в результирующий объект составных типов (MULTIPOINT, MULTILINESTRING, MULTIPOLYGON) они разбиваются на объекты простых типов.
Пересечение значений типа Circle и значения, в состав которого входит тип Polygon (Polygon, Multipolygon, Geometrycollecion с Polygon), осуществляется особым образом, что связанно с отсутствием типа «кривая». Круг аппроксимируется вписанным правильным многоугольником с 32 вершинами, и полученный многоугольник пересекается со вторым значением геометрического типа.
GEOMETRYCOLLECTION (EMPTY), если объекты не пересекаются.
Тип возвращаемого значения:
char, если оба геометрических объекта являются объектами VARBYTE-типа. Длина строки вычисляется динамически и не может превышать 4000 символов;
blob, если один или оба геометрических объектов являются объектами BLOB-типа. В этом случае для получения значения типа char необходимо использовать SQL-функцию getblobstr (см. документ «СУБД ЛИНТЕР. Справочник по SQL»);
NULL, если один или оба аргумента NULL;
Код завершения СУБД ЛИНТЕР (при неправильном аргументе функции).
геометрический VARBYTE-объект
select AsText(Intersection(GeomFromText('POLYGON ((0 0,0 5,5 5,5 0,0 0),(2 2,2 4,3 4,3 2,2 2))'), GeomFromText('POLYGON ((1 1,1 6,6 6,6 1,1 1),(2 3,2 4,4 4,4 3,2 3))'))); Результат: |POLYGON ((5 1,1 1,1 5,5 5,5 1),(2 3,2 4,3 4,4 4,4 3,3 3,3 2,2 2,2 3)) |
геометрический BLOB-объект
select getblobstr(astext(INTERSECTION(GEOM, GeomFromText('POLYGON (5 5,5 25,25 25,25 5,5 5)', 4284))), 1, 200) from GTEST; |POLYGON ((25 10,10 10,10 25,25 25,25 10)) |