向包含 ST_Geometry 列的表中插入要素

使用 SQL INSERT 语句和 ST_Geometry 函数将记录插入包含 ST_Geometry 列的表。

要插入 ST_Geometry 列的数据可采用以下几何格式之一表示:

这些格式需要使用输入和输出转换函数将空间数据插入数据库以及从数据库检索空间数据。系统提供一些函数,用于将数据从这些外部格式转换为 Oracle 或 PostgreSQL 数据库中存储的数据类型。对于 PostgreSQL,还提供了转换 ESRI shapefile 格式的函数。有关所提供的函数的完整列表,请参阅“用于 ST_Geometry 的 SQL 函数概述”。

在下面的示例中,一些记录被插入到 Oracle、PostgreSQL 和 DB2 数据库中的数据库表(sensitive_areas 和 hazardous_sites)内。在将多边形的可识别文本表示插入 sensitive_areas 表的 ZONE 列之前,ST_PolyFromText() 函数(在 PostgreSQL 中使用 ST_Polygon)先将其转换为 ST_Polygon 类型。类似地,在将点的可识别文本表示插入 hazardous_sites 表的 LOCATION 列之前,ST_PointFromText() 函数(在 PostgreSQL 中使用 ST_Point)将其转换为 ST_Point 类型。您还可以利用 ST_PolyFromWKB() 和 ST_PointFromWKB() 函数以熟知二进制格式输入数据。

注注:

在 DB2 中使用空间类型函数时,必须利用 db2gse 限定这些函数。

步骤:
  1. 使用 SQL INSERT 语句向 sensitive_areas 和 hazardous_sites 表添加记录。
    • Oracle
      INSERT INTO SENSITIVE_AREAS (area_id, name, area_size, type, zone)
      VALUES (1, 'Summerhill Elementary School', 67920.64, 'school', sde.ST_PolyFromText('polygon ((52 28,58 28,58 23,52 23,52 28))', 1));
      
      INSERT INTO HAZARDOUS_SITES (row_id, site_id, name, location) 
      VALUES (1, 102, 'W. H. Kleenare Chemical Repository', sde.ST_PointFromText('point (52 24)',1));
    • 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))', 1));
      
      INSERT INTO hazardous_sites (row_id, site_id, name, location)
      VALUES (1, 102, 'W. H. Kleenare Chemical Repository', ST_Point('point (52 24)', 1);
    • 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, location)
      VALUES (1, 102, 'W. H. Kleenare Chemical Repository', db2gse.ST_PointFromText('point (52 24)', 1))

7/10/2012