Есть ли простой способ разделить два перекрывающихся маршрута в PostgreSQL на разделы? - PullRequest
0 голосов
/ 05 февраля 2019

В моей базе данных PostgreSQL есть две таблицы, каждая из которых содержит один маршрут, и у них есть несколько перекрывающихся секций.Я хочу объединить их и разделить на отдельные разделы на основе перекрывающейся информации и информации о качестве маршрута (отдельно хранится в таблице).

Я пытался объединить таблицы, но у меня все еще нет информациио сегментах.

Мои таблицы выглядят так:

Table1:

id latitude   longitude route_quality
1   47.948208   8.499215    1
2   47.948208   8.499313    1
3   47.948044   8.499697    2
4   47.948006   8.499986    2
5   47.94809    8.500163    1
6   47.948402   8.500023    1
7   47.949173   8.500094    1
8   47.949554   8.5001335   1
9   47.949623   8.500321    1
10  47.949207   8.502197    1
11  47.949104   8.5028515   1

Table2:

latitude   longitude route_quality
1    47.948208  8.499215    1
2    47.948208  8.499313    1
3    47.948044  8.499697    2
4    47.948006  8.499986    2
5    47.94809   8.500163    1
6    47.948402  8.500023    1
7    47.949173  8.500094    1
8    47.949555  8.5001336   3
9    47.949624  8.500322    3
10   47.949207  8.502197    1
11   47.949104  8.5028515   1

Как видите, у меня есть некоторыеперекрытия и различия в качестве маршрута, и я хочу получить что-то вроде этого:

Результат:

latitude   longitude route_quality section
47.948208   8.499215    1            1  //overlapping
47.948208   8.499313    1            1  //overlapping
47.948044   8.499697    2            2  //overlapping but different route quality starts
47.948006   8.499986    2            2  //overlapping
47.94809    8.500163    1            3  //overlapping but different route quality starts
47.948402   8.500023    1            3  //overlapping
47.949173   8.500094    1            3  //overlapping
47.949554   8.5001335   1            4  //this is from Table1
47.949623   8.500321    1            4  //this is from Table1
47.949555   8.5001336   3            5  //this is from Table2
47.949624   8.500322    3            5  //this is from Table2
47.949207   8.502197    1            6  //overlapping starts
47.949104   8.5028515   1            6  //overlapping

Я пробовал с курсорами, слиянием, объединением, но все было безуспешно.Любое предложение высоко ценится.

Вот пример визуально представленных разделов.Каждый цвет - это отдельный раздел, основанный на разветвлениях маршрута и поле route_quality.

Участки маршрута

Спасибо.

...