Для мультилинии, пересекающей несколько полигонов, получите соответствующие длины - PullRequest
1 голос
/ 24 февраля 2011

У меня есть одна таблица, содержащая многоугольники, а другая - мультилинии. Для данной мультилинии я могу получить только пересекающиеся многоугольники, например:

SELECT p.geo, p.id
FROM polygons p, lines l
WHERE p.geo.STIntersects(l.geo) = 1 AND l.id = @lineID

Чтобы также получить саму строку, я добавляю:

UNION ALL
SELECT l.geo, l.id
FROM lines l
WHERE l.id = @lineID

Как, однако, я могу получить соответствующую длину части линии, которая пересекает данный многоугольник, в качестве третьего столбца?

1 Ответ

0 голосов
/ 01 марта 2011

Так просто, как и должно быть, правда.

SELECT p.geo, p.id, p.geo.STIntersection(l.geo).STLength()
FROM polygons p, lines l
WHERE p.geo.STIntersects(l.geo) = 1 AND l.id = @lineID
...