Skip to main content

Package provides methods of master plan requirements automated generation for urban areas

Project description

BlocksNet logo

Documentation Status PythonVersion Black Readme_ru

BlocksNet is an open-source library that includes methods of modeling urbanized areas for the generation of value-oriented master planning requirements. The library provides tools for generating an information city model based on the accessibility of urban blocks. The library also provides tools for working with the information city model, which allows one: to assess urban network metrics such as connectivity and centrality, to calculate service type provision based on regulatory requirements and to obtain optimal requirements for master planning of territories.

Features

BlocksNet — a library for modeling urban development scenarios (e.g. creating a master plan), supporting the following tools:

  • Method for generating a layer of urban blocks is the division of the territory into the smallest elements for the analysis of the urban area - blocks. The method of generating a layer of urban blocks is based on clustering algorithms taking into account additional data on land use.

  • Intermodal graph generator and accessibility matrix calculator based on IduEdu library.

  • The Universal Information City Model is used to further analyze urban areas and to obtain information on the accessibility of urban blocks. The City Model includes aggregated information on services and buildings, intermodal accessibility, service types hierarchy, and urban blocks.

  • Method for accessing the connectivity of the blocks based on intermodal accessibility.

  • Methods for assessing urban provision of different types of services with regard to normative requirements and value attitudes of the population. The estimation of provisioning is performed by iterative algorithm on graphs, as well as by solving linear optimization problem.

  • Method for computing the function for evaluating the optimality of master planning projects based on the value attitudes of the population and systems of external limitations. The method is based on solving an optimization problem: it is necessary to find an optimal development to increase the provision. The problem is solved with the help of simulated annealing algorithm, user scenarios support is added.

  • Method for identifying vacant areas based on open-data.

  • Land use prediction based on services within blocks.

  • Centrality and diversity assessments, spacematrix morphotypes identification method, integration metric assessment etc.

Main differences from existing solutions:

  • The method of generating a layer of urban blocks considers the type of land use, which makes it possible to define limitations for the development of the territory in the context of master planning.

  • The universal information city model can be built on open data; the smallest spatial unit for analysis is a block, which makes it possible to analyze on a city scale.

  • Provision assessment takes into account the competition element created between residents and services.

  • Services optimization algorithm based on simulated annealing supports user-defined scenarios.

  • Support for different regulatory requirements.

  • Pretty easy to use out of the box. The library is aimed to help students, so it balances between being friendly to non-programmers as well as useful and respective for advanced possible users and contributors.

Installation

BlocksNet can be installed with pip:

pip install blocksnet

How to use

Use the library by importing classes from blocksnet:

from blocksnet import City

Next, use the necessary classes and modules:

city = City(
   blocks=blocks_gdf,
   acc_mx=acc_mx,
)
city.plot()

For more detailed use case see our examples.

Data

Before running the examples, one can use the data from tests section and place it in the examples/data directory. You can use your own data, but it must follow the structure described in the API documentation.

Examples

Next examples will help to get used to the library:

  1. Main pipeline of the library. Includes full City model initialization and Provision assessment.

  2. City blocks generating using BlocksGenerator class based on city geometries data.

  3. Accessibility matrix calculation - using the AccessibilityProcessor class. Includes intermodal graph generating for given city blocks.

  4. City model initialization and its methods usage. The example explains, how to work with City model, access ServiceType or Block information etc. Extremely helpful if you want to participate in the developing of BlocksNet.

  5. Provision assessment - how to assess provision of certain city ServiceType,

  6. Development optimization method based on simulated annealing algorithm. The goal of the method is to optimize the search for master planning requirements for specific Block or the entire City in a specific scenario.

  7. Vacant area identifying for a certain city Block.

Documentation

Detailed information and description of BlocksNet is available in documentation.

Project Structure

The latest version of the library is available in the main branch.

The repository includes the following directories and modules:

  • blocksnet - directory with the library code:

    • preprocessing - data preprocessing module

    • models - entities’ classes used in library

    • method - library tool methods based on City model

    • utils - module containing utulity functions and consts

  • tests pytest testing

  • examples examples of how methods work

  • docs - documentation sources

Developing

To start developing the library, one must perform following actions:

  1. Clone the repository:

    $ git clone https://github.com/aimclub/blocksnet
  2. (Optional) Create a virtual environment as the library demands exact package versions:

    $ make venv

    Activate the virtual environment if you created one:

    $ source .venv/bin/activate
  3. Install the library in editable mode with development dependencies:

    $ make install-dev
  4. Install pre-commit hooks:

    $ pre-commit install
  5. Create a new branch based on develop:

    $ git checkout -b develop <new_branch_name>
  6. Start making changes on your newly created branch, remembering to never work on the master branch! Work on this copy on your computer using Git to do the version control.

  7. Update tests according to your changes and run the following command:

    $ make test

    Make sure that all tests pass.

  8. Update the documentation and README according to your changes.

  1. When you’re done editing and local testing, run:

$ git add modified_files
$ git commit

to record your changes in Git, then push them to GitHub with:

$ git push -u origin my-contribution

Finally, go to the web page of your fork of the BlocksNet repo, and click ‘Pull Request’ (PR) to send your changes to the maintainers for review.

Check out the Contributing for more information.

License

The project has BSD-3-Clause license

Acknowledgments

The library was developed as the main part of the ITMO University project #622280 “Machine learning algorithms library for the tasks of generating value-oriented requirements for urban areas master planning”

Contacts

You can contact us:

Also, you are welcomed to our issues section!

Publications

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

blocksnet-0.0.10.tar.gz (59.7 kB view details)

Uploaded Source

Built Distribution

blocksnet-0.0.10-py3-none-any.whl (63.6 kB view details)

Uploaded Python 3

File details

Details for the file blocksnet-0.0.10.tar.gz.

File metadata

  • Download URL: blocksnet-0.0.10.tar.gz
  • Upload date:
  • Size: 59.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for blocksnet-0.0.10.tar.gz
Algorithm Hash digest
SHA256 c70cfd273de5e63258d9752989fac9736af599fc8dbe68da25c38091fac4c1e0
MD5 0f069d289e1e50e088340cd86c4dd893
BLAKE2b-256 c5d06c5ca06b9dd98caacb81ec039c414f1a72ac86d63157d8c7a5a943e175c3

See more details on using hashes here.

File details

Details for the file blocksnet-0.0.10-py3-none-any.whl.

File metadata

  • Download URL: blocksnet-0.0.10-py3-none-any.whl
  • Upload date:
  • Size: 63.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for blocksnet-0.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 7c070c68b3d5b11451bafdad145643d02abe1b113e92e74f32a616af0e0677d1
MD5 33058ad99bb419ca447ddbdfcf90939b
BLAKE2b-256 bcb74b57bedcfe1d15f09851ef34d0a2e9f414b76344a36514520277663eebc3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page