Устранить неоднозначность перекрывающихся строк в пространственном SQL Server или OpenLayers? - PullRequest
1 голос
/ 04 сентября 2010

У меня есть записи в таблице, представляющие автобусные маршруты, с пространственными столбцами SQL Server для фактической геометрии маршрута. (Они хранятся в столбце типа Geography.)

Я использую OpenLayers для отображения этих автобусных маршрутов поверх слоя OpenStreetMap.

В случаях, когда автобусные маршруты перекрываются, в настоящее время вы не видите ничего, кроме верхнего маршрута. Я пытался использовать прозрачность линий, но это выглядит не так уж хорошо.

Есть ли способ, либо в OpenLayers, либо в пространственном SQL Server, взять перекрывающиеся линии и слегка сместить их (но держать их параллельно), чтобы они все были видны? Если для этого ничего не встроено, есть ли стандартный алгоритм для этого?

1 Ответ

2 голосов
/ 05 сентября 2010

Пространственные инструменты SQL Server имеет метод ShiftGeometry, который смещает геометрию (не географию) на заданную величину X и Y.

Таким образом, вы можете для каждой последующей географии:

  1. преобразовать в геометрию
  2. разбить многострочные строки до буфера
  3. и пересечь все ранееобработанные линии
  4. смещение пересекающихся линий на соответствующие значения X & Y наклона
  5. объединение углов (??)
  6. восстановление для отображения

В качестве альтернативы, вместо того, чтобы сдвигать строки, увеличивайте их: буфер

  1. достаточно для обнаружения пересечений
  2. пересечение с ранее обработанными фигурами
  3. буфер сноваДостаточно, чтобы быть видимым в виде более толстой формы под предыдущей (- сколько ??)
  4. объединение с исходной формой
  5. отображение с слоями.

Выглядит дорого!

У OpenLayers может быть что-то для этого.Если нет, у него могут быть лучшие примитивы для его достижения.На SQL Server он будет очень загружен процессором.Пересечения недешевы, и вам очень быстро понадобится выполнить лот пересечений.

...