PostGIS Измерение нескольких строк - PullRequest
0 голосов
/ 20 апреля 2011

Я новичок в postgis и пытаюсь измерить линейные линии, дающие две начальные точки, начальную и конечную точки в одном слое (тип геометрии - линейная строка).Эта линейная строка представляет дороги, реки, подземные трубы ... и т. Д.

Используя функцию postgis с именем 'length3d', я могу измерить ОДНУ линию (одну запись таблицы), но мне нужно измерить несколько смежных линий;что-то вроде этого примера (используя следующие аннотации для примера объяснения)

  • | S |-> Начальная точка линии
  • | E |-> Конечная точка линии
  • @ -> Точка в линии
  • (s) -> Начальная точка пользователя
  • (e) -> Конечная точка пользователя

Пример:

|S|===@===@===(s)==|E-S|===@==@===@==|E-S|===@===@===(e)==@==|E|

Формат строки:

LINESTRING(-6.366424 38.93301,-6.3625 38.938,-6.361 38.9572,-6.36158230284898 38.9397667955807,-6.36131118520776)

Пользовательские точки могут находиться между двумя существующими точками, составляющими линию.

| S |в | ES |это одна запись на БД | ES |в | ES |это другая запись и | ES |к | E |Это другая запись.

Как я могу измерить расстояние от (s) до (e)?

Заранее спасибо!

1 Ответ

1 голос
/ 28 апреля 2011

Используя PL / pgSQL , вы можете создать функцию, которая измеряет каждый из компонентов вашего пути (от (s) до [ES], от [ES] до [ES] и т. Д.).

Вы можете предварительно обработать и создать временную линейную строку (или мультилинейную строку), которая представляет линию между (s) и (e), а затем использовать ST_Length3D непосредственно для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...