Получение геометрической разности двух объектов.
Difference
(<объект1>
,<объект2>
)
<объект1> ,<объект2> – геометрические
объекты произвольного типа. |
В случае нормального завершения – геометрический объект, представляющий разность двух заданных геометрических объектов.
Тип возвращаемого значения:
char, если оба геометрических объекта являются объектами VARBYTE-типа. Длина строки вычисляется динамически и не может превышать 4000 символов;
blob, если один или оба геометрических объектов являются объектами BLOB-типа. В этом случае для получения значения типа char необходимо использовать SQL-функцию getblobstr (см. документ «СУБД ЛИНТЕР. Справочник по SQL»);
NULL, если один или оба аргумента NULL.
Код завершения СУБД ЛИНТЕР (при неправильном аргументе функции).
геометрический VARBYTE-объект
Получить разность двух отрезков линии:
Объект 1 (0,0)___________________________(5,0) Объект 2 (3,0)_____________(4,0) Разность (0,0)________(3,0) (4,0)_____(5,0) CREATE OR REPLACE TABLE TEST (Line1 LINESTRING, Line2 LINESTRING); INSERT INTO TEST VALUES(LineFromText('LINESTRING (0 0,0 5)'), LineFromText('LINESTRING (0 3,0 4)')); select astext(DIFFERENCE(LINE1, LINE2)) FROM TEST; Результат: |MULTILINESTRING ((0 0,0 3),(0 4,0 5)) |
Объект 1 (0,0)___________________________(5,0) Объект 2 (0,0)______________(3,0) Разность (3,0)_____________(5,0) CREATE OR REPLACE TABLE TEST(Line1 LINESTRING, Line2 LINESTRING); INSERT INTO TEST VALUES(LineFromText('LINESTRING (0 0,0 5)'), LineFromText('LINESTRING (0 0,0 3)')); select astext(DIFFERENCE(LINE1, LINE2)) FROM TEST; Результат: |LINESTRING (0 3,0 5) |
геометрический BLOB-объект
select getblobstr(astext(DIFFERENCE(GEOM, GeomFromText('POLYGON (5 5,5 25,25 25,25 5,5 5)', 4284))), 1, 110)from GTEST; |POLYGON ((10 25,10 50,50 50,50 10,25 10,25 25,10 25)) |