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

Средства обработки геометрических данных

Обработка геометрических типов данных выполняется с помощью стандартных SQL-запросов СУБД ЛИНТЕР с привлечением встроенных геометрических функций.

Набор функций позволяет выполнять следующие группы геометрических операций:

  1. загрузку в таблицу геометрических объектов в текстовом и двоичном представлении, например:

    • загрузка в текстовом представлении:

      INSERT INTO GEO_TEST(P)
      VALUES (POINTFROMTEXT('POINT (25, 67)', 45));
    • загрузка в двоичном представлении:

      INSERT INTO POINT_TEST
      VALUES
      (GEOMFROMWKB(HEX('0101000000000000000000F03F000000000000F03F')));
  2. выборку значений геометрических объектов, например:

    • подсчет количества точек с координатами (1,2):

      SELECT COUNT(*) FROM GEO_TEST WHERE P='POINT(1,2)';
      | 23| |
    • выборка всех графических объектов:

      SELECT ASTEXT(P) FROM POINT_TEST;
      |POINT (1 1) |
      |POINT (0 1) |
      |POINT (1 2) |
      |POINT (1 1) |
  3. получать общую информацию о геометрическом объекте (вид объекта, его размерность, систему координат), например, размерность ломаной линии:

    SELECT DIMENSION(GEOMFROMTEXT('LINESTRING(1 1,2 2)'));
  4. получать специфическую информацию о геометрическом объекте (например, координаты начала и конца ломаной линии, количество узлов линии, ее длину, замкнутость и т.п.):

    • координаты конечной точки ломаной линии:

      SELECT ASTEXT(ENDPOINT(GEOMFROMTEXT('LINESTRING(1 1,2 2,3 3)')));
      |POINT (3 3) |
  5. проверку взаимного расположения геометрических объектов (пересечение, совпадение, вложенность и т.п.), например,

    • проверка пересечения двух многоугольников. Если пересечение имеет место, выдается результат пересечения:

      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))')));
      |GEOMETRYCOLLECTION (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))) |
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter