Регистрация столбца ST_Geometry в PostgreSQL

Если вы используете SQL для создания таблицы, содержащей столбец ST_Geometry, можно зарегистрировать столбец для использования определенной пространственной привязки и размерности. Таким образом, пользователь, добавляющий записи с помощью SQL, не сможет случайно добавить записи, использующие другой тип пространственной привязки или имеющие другую размерность. Для этого используйте функцию sde.st_register_spatial_column. Синтаксис функции следующий:

SELECT st_register_spatial_column('<database_name>', '<schema_name>', 
'<table_name>', '<spatial_column_name>', <srid>, <coordinate_dimension>)

Заданный SRID должен присутствовать в таблице public.sde_spatial_references. Измерение координат показывает, имеют ли данные только x,y координаты (2), x,y,z координаты (3), x,y,z,m координаты (4) или x,y,m координаты (5). По умолчанию, если вы не задаете размерность координат, данные регистрируются с размерностью x,y.

Следующие шаги показывают пример того, как зарегистрировать столбец ST_Geometry в PostgreSQL, чтобы использовать определенные SRID и измерения:

Шаги:
  1. Откройте командное приложение (command prompt) или программную оболочку (shell prompt) и подключитесь к psql. Подключитесь к базе данных, которая содержит таблицу, для которой вы хотите зарегистрировать столбец ST_Geometry.

    В данном примере пользователь horace подключается к базе данных spatdat psql spatdat horace.

  2. В приложении SQL prompt вызовите функцию st_register_spatial_column для регистрации пространственного столбца таблицы, чтобы использовать определенные SRID и измерения.

    Как вы можете видеть, столбец geo в таблице waypoints в схеме cleo зарегистрирован с SRID равным 104199 и измерениями x,y,z:

    SELECT sde.st_register_spatial_column('spatdat', 'cleo', 
    'waypoints', 'geo', 104199, 3);
    

    Пользователь horace должен иметь как минимум права доступа SELECT к таблице cleo.waypoints, чтобы зарегистрировать пространственный столбец.

  3. Чтобы убедиться, что таблица была зарегистрирована правильным образом, вы можете использовать функции st_isregistered_spatial_column и st_get_coord_dimension, чтобы получить информацию о регистрации.

    Функция st_isregistered_spatial_column возвращает значение 1 (true), если столбец зарегистрирован с указанным SRID.

    SELECT sde.st_isregistered_spatial_column('spatdat', 'cleo', 
    'waypoints', 'geo', 104199);
    
    st_isregistered_spatial_column
    --------------------------------
    1
    

    Функция st_get_coord_dimension возвращает те координатные измерения, которые может хранить таблица:

    SELECT sde.st_get_coord_dimension('cleo', 'waypoints', 
    'geo', 104199);
    
    st_get_coord_dimension
    --------------------------------
    xyz
    

Связанные темы

9/11/2013