【问题标题】:Write raw SQL for PostGIS为 PostGIS 编写原始 SQL
【发布时间】:2011-03-24 00:11:36
【问题描述】:

我正在尝试使用 PostGIS 模板将一些数据输入到 PostgreSQL 8.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 字段代替了空间数据。我需要UPDATE,而不是INSERT,但这应该没什么区别。

【问题讨论】:

  • 您可以在专用站点gis.stackexchange.com找到更多有关GIS相关问题的专家解答
  • @amercader 谢谢!我不知道gis.meta.stackexchange.com...

标签: sql spatial postgis postgresql


【解决方案1】:

您应该使用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】:

    试试:

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-05
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2023-03-25
      • 2017-04-26
      • 1970-01-01
      • 2020-10-03
      相关资源
      最近更新 更多