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

Если вы используете 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 и размерность:

Шаги:
  1. Откройте командную строку.
  2. Войдите в редактор SQL и подключитесь к базе данных, содержащей таблицу, для которой вы хотите зарегистрировать столбец ST_Geometry.

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

    psql spatdat horace

  3. В командной строке 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, чтобы зарегистрировать пространственный столбец.

  4. Чтобы убедиться, что таблица была зарегистрирована правильно, вы можете использовать функции 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.

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

5/25/2014