Проектирование реальности

Проектирование реальности

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

Речь даже не про общественные слушания, не про суды (которых не избежать), не про тендеры, и не про согласования. Допустить к такой работе волонтеров — это садизм. Для начала, можно просто попросить их составить план лесонасаждений.

Начинается работа с поездки в лесничество. Звонить туда все-равно бесполезно, максимум вы договоритесь о встрече. Но когда приедете, нужного человека на месте не будет. Придется приезжать несколько раз. Нужна вам габаритная тетенька в должности помощника лесничего. Сам лесничий либо в лесу, либо в бане, ему не до вас. Впрочем, тетеньке тоже.

Необходимо узнать о наличии и состоянии лесоустроительной документации. А дальше прикинуться студентом и добиться разрешения на фотографию. Для этого необходимо взять в каком-нибудь подходящем институте сопроводительное письмо. Без этого материалы вам не покажут, поскольку вы — негодяи, собираетесь на этом деньги зарабатывать.

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

Теперь материалы нужно привязать. Работа монотонная, но нервная, поскольку будь вы хоть гением маткартографии, ничего вменяемого у вас не выйдет. Во-первых, по причине дисторсии, во-вторых, состояние планов, которые вы сфотографировали часто чудовищное. В-третьих, потому что фотографии сделаны под разными углами. А самое главное: планы лесонасаждений никогда не бьются ни с картой, ни со спутником, ни с кадастром.

Да, чуть не забыл. Полтора десятка лет назад мы все это делали в автокаде. Когда появился ArcView 3.2a, казалось будто большего счастья в жизни испытать не доведется.

С тех пор, конечно, много поменялось. Я уже не помню, когда последний раз привязывал растр. Ладно, помню — два месяца назад. Но формулы преобразования, хоть Гельмерта, хоть Молоденского, хоть Бурса-Вольфа позабыты напрочь. Все автоматизировано, но это не значит, что процесс работы стал гораздо легче. Технологии улучшаются, но люди остаются людьми.

Жаль, что волонтеры не принимают участия в реальных проектах. Но это не потому, что проектов на всех не хватает, а потому, что ни один вменяемый человек их к работе не подпустит.

Пивопровод на ХБК

В поселке ХБК сто четыре жилых дома, которые необходимо подключить к пивопроводу. Само собой, сделать это необходимо с минимальными издержками на прокладку труб и дальнейшее их обслуживание.

Для проектирования пивопроводной сети, откроем в QGis карту OpenStreetMap с помощью плагина QuickMapServices или его старого аналога OpenLayersPlugin:

1

Приблизим интересующий нас район, и создадим полигональный шейп-файл:
2

Обведем контуры поселка:
3
Теперь, требуется загрузить контуры домов, нуждающихся в подключении. В нашем случае самым простым решением будет импорт зданий из базы геоданных OpenStreetMap с помощью сервиса Overpass turbo. Мы для этих целей воспользуемся плагином QuickOSM, загрузив полигональные объекты со значением «building=apartmens». В OSM полигонального типа нет, модуль выполняет эту конвертацию за нас:
4
В результате получим векторные слой, который будем использовать для построения графа.

5

Прежде всего, получим вершины графа, путем извлечения центроидов полигонов:
6
Если бы мы располагали графическими картами в качестве исходного материала, то пришлось бы их отсканировать, затем привязать, затем оцифровать. Это конечно дольше, но мы бы расставили точки более сложным образом. Центроиды полигонов хорошо применять только в случае простых полигонов, на сложных это приводит к погрешности:
8
Впрочем, нас такая точность устраивает, тем более, что от каждого центроида будет идти разводящая сеть. Мы получили вершины графа. Теперь, используя триангуляцию Делоне создадим множество полигонов, каждая вершина которых будет точкой центроида зданий.
7
Преобразуем полигональную триангуляцию в сеть линий. С помощью команды «split» плагина Networks разобьем сеть на отдельные линии. Мы получили граф, достаточный для роутинга. Если нам потребуется кратчайшим образом связать между собой две его вершины, достаточно будет просто использовать модуль RoadGraph:
9
При необходимости, можно добавить каждому ребру графа определенный вес. Полученные полилинии можно экспортировать в виртуальный слой и во внешний шейп.
15

Но у нас немного другая задача — построить сеть с ребрами минимальной длины. Для этого рассчитаем длину каждого ребра, используя встроенный калькулятор QGis:
13
Раскрасим слой ребер по градиенту возрастания длины ребра.
14
Ребер у нас много, поэтому выведем длину каждого из них в качестве подписи:

4

Теперь начинается чистая математика: нам требуется выбрать наиболее подходящий алгоритм. Очень много зависит от конкретных условий проектирования, например нельзя оставлять висячие ребра, нельзя делать множественное ветвление и др.

В нашем случае используем модификацию алгоритма Дейкстры: будем объединять вершины по наименьшему графу до тех пор пока не придем к самопересечению, либо к ребру длиной более 500 метров. Получившиеся графы свяжем между собой ветвлением. Наверняка можно использовать и более выгодную разновидность жадного алгоритма, но это уже задача математиков.

Добавим домики, отметим точки ветвления сети, изменим для лучшей визуализации проекцию и схема готова.

2

Теперь, зная длину каждого участка, формулу прогиба труб, значения износа и сложности монтажа, мы можем рассчитать затраты на строительство пивопроводной сети.