Доступные версии документации

Разность геометрических объектов

Функция

Получение геометрической разности двух объектов.

Спецификация
  Difference (<объект1>,<объект2>)
<объект1>,<объект2> – геометрические объекты произвольного типа.
Возвращаемое значение
  1. В случае нормального завершения – геометрический объект, представляющий разность двух заданных геометрических объектов.

    Тип возвращаемого значения:

    • char, если оба геометрических объекта являются объектами VARBYTE-типа. Длина строки вычисляется динамически и не может превышать 4000 символов;

    • blob, если один или оба геометрических объектов являются объектами BLOB-типа. В этом случае для получения значения типа char необходимо использовать SQL-функцию getblobstr (см. документ «СУБД ЛИНТЕР. Справочник по SQL»);

    • NULL, если один или оба аргумента NULL.

  2. Код завершения СУБД ЛИНТЕР (при неправильном аргументе функции).

Примеры
  1. геометрический 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))   | 
  2. Объект 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)                 | 
  3. геометрический 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)) |
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter