【问题标题】:Postgresql functions and operators can take at most one set argument errorPostgresql 函数和运算符最多可以接受一组参数错误
【发布时间】:2013-12-04 23:38:33
【问题描述】:

我正在玩 PostGIS,但我不明白这个请求有什么问题?

WITH ligne AS (SELECT 42 AS id, ST_transform('SRID=4326;LINESTRING(2.232 48.818, 2.246 48.82)'::geometry, 27572) AS geom)
SELECT ST_locate_along_measure(ST_addmeasure(geom, 0, ST_Length(geom)), generate_series(0, ST_length(geom)::int, 50)) FROM ligne;

我得到错误:错误:函数和运算符最多可以采用一个集合参数

此请求有效,但我不明白两者之间的区别:

WITH ligne AS (SELECT 42 AS id, ST_transform('SRID=4326;LINESTRING(2.232 48.818, 2.246 48.82)'::geometry, 27572) AS geom),
ligne3dm AS (SELECT ST_addmeasure(geom, 0, ST_Length(ligne.geom)) as geom FROM ligne),
pas50m AS (SELECT generate_series(0, ST_length(ligne.geom)::int, 50) as pas FROM ligne)
SELECT ROW_NUMBER() OVER () AS id, ST_locate_along_measure(ligne3dm.geom, pas50m.pas) FROM ligne3dm, pas50m;

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    解决方案很简单,generate_series 返回一个生成器,但 ST_Locate_Along_Measure 正在等待一个整数。

    这将起作用:

    WITH ligne AS (SELECT 42 AS id, ST_transform('SRID=4326;LINESTRING(2.232 48.818, 2.246 48.82)'::geometry, 27572) AS geom),
    generator AS (SELECT generate_series(0, ST_Length(ligne.geom)::int, 50) as pas FROM ligne)
    SELECT ST_locate_along_measure(ST_addmeasure(ligne.geom, 0, ST_Length(ligne.geom)), generator.pas) FROM ligne, generator;
    

    【讨论】:

      猜你喜欢
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 2014-05-09
      • 1970-01-01
      • 2015-03-24
      • 2012-07-30
      • 2013-12-15
      • 1970-01-01
      相关资源
      最近更新 更多