PostGIS находит строки, которые связаны - PullRequest
0 голосов
/ 24 апреля 2020

Привет, я пытаюсь получить все строки строк, которые находятся близко к узлам другой строки

Я пытался:

SELECT * 
FROM lines p
JOIN lines ps ON( ST_Buffer(p.geom, 0.01) && ps.geom 
AND ST_Intersects(st_buffet(p.geom, 0.01), ps.geom))

Но я также получаю линии, которые пересекаются.

Есть функция ST_Touches, однако я не могу понять, как мне добавить допуск. Может быть, есть способ создать буфер для узлов линейных строк?

1 Ответ

0 голосов
/ 24 апреля 2020

Вам нужно будет извлечь узлы, используя st_dumpPoints, затем вы можете присоединить линию к этим точкам. Лучше использовать st_dwithin, чем неточный буфер.

Запрос будет похож на

SELECT * 
FROM lines p 
 JOIN 
   (SELECT *, (ST_DumpPoints(geom)).geom 
    FROM lines ps) as pts 
  ON st_dwithin(p.geom, ps.geom, 0.1);

Вы можете выбрать что-то другое, чем *, как вы бы получить 3 геометрии на строку (1-я линия, 2-я линия, узел контакта)

PS: в отношении st_touch две линии могут касаться друг друга между двумя вершинами.

...