Я пытаюсь объединить серию геометрий линейных линий с соответствующим атрибутом (road_name_search и road_id), а затем присоединить объединенную линейную строку обратно к атрибуту road_id из следующих образцов данных
http://sqlfiddle.com/#!15/f52d21 (обратите внимание - если вы копируете это в базу данных, вам нужно будет изменить тип столбца формы на геометрию (MultiLineString, 2193)) ... есть ли версия SQL для PostGIS скрипка?)
Я попытался использовать приведенный ниже код, который хорошо подходит для объединения названий дорог:
SELECT
MAX (road_id),
road_name_search
FROM a_road_test
GROUP BY road_name_search
Кажется, что это работает, как ожидалось, со следующими результатами:
max road_name_search
3033986 Kennedy Road (Onekawa)
3033986 Kennedy Road (Greenmeadows)
3033986 Kennedy Road (Marewa)
1808281 Kennedy Road (Pyes Pa)
3033986 Kennedy Road (Pirimai)
Затем я попытался включить геометрические строки, поэтому я получаю все, что мне нужно ... Когда я расширяю запрос, чтобы включить кластеризацию геометрической строки, вот так
SELECT
MAX (road_id),
road_name_search,
unnest(ST_ClusterIntersecting(shape))
FROM a_road_test
GROUP BY road_name_search
Затем я получаю дублированные поля road_name_search_fields, то есть более одного вхождения каждого, например.
1808281 Kennedy Road (Pyes Pa) geoma
3033986 Kennedy Road (Pirimai) geomb
3033986 Kennedy Road (Pirimai) geomc
3033986 Kennedy Road (Onekawa) geomd
3033986 Kennedy Road (Greenmeadows) geome
3033986 Kennedy Road (Greenmeadows) geomf
3033986 Kennedy Road (Marewa) geomg
3033986 Kennedy Road (Marewa) geomh
Следующий подход, исключить функцию unnest ...
ВЫБРАТЬ
MAX (road_id),
road_name_search,
ST_ClusterIntersecting (форма)
ОТ a_road_test
GROUP BY road_name_search
Теперь я заканчиваю с ...
1808281 Kennedy Road (Pyes Pa) [geoma]
3033986 Kennedy Road (Pirimai) [geomb, geomc]
3033986 Kennedy Road (Onekawa) [geomd]
3033986 Kennedy Road (Greenmeadows) [geome, geomf]
3033986 Kennedy Road (Marewa) [geomg, geomh]
Просто не могу понять, как ...
1808281 Kennedy Road (Pyes Pa) geoma
3033986 Kennedy Road (Pirimai) geombc
3033986 Kennedy Road (Onekawa) geomd
3033986 Kennedy Road (Greenmeadows) geomef
3033986 Kennedy Road (Marewa) geomgh
Спасибо за внимание:)