Вставка пространственных объектов в таблицу со столбцом ST_Geometry

Для добавления записей в таблицу со столбцом ST_Geometry используется SQL-оператор INSERT и функции ST_Geometry.

Данные, вставляемые в столбец ST_Geometry, могут быть выражены в одном из следующих форматов:

Для вставки и получения геоданных в этих форматах требуется использование входных и выходных функций преобразования. Для преобразования данных из этих внешних форматов в типы данных, применяемые при хранении в базе данных Oracle или PostgreSQL, имеются специальные функции. В PostgreSQL также имеются функции конвертации в формат шейп-файла Esri.

В следующих примерах будет показана вставка нескольких записей в таблицы sensitive_areas и hazardous_sites в базах геоданных Oracle, PostgreSQL и DB2. Функция ST_PolyFromText() (для PostgreSQL применяется ST_Polygon) преобразует текстовое представление в формате WKT в полигон с типом данных ST_Polygon перед вставкой его в столбец ZONE таблицы sensitive_areas. Подобным образом, функция ST_PointFromText() (для PostgreSQL применяется ST_Point) преобразует текстовое представление в формате WKT в точку с типом данных ST_Point перед вставкой в столбец LOC таблицы hazardous_sites. Ввод данных в двоичном формате WKB выполняется с применением функций ST_PolyFromWKB() и ST_PointFromWKB().

ПримечаниеПримечание:

При использовании функций с пространственным типом данных в DB2, эти функции должны быть сопровождены префиксом db2gse.

Шаги:
  1. Войдите в редактор SQL и подключитесь к базе данных с таблицами, в которые нужно вставить данные, от лица пользователя с правами доступа для вставки данных в таблицы.
  2. Для добавления записи в таблицы sensitive_areas и hazardous_sites используется SQL-оператор INSERT.
    • Oracle
      INSERT INTO SENSITIVE_AREAS (area_id, name, area_size, type, zone)
      VALUES (1, 'Summerhill Elementary School', 67920.64, 'school', sde.st_geometry('polygon ((52 28,58 28,58 23,52 23,52 28))', 0));
      
      INSERT INTO HAZARDOUS_SITES (row_id, site_id, name, loc) 
      VALUES (1, 102, 'W. H. Kleenare Chemical Repository', sde.st_geometry('point (52 24)',0));
      
    • PostgreSQL
      INSERT INTO sensitive_areas (area_id, name, area_size, type, zone)
      VALUES (1, 'Summerhill Elementary School', 67920.64, 'school', ST_Polygon('polygon ((52 28, 58 28, 58 23, 52 23, 52 28))', 0));
      
      INSERT INTO hazardous_sites (row_id, site_id, name, loc)
      VALUES (1, 102, 'W. H. Kleenare Chemical Repository', ST_Point('point (52 24)', 0);
      
    • DB2
      INSERT INTO SENSITIVE_AREAS (area_id, name, area_size, type, zone)
      VALUES (1, 'Summerhill Elementary School', 67920.64, 'school', db2gse.ST_PolyFromText('polygon ((52 28,58 28,58 23,52 23,52 28))', 1))
      
      INSERT INTO HAZARDOUS_SITES (row_id, site_id, name, loc)
      VALUES (1, 102, 'W. H. Kleenare Chemical Repository', db2gse.ST_PointFromText('point (52 24)', 1))
      

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

9/11/2013