Alphanumberi c вывод из ST_MakeLine - PullRequest
       25

Alphanumberi c вывод из ST_MakeLine

1 голос
/ 13 февраля 2020

Я пытаюсь преобразовать широту / долготу в строку. По сути, группировка столбцов 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

1 Ответ

0 голосов
/ 13 февраля 2020

Выходные данные 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;
...