• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 填充空间列

    创建空间列之后,可以使用空间数据填充它们。

    值应以内部几何格式存储,但是您可以将其从“已知文本”(WKT)或“已知二进制”(WKB)格式转换为该格式。以下示例演示如何通过将WKT值转换为内部几何格式将几何值插入表中:

    • 直接在INSERT语句中执行转换:

      INSERT INTO geom VALUES (ST_GeomFromText('POINT(1 1)'));
      
      SET @g = 'POINT(1 1)';
      INSERT INTO geom VALUES (ST_GeomFromText(@g));
      
    • 在执行以下转换之前INSERT

      SET @g = ST_GeomFromText('POINT(1 1)');
      INSERT INTO geom VALUES (@g);
      

    以下示例将更复杂的几何插入表中:

    SET @g = 'LINESTRING(0 0,1 1,2 2)';
    INSERT INTO geom VALUES (ST_GeomFromText(@g));
    
    SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';
    INSERT INTO geom VALUES (ST_GeomFromText(@g));
    
    SET @g =
    'GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))';
    INSERT INTO geom VALUES (ST_GeomFromText(@g));
    

    前面的示例用于ST_GeomFromText()创建几何值。您还可以使用特定于类型的功能:

    SET @g = 'POINT(1 1)';
    INSERT INTO geom VALUES (ST_PointFromText(@g));
    
    SET @g = 'LINESTRING(0 0,1 1,2 2)';
    INSERT INTO geom VALUES (ST_LineStringFromText(@g));
    
    SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';
    INSERT INTO geom VALUES (ST_PolygonFromText(@g));
    
    SET @g =
    'GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))';
    INSERT INTO geom VALUES (ST_GeomCollFromText(@g));
    

    想要使用几何值的WKB表示形式的客户端应用程序负责将查询中正确形成的WKB发送到服务器。有几种方法可以满足此要求。例如:

    • POINT(1 1)使用十六进制文字语法插入值:

      INSERT INTO geom VALUES
      (ST_GeomFromWKB(X'0101000000000000000000F03F000000000000F03F'));
      
    • ODBC应用程序可以发送WKB表示形式,并使用以下BLOB类型的参数将其绑定到占位符:

      INSERT INTO geom VALUES (ST_GeomFromWKB(?))
      

      其他编程接口可以支持类似的占位符机制。

    • 在C程序中,可以使用来转义二进制值mysql_real_escape_string_quote(),并将结果包含在发送到服务器的查询字符串中。请参见“ mysql_real_escape_string_quote()”。