Выборка значений геометрических типов

Значения геометрических типов, предварительно сохраненные в таблице, могут быть выбраны в WKT/WKB-формате с помощью соответствующих функций (см. приложения 1, 2).

В предикате равенства в поисковых запросах с геометрическими типами данных необходимо задавать одновременно значение геометрического типа и идентификатор его координат (с помощью функции SRID), например,

create or replace table  geo_test (p point);
insert into geo_test(p) values (PointFromText('point (1 1)'));
insert into geo_test(p) values (PointFromText('point (1 2)', 1));
insert into geo_test(p) values (PointFromText('point (1 3)', 1));
insert into geo_test(p) values (PointFromText('point (1 2)', 2));
insert into geo_test(p) values (PointFromText('point (1 2)', 3));
select count(*)  from geo_test where p='point(1 2)';
select count(*)  from geo_test where p='point(1 2)'and srid(p)=2;

create or replace table geom (g geometry);
select x(g) from geom where GeometryType(g)='POINT';

Тип графических данных конкретного столбца хранится в элементе Prec поля $$$S24 системной таблицы $$$ATTRI.

Кроме того, информацию о столбцах с геометрическими типами данных можно получить из представления GEOMETRY_COLUMNS, создать которое можно с помощью скрипта geo_cat.sql, размещаемого в подкаталоге /dict установочного каталога СУБД ЛИНТЕР:

create view GEOMETRY_COLUMNS AS
select
cast ('' as varchar(256)) as f_table_catalog,
cast ($$$s34 as varchar(256)) as f_table_schema,
cast ($$$s13 as varchar(256)) as f_table_name,
cast ($$$s23 as varchar(256)) as f_geometry_column,
cast ( 2 as integer ) as coord_dimension,
cast (-1 as integer) as srid
from
LINTER_SYSTEM_USER.$$$sysrl,
LINTER_SYSTEM_USER.$$$attri,
LINTER_SYSTEM_USER.$$$usr
where $$$s11 = $$$s21 and
$$$s12 = $$$s31 and
$$$s32 = 0 and
GetByte($$$S24,1) = 9 and
GetByte($$$S24,2)  > 0;