Регистрация столбца 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 и измерения:
-
Откройте командное приложение (command prompt) или программную оболочку (shell prompt) и подключитесь к psql. Подключитесь к базе данных, которая содержит таблицу, для которой вы хотите зарегистрировать столбец ST_Geometry.
В данном примере пользователь horace подключается к базе данных spatdat psql spatdat horace.
- В приложении 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, чтобы зарегистрировать пространственный столбец.
- Чтобы убедиться, что таблица была зарегистрирована правильным образом, вы можете использовать функции 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