代码之家  ›  专栏  ›  技术社区  ›  Attila O.

为PostGIS编写原始SQL

  •  0
  • Attila O.  · 技术社区  · 14 年前

    我正在尝试使用PostGIS模板将一些数据输入到postgresql8.4数据库中。我不能 UPDATE

    > UPDATE my_table SET coords = POINT(1, 1)
    UPDATE 0 1
    
    > UPDATE my_table SET box = POLYGON(((1, 1), (2, 3), (3, 3), (1, 1)))
    ERROR:  function polygon(record) does not exist
    
    > UPDATE my_table SET box = POLYGON((1, 1), (2, 3), (3, 3), (1, 1))
    ERROR:  function polygon(record, record, record, record) does not exist
    
    > UPDATE my_table SET box = POLYGON(1, 1, 2, 3, 3, 3, 1, 1)
    ERROR:  function polygon(numeric, numeric, numeric, numeric, numeric, numeric, numeric, numeric) does not exist
    
    > UPDATE my_table SET box = ((1, 1), (2, 3), (3, 3), (1, 1))
    ERROR:  column "box" is of type polygon but expression is of type record
    

    NULL 字段代替空间数据。我需要 更新 ,不是 INSERT

    2 回复  |  直到 14 年前
        1
  •  2
  •   amercader    14 年前

    你应该使用 Geometry constructors 在表中加载新几何体,特别是 St_GeomFromText 功能:

    UPDATE my_table SET box = ST_GeomFromText('POLYGON ((1 1), (2 3), (3 3), (1 1))');
    

    几何图形在WKT中定义( Well-Known Text )格式。

        2
  •  1
  •   rfusca    14 年前

    UPDATE my_table SET box = '((1, 1), (2, 3), (3, 3), (1, 1))'::polygon;
    

    据我所知, 几何类型通常需要引号。