(примечание: the_geom – это геометрическое значение (TYPE: LINESTRING), в этом случае я произвольно их читаю для чтения)
gid | kstart | kend | ctrl_sec_no | the_geom | the_sum_geom 626 | 238 | 239 | 120802 | 123456 | NULL 638 | 249 | 250 | 120802 | 234567 | NULL 4037| 239 | 249 | 120802 | 345678 | NULL
[Real Practice Description] просто пропустите это для тех, кто не против цели
Я хотел бы сделать это (набор запросов из моего прошлого вопроса, ссылка, расположенная в конце этого сообщения) для каждой строки в таблице B (aka. Land_inventory). Эти две таблицы связаны «ctrl_sec_no» (ака. Номер секции управления дорогой), что означает :: в ONE ctrl_sec_no – 120802 (фактически, это дорога, которая эквивалентна 3 связанным друг с другом геометрическим LINESTRINGs (the_geom) от kstart 238 (начало на километр 238) до kend 250)
[Вопрос по PostGIS]
вопрос заключается в том, как объединить эти 3 строки {aka gid (626,638,4037) из таблицы} вместе и привести к 'the_sum_geom' (первоначально NULL) с помощью функций PostGIS (что угодно). после этого мы будем использовать этот «the_sum_geom», чтобы найти POINT на этой геометрии. LINESTRING
( Как рассчитать вещи из многих таблиц, используя несколько запросов? ).
Функция, которую вы ищете, – ST_Union , вам нужно использовать ее в виде заполнителя:
update mytable set the_sum_geom = ST_LineMerge( ( select ST_Union(the_geom) from mytable where ctrl_sec_no = 120802 ) ) where ctrl_sec_no = 120802;
С помощью ST_LineMerge вы можете конвертировать из Multiline в LineString, но есть оговорка, если объединение нескольких строк не будет объединено, оно будет возвращать многострочный текст без каких-либо изменений. См. Документы ST_LineMerge, чтобы понять, что ST_LineMerge может или не может сделать.