Если вы используете SQL для создания таблицы, содержащей столбец ST_Geometry, можно зарегистрировать столбец для использования определенной пространственной привязки и размерности. Таким образом, когда вы вставляете записи с помощью SQL, вы не сможете случайно добавить записи, использующие другой тип пространственной привязки.
Регистрация столбца ST_Geometry в PostgreSQL
Используйте st_register_spatial_column, чтобы зарегистрировать столбец ST_Geometry в таблице, созданной в PostgreSQL с помощью SQL. Синтаксис функции 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 в PostgreSQL. Измерение координат показывает, имеют ли данные только x,y координаты (2), x,y,z координаты (3), x,y,z,m координаты (4) или x,y,m координаты (5). По умолчанию, если вы не задаете размерность координат, данные регистрируются с размерностью x,y
В следующих шагах представлен пример, как зарегистрировать столбец ST_Geometry в PostgreSQL, чтобы использовать определенные SRID и размерность:
- Откройте командную строку.
- Войдите в редактор SQL и подключитесь к базе данных, содержащей таблицу, для которой вы хотите зарегистрировать столбец ST_Geometry.
В данном примере пользователь horace подключается к базе данных spatdat.
psql spatdat horace
- В командной строке SQL вызовите функцию 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
Регистрация столбца ST_Geometry в SQLite
Используйте AddGeometryColumn для добавления столбца ST_Geometry в таблицу SQLite и его регистрации с заданными SRID и размерностью координат. Синтаксис AddGeometryColumn показан ниже:
SELECT AddGeometryColumn (
<'main'|null>,
<table_name>,
<spatial_column_name>,
<srid>,
<geometry_type>
<coordinate_dimension>,
<'null'|'not null'>
);
При подключении к SQLite через клиент SQL вы подключаетесь к основной базе. Вы можете указать main или использовать null, что означает, что вы подключаетесь к основной базе. Размерность координат может быть xy (2), xyz (3), xyzm (4) или xyzm (5). Если вы указываете размерность xy или 2, включать размерность в тип геометрии не нужно. Если вы указываете другую размерность координат, следует также включить эту информацию при задании типа геометрии. Вы можете ввести тип геометрии или ее код. Возможны следующие значения:
Значения типов геометрии | Код |
---|---|
st_geometry или geometry | 0 |
st_point или point | 1 |
st_linestring или linestring | 2 |
st_polygon или polygon | 3 |
st_multipoint или multipoint | 4 |
st_multilinestring или multilinestring | 5 |
st_multipolygon или multipolygon | 6 |
st_geometryz или geometryz | 1000 |
st_pointz или pointz | 1001 |
st_linestringz или linestringz | 1002 |
st_polygonz или polygonz | 1003 |
st_multipointz или multipointz | 1004 |
st_multilinestringz или multilinestringz | 1005 |
st_multipolygonz или multipolygonz | 1006 |
st_geometrym или geometrym | 2000 |
st_pointm или pointm | 2001 |
st_linestringm или linestringm | 2002 |
st_polygonm или polygonm | 2003 |
st_multipointm или multipointm | 2004 |
st_multilinestringm или multilinestringm | 2005 |
st_multipolygonm или multipolygonm | 2006 |
st_geometryzm или geometryzm | 3000 |
st_pointzm или pointzm | 3001 |
st_linestringzm или linestringzm | 3002 |
st_polygonzm или polygonzm | 3003 |
st_multipointzm или multipointzm | 3004 |
st_multilinestringzm или linestringzm | 3005 |
st_multipolygonzm или multipolygonzm | 3006 |
В разделе Создание таблиц со столбцом ST_Geometry находятся примеры создания таблицы в SQLite и использования AddGeometryColumn для добавления и регистрации столбца ST_Geometry.
Регистрация столбца ST_Geometry в Oracle
В Oracle при создании пространственного индекса столбца ST_Geometry, происходит его регистрация для использования заданной пространственной привязки. Примеры использования SQL для создания пространственного индекса в Oracle можно найти в разделе Создание пространственных индексов в таблицах со столбцом ST_Geometry.