Skip to content

Latest commit

 

History

History
300 lines (211 loc) · 16.9 KB

README-RU.rst

File metadata and controls

300 lines (211 loc) · 16.9 KB

BlocksNet

BlocksNet logo

Documentation Status PythonVersion Black Readme_en

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

Преимущества

BlocksNet — это библиотека для моделирования сценариев развития города, например при создании мастер-плана, поддерживающая следующие инструменты:

  1. Метод генерации слоя городских кварталов предполагает разделение территории города на наименьшие элементы для анализа - кварталы. Метод генерации слоя городских кварталов учитывает дополнительные данные о землепользовании.
  2. Метод генерации интермодального графа города на основе открытых данных. Интермодальный граф содержит информацию об общественном транспорте и пешеходных маршрутах для более детального анализа городской мобильности.
  3. Универсальная информационная модель города используется для дополнительного анализа городских территорий и получения информации о доступности городских кварталов. В модели города содержится агрегированная информация о сервисах, зданиях, интермодальной доступности, типах сервисов и городских кварталах.
  4. Метод оценки связности кварталов на основе интермодальной доступности.
  5. Методы оценки городской обеспеченности различными типами сервисов с учетом нормативных требований и ценностных установок населения. Оценка обеспеченности производится при помощи итеративного алгоритма на графах, а также при помощи решения задачи линейной оптимизации.
  6. Метод вычисления функции оценки оптимальности проектов мастер-планирования, основанный на ценностных установках населения и систем внешних ограничений. Метод основан на решении задачи оптимизации: необходимо найти оптимальную застройку, чтобы повысить обеспеченность. Задача решается при помощи генетического алгоритма, добавлена поддержка пользовательских сценариев.
  7. Метод выявления свободной площади на основе открытых данных.

Основные отличия от существующих решений:

  • Метод генерации слоя городских кварталов учитывает тип землепользования, что позволяет определить ограничения для развития территории в контексте мастер-планирования.
  • Универсальная информационная модель города может быть построена на открытых данных; наименьшая пространственная единица для анализа - квартал, что делает возможным аналитику в масштабах города.
  • При оценке обеспеченности учитываются не только нормативные документы, но и ценностные установки населения.
  • Генетический алгоритм для оптимизации застройки поддерживает пользовательские сценарии.
  • Поддержка различных нормативных требований.

Установка

BlocksNet может быть установлен с помощью pip:

pip install git+https://github.com/iduprojects/blocksnet

Использование

Импортируйте необходимые классы из библиотеки blocksnet:

from blocksnet import City

Затем используйте необходимые классы и модули:

city = City(
   blocks_gdf=blocks,
   adjacency_matrix=adj_mx
)
city.plot()

Более подробные примеры использования приведены в примерах.

Данные

Прежде чем использовать библиотеку, вы можете скачать исходные данные и расположить их в директории examples/data. Вы можете использовать собственные данные, но они должны соответствовать спецификации согласно API documentation.

Примеры

Следующие примеры помогут ознакомиться с библиотекой:

  1. Главный пайплайн библиотеки. Включает полную инициализацию модели города City и генетическую оптимизацию Genetic.
  2. Генерация слоя городских кварталов с помощью класса BlocksGenerator на основе данных о геометриях объектов города.
  3. Генерация интермодального графа - с помощью класса GraphGenerator. Включает построение матрицы смежности с помощью класса AdjacencyCalculator для данного слоя кварталов.
  4. Инициализация модели города и использование методов модели. Данный пример демонстрирует, как работать с моделью города City, получать доступ к информации о типах сервисов ServiceType или кварталов Block. Особенно полезно, если вы хотите принимать участие в разработке.
  5. Оценка обеспеченности - как оценить обеспеченность города выбранным типом сервиса ServiceType,
  6. Метод оптимизации застройки основанный на генетическом алгоритме. Целью метода является поиск отимальных требований к мастер-планированию территории квартала Block или всего City для выбранного сценария развития.
  7. Определение свободных площадей выбранного городского квартала Block.

Документация

Подробная информация и описание библиотеки BlocksNet представлены в документации.

Структура проекта

Последняя версия библиотеки предсталена в ветке main.

Репозиторий включает следующие директории и модули:

  • blocksnet - директория с кодом библиотеки:
    • preprocessing - модуль предобработки данных
    • models - основные классы сущностей, используемые в библиотеке
    • method - методы библиотеки для работы с моделью City
    • utils - модуль вспомогательных функций и констант
  • tests pytest тесты
  • examples примеры работы методов
  • docs - ReadTheDocs документация

Разработка

Для начала разработки библиотеки необходимо выполнить следующие действия:

  1. Клонировать репозиторий:

    $ git clone https://github.com/aimclub/blocksnet
    
  2. (По желанию) Создать виртуальное окружение, так как библиотека требует точных версий пакетов:

    $ python -m venv venv
    

    Активировать виртуальное окружение, если оно было создано.

  3. Установить библиотеку в режиме редактирования с dev-зависимостями:

    $ make install-dev
    
  4. Установить pre-commit хуки:

    $ pre-commit install
    
  5. Создать новую ветку на основе develop:

    $ git checkout -b develop <new_branch_name>
    
  6. Начать внесение изменений в своей новосозданной ветке, помня о том, чтобы не работать в ветке master! Работайте с этой копией на вашем компьютере, используя Git для управления версиями.

  7. Обновить тесты в соответствии с вашими изменениями и запустить следующую команду:

    $ make test
    

    Убедитесь, что все тесты проходят успешно.

  8. Обновить документацию и файл README в соответствии с вашими изменениями.

  1. Когда вы закончите редактирование и локальное тестирование, выполните:
$ git add modified_files
$ git commit

чтобы записать ваши изменения в Git, затем отправьте их на GitHub с помощью:

$ git push -u origin my-contribution

И, наконец, перейдите на веб-страницу вашего форка репозитория BlocksNet и нажмите 'Pull Request' (PR), чтобы отправить свои изменения на ревью разработчикам.

Ознакомьтесь с разделом Contributing на ReadTheDocs для получения дополнительной информации.

Лицензия

Проект имеет лицензию BSD-3-Clause

Acknowledgments

Библиотека была разработана как основная часть проекта Университета ИТМО № 622280 "Библиотека алгоритмов машинного обучения для задач генерации ценностно-ориентированных требований к мастер-планированию урбанизированных территорий".

Контакты

Вы можете связаться с нами:

Публикации

Опубликованные работы: