【问题标题】:Alphanumberic output from ST_MakeLineST_MakeLine 的字母数字输出
【发布时间】:2020-02-13 19:17:56
【问题描述】:

我正在尝试将纬度/经度转换为线串。基本上,将 lat 和 lon 列分组,创建一个点,然后创建一个线串。

表:

+------------+----------+-----------+------------+---------+--------+
|  link_id   | seq_num  |    lat    |    lon     | z_coord | zlevel |
+------------+----------+-----------+------------+---------+--------+
| "16777220" | "0"      | "4129098" | "-7192948" |         |      0 |
| "16777220" | "999999" | "4129134" | "-7192950" |         |      0 |
| "16777222" | "0"      | "4128989" | "-7193030" |         |      0 |
| "16777222" | "1"      | "4128975" | "-7193016" |         |      0 |
| "16777222" | "2"      | "4128940" | "-7193001" |         |      0 |
| "16777222" | "3"      | "4128917" | "-7192998" |         |      0 |
| "16777222" | "4"      | "4128911" | "-7193002" |         |      0 |
+------------+----------+-----------+------------+---------+--------+

我的代码:

select link_id, ST_SetSRID(ST_MakeLine(ST_MakePoint((lon::double precision / 100000), (lat::double precision / 100000))),4326) as geometry
from public.rdf_link_geometry
group by link_id
limit 50

几何输出列示例: “0102000020E6100000020000004F92AE997CFB51C021E527D53EA54440736891ED7CFB51C021020EA14AA54440”

^^ 这是什么?它是如何以这种方式格式化的?我期待一个线串,像

geometry
7.123 50.123,7.321 50.321
7.321 50.321,7.321 50.321

link_id 的数据格式是 bingint,对于几何来说它是几何

解决方案:

select link_id, ST_AsText(ST_SetSRID(ST_MakeLine(ST_MakePoint(
(lon::double precision / 100000), (lat::double precision / 100000))),4326)) as geometry
from public.rdf_link_geometry
group by link_id
limit 50

【问题讨论】:

    标签: sql postgresql gis postgis


    【解决方案1】:

    输出是geometry,您可以使用st_asText将其显示为文本

    select st_asText('0102000020E6100000020000004F92AE997CFB51C021E527D53EA54440736891ED7CFB51C021020EA14AA54440');
                        st_astext
    --------------------------------------------------
     LINESTRING(-71.92948 41.29098,-71.9295 41.29134)
    

    话虽如此,如果你有超过 2 个点,你可以命令他们创建一个有意义的线:

    select st_makeline(geom ORDER BY seqID) from tbl;
    

    【讨论】:

    • 是的,我有超过 2 分的一些(许多)记录……这只是格式化的一个例子。这个解决方案有效!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    相关资源
    最近更新 更多