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

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

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

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

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

Шаги:
  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))', 4326)
      );
      
      INSERT INTO HAZARDOUS_SITES (row_id, site_id, name, location) VALUES (
       1,
       102,
       'W. H. Kleenare Chemical Repository',
       sde.st_geometry('point (52 24)', 4326)
      );
      
    • 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))', 4326)
      );
      
      INSERT INTO hazardous_sites (row_id, site_id, name, location) VALUES (
       1,
       102,
       'W. H. Kleenare Chemical Repository',
       ST_Point('point (52 24)', 4326
      );
      
    • SQLite
      INSERT INTO sensitive_areas (name, area_size, type, zone) VALUES (
       'Summerhill Elementary School',
       67920.64,
       'school',
       ST_Polygon('polygon ((52 28, 58 28, 58 23, 52 23, 52 28))', 4326)
      );
      
      INSERT INTO hazardous_sites (site_id, name, location) VALUES (
       102,
       'W. H. Kleenare Chemical Repository',
       ST_Point('point (52 24)', 4326
      );
      

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

5/25/2014