【问题标题】:Postgis query to update linestringPostgis 查询更新线串
【发布时间】:2017-04-18 17:46:56
【问题描述】:

执行此查询时出现错误

UPDATE treedetailsentered
 set geom_line=st_geomfromtext('LineString(('||longitude||' '||latitude||','||lon2||' '||lat2||'))', 4326);

错误

ERROR:  parse error - invalid geometry
HINT:  "LineString((7" <-- parse error at position 13 within geometry
********** Error **********

这就是我在表格中为线串创建列的方式

ALTER TABLE public.treedetailsentered
  ADD COLUMN geom_line geometry(LineString, 4326)

【问题讨论】:

    标签: postgis


    【解决方案1】:

    如果不知道longitudelatitude 有什么类型,很难说出确切的问题是什么,但我猜你没有形成正确的字符串。

    我的建议是先通过更简单的查询创建适当的文本来对此进行调试:

    select 'LineString(('||longitude||' '||latitude||','||lon2||' '||lat2||'))'
    

    根据您拥有的类型,您可能需要进行一些转换,如下所示:

    select 'LineString(('||longitude::text||' '||latitude::text||','||lon2::text||' '||lat2::text||'))'
    

    如果您已有文本,请确保数字格式正确。例如,浮点数应该有一个小数点分隔符。

    【讨论】:

      【解决方案2】:

      我添加了一个额外的括号,我删除了它对我有用。

      UPDATE treedetailsentered set geom_line=ST_GeomFromText('LINESTRING(' || longitude || ' '||latitude||','||lon2||' '||lat2||')', 4326);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多