У меня есть ситуация, когда меня интересуют только несколько векторных слоев и двухмерная линия прямой видимости. Я знаю, что прямая видимость обычно выполняется на растровых данных, потому что типичным применением является топография. Потому что эта формулировка расплывчата и почти бесполезна, вот моя ситуация:
У меня есть векторный шейп-файл береговой линии многоугольника, точка-источник, расположенная где-то в воде, и слой «буфера» многоугольника, который представляет круг большого радиуса вокруг точки «источника». Меня интересуют только те части буферного полигона, которые находятся «в пределах видимости» исходной точки. На изображении ниже красная точка - источник, оранжевый многоугольник - буфер, обрезанный по береговой линии, и желтый многоугольник - это то, что меня интересует. Даже это не так хорошо, как хотелось бы.
Изображение: http://i.stack.imgur.com/IKBLv.png
Я хочу автоматизировать процесс, который я использую сейчас (довольно много времени), и предпочел бы использовать python / numpy / scipy / OGR / GRASS вместо ESRI.
Есть идеи, как проследить вдоль линии и проверить на "видимость"? Я мог бы растеризовать все и использовать традиционный сценарий радиальной линии прямой видимости в GRASS, но это похоже на способ обработки слишком большого количества данных, хранящихся в памяти, и выполнения проверок на наличие пикселей, которые, как мы знаем, не вызовут столкновения для пересечения нескольких векторов. , Я хочу быть максимально легким, сохраняя при этом максимально возможную точность.