Формулировка задачи

По кадастровому номеру участка получить несколько вариантов проектов застройки участка в формате .DWG (Autocad) со следующими рассчитанными показателями:

  1. Площадь земельного участка, м2

  2. Площадь застройки, м2

  3. Общая площадь здания, м2

  4. Этажность (итоговая)

  5. Площадь твердых покрытий (дороги тротуары), м2

  6. Площадь озеленения, м2

  7. Площадь озеленения, %

Почему мы выбрали Low-code подход?

В данном проекте нам было важно реализовать Backend API, поэтому для реализации Frontend и базы данных мы выбрали Airtable, а в качестве интерфейса пользователя Notion и Telegram.

Это очень сильно ускорило процесс создания всей модели и дало возможность оперативно подключить к тестированию конечных пользователей.

Backend

Было решено выбрать Python основным языком для Backend, плюс дополнительные библиотеки:

  1. Библиотека получения изображения участка по кадастровому номеру от Росреестра (https://github.com/rendrom/rosreestr2coord).

  2. Библиотека OpenCV для анализа изображения участка, получаемое от Росреестра (https://github.com/opencv/opencv/tree/4.7.0).

  3. Библиотека pyautocad для генерации проектов в формате .DWG (Autocad) (https://pypi.org/project/pyautocad/).

  4. Библиотека Flask для организации REST API (https://github.com/pallets/flask).

База данных и система управления очередями заданий - Airtable (https://airtable.com/).

Frontend

  1. Чат-бот Телеграм для постановки задачи через форму Airtable.

  2. Публичная страница в Notion с формой Airtable и просмотром очереди заданий.

Этапы разработки MVP

  1. Получение по API изображения участка от Росреестра по кадастровому номеру и перевод его в гео-координаты.

    В таком виде приходит изображение земельного участка от Росреестра
    В таком виде приходит изображение земельного участка от Росреестра
    [(323.2, 107.8),
     (155.2, 110.8),
     (134.2, 131.2),
     (127.0, 191.2),
     (128.2, 192.4),
     (133.0, 192.4),
     (133.6, 194.8),
     (132.4, 199.0),
     (126.4, 197.8),
     (107.2, 356.2),
     (301.6, 392.2),
     (313.6, 298.6),
     (320.2, 224.8),
     (323.2, 149.2),
     (323.2, 107.8)]

  2. Создать алгоритм “посева” секций на участке в заданных границах угла отклонения от осей Север-Юг и Запад-Восток.

    Варианты "посева" секций домов при различных углах отклонения участка
    Варианты "посева" секций домов при различных углах отклонения участка
  3. Рассчитать все показатели застройки для полученного варианта размещения домов на участке.

    Основные показатели при планировании застройки земельного участка
    Основные показатели при планировании застройки земельного участка
  4. Полученное расположение секций на участке отправляем на сервер с Autocad и генерируем проект в формате .DWG, где секции будут заменены на разработанные заранее типовые секции.

    Автоматически генерируемый проект в Autocad с размещенными типовыми секциями жилых домов
    Автоматически генерируемый проект в Autocad с размещенными типовыми секциями жилых домов
  5. Разработать интерфейс для ручной корректировки положения секций на участке.

    Интерфейс ручной калибровки секций на участке и пересчета показателей застройки
    Интерфейс ручной калибровки секций на участке и пересчета показателей застройки

Демонстрация работы MVP (видео)

На данном видео показан процесс работы из чат-бота Telegram.

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

Результатом работы является готовый проект в формате .DWG (Autocad).

Итоговая архитектура MVP

Итоговая схема взаимодействия всех систем MVP
Итоговая схема взаимодействия всех систем MVP

Заключение

Все вопросы пишите мне в телеграм: @TAU15

Всем желающим протестировать работу MVP вот ссылка на страницу в Notion:

https://www.notion.so/2-MVP-d5875ea718654c02a1a0d61f68cc7962

Интерфейс работы с MVP через публичную страницу в Notion
Интерфейс работы с MVP через публичную страницу в Notion

Комментарии (11)


  1. sunnybear
    00.00.0000 00:00
    +1

    Выглядит очень круто, но постановку задачи, возможно, нужно описать по-другому для менее подготовленных читателей


    1. TAU15 Автор
      00.00.0000 00:00

      Согласен, учту этот момент на будущее ;)


  1. TAU15 Автор
    00.00.0000 00:00

    Как это обычно бывает на момент публикации не работал сервер на котором идет генерация проектов в Автокаде. Сейчас все работает. Можете тестировать сервис!


    1. little-brother
      00.00.0000 00:00
      +1

      Я конечно не архитектор, но осуществлять привязку дома только по геокоординатам мне кажется совсем наивно. Имхо, минимум нужно учитывать такие факторы:

      1. Расположение дорог и скверов (вдоль шумной дороги квартиры будут дешевле, а вот напротив парков наоборот - подороже).

      2. Организация въездов и выездов с территорий (а то напроектируют помойки так, что мусоровоз пробирается через пачки легковушек или тупиковые заезды на длинные парковки, где находится умник который перекрывает всю дорогу на "пару минуток").

      3. Расчет аэродинамики (на это иногда походу сейчас забивают, но в СССР такое делали).

      4. Нет расстановки дополнительных сооружений (электроподстанций, школ, садов).

      5. Не понятно как с организацией придомовых территорий - обустроить площадки правильной формы имхо намного проще, чем "непойми что".


      1. TAU15 Автор
        00.00.0000 00:00

        Спасибо за такой подробный комментарий! Все эти факторы мы попробуем реализовать при развитии нашего сервиса.


  1. JediPhilosopher
    00.00.0000 00:00
    +7

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

    Проблема еще и в том, что эта задача в общем случае вообще не решается на уровне прямоугольничков-секций. Так как требования инсоляции задаются для квартиры. И решение этой задачи зависит от квартирографии. Например, если мы хотим дом эконом-класса в котором 90% квартир - это однушки и студии, мы фактически можем его размещать только с юга на север - только так мы сможем обеспечить инсоляцию обеих длинных граней, вдоль которых сделаны наши квартиры, в каждую из которых должно попадать солнце.

    Если же мы разрешаем значительную долю двушек-трешек (а это уже как правило комфорт-класс и выше), то мы получаем возможность располагать дом "горизонтально" - с востока на запад. В таком случае мы можем одну комнату трешки вывести на южный фасад, две другие на северный (по нормам для 1-2-3 комнатных квартир достаточно обеспечить инсоляцию одной комнаты). А в доме с однушками так нельзя - ведь солнце никогда не смотрит с севера в нашем полушарии, так что северную грань горизонтального дома оно не осветит никогда, и однушки с окнами на ту сторону свою инсоляцию не получат.

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

    Вторая боль - это радиусы действия инфраструктуры, ее количество и площадь участков под нее. Строите мега-муравейники - будьте добры постройте рядом мега-школу на две тыщи учеников, а такой мега-школе понадобится мега-участок (это все тоже нормируется, например площадь участка школы на одного учащегося), который сожрет половину вашей красивой планировки.

    А еще есть парковки (которые вы для муравейников охренеете впихивать в участок, а подземные - дорого и если это эконом - не рентабельно), а еще всякие пожарные проезды, санитарные отступы от тех же паркингов (привет лайфхак - вместо одного паркинга на 500 мест строить вплотную два на 250, если кто видел такое и удивлялся зачем оно - это потому что тогда отступ до стены жилого дома в два раза меньше нужен) и еще много чего еще (спортплощадки и плоскостные спортивные объекты, например - в Ленобласти похоже этот норматив в принципе удовлетворить невозможно). А оно еще может быть разное - РНГП каждый регион пишет как хочет, и цифры могут отличаться значительно.

    В итоге в этой сфере MVP ценности не имеет - он не учитывает ключевые особенности, которые всем приносят много боли и которые и нуждаются в автоматизации и алгоритмизации. Так-то ТЭП на пальцах прикинуть можно и вручную по площади участка, а вот как только вы пытаетесь дать бОльшую детализацию - вы тут же нарываетесь на все вышеперечисленное, и либо делаете это ВСЕ, либо ваши результаты и чертежи - это мусор.

    Итеративное улучшение тут не работает. Нельзя сделать проект, удовлетворяющий нормативам на 80% и рассчитывать, что его ТЭП соответствуют реальности тоже на 80. Нет, как только вы попробуете добить оставшиеся 20% правил и норм, ваш проект вообще разъедется нафиг и превратится во что-то принципиально другое.

    Сами на это наткнулись в одном проекте, где мы пытаемся генерировать застройку. Мы начинали с грубого подсчета ТЭП как у вас, по прямоугольничкам, а сейчас дошли уже почти до уровня ППТ. С инсоляцией, школами и почти всеми видами инфраструктуры. И все равно постоянно натыкаемся на новые и новые возражения застройщиков и то, без чего результат им не нужен. Боль непрерывная.


    1. TAU15 Автор
      00.00.0000 00:00

      Спасибо за такой подробный комментарий!

      Задача нашего MVP это как раз дать возможность грубо оценить инвестиционную привлекательность участка.

      Вопрос инсоляции мы пока решили тем, что секции домов, заложенные в рассчет мы взяли уже полностью удовлетворяющие требованиям по инсоляции. Это пока только две секции ориентированные на Север-Юг и Запад-Восток. В процессе "посева" секций у нас заложены ограничения на максимальные углы этих типовых секций, такие чтобы инсоляция не нарушалась И плюс к этому мы заложили необходимые ограничения на расстояние между рядами секций на участке.

      Площадь, необходимую для размещения на участке объектов инфраструктуры мы пока будем задавать в процентах. Скажем процент на озеленение, процент на парковки и т.п.


  1. ushakovv
    00.00.0000 00:00
    +3

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


  1. AlexRaze
    00.00.0000 00:00
    +1

    ТЗ, нормативы и обучение им сделаны так чтоб их

    Нельзя было автоматизировать

    На их основе сделать комфортную среду обитания

    Начните с определений и ттх, что такое улица,, проспект и тд и какое влияние оказывает на континент.


  1. diamFC
    00.00.0000 00:00

    Скажите пожалуйста, где тут Лоу-Код?

    То что вы сделали - сделает стажер или джуниор?


    1. TAU15 Автор
      00.00.0000 00:00

      Здесь Low code приведен в пример как реализация в Frontend