Skip to content

Open-source library created for geospatial analysis

License

Notifications You must be signed in to change notification settings

DDonnyy/ObjectNat

Repository files navigation

ObjectNat

Object-oriented Network Analysis Tools

Code style: black PyPI version CI Coverage License Docs

РИДМИ (Russian)

ObjectNat logo

ObjectNat is an open-source library developed by the IDU team for spatial and network analysis in urban studies. The library provides tools for analyzing accessibility, visibility, noise propagation, and service provision. ----

Key Features

Each feature includes a Jupyter Notebook example and full documentation.

  1. Isochrones and Transport Accessibility

    Isochrones represent areas reachable from an origin point within a specified time along a transport network. This feature allows the analysis of transport accessibility using pedestrian, road, public transport, or multimodal graphs.

    The library supports several methods for building isochrones:

    • Basic isochrones: display a single zone reachable within a specified time.
    • Step isochrones: divide the accessibility area into time intervals (e.g., 3, 5, 10 minutes).

    📘 Example 🔗 Documentation

  2. Graph Coverage Zones from Points

    A function for generating coverage areas from a set of origin points using a transport network. It computes the area reachable from each point by travel time or distance, then builds polygons using Voronoi diagrams and clips them by a given boundary if specified.

    📘 Example 🔗 Documentation

  3. Service Provision Analysis

    A function to evaluate how well residential buildings and their populations are provided with services (e.g., schools, clinics) that have limited capacity and a defined accessibility threshold (in minutes or meters). The function models the balance between supply and demand, assessing how well services meet the needs of nearby buildings within an acceptable time.

    📘 Example 🔗 Documentation

  4. Visibility Analysis

    A function for evaluating visibility from a given point or set of points to nearby buildings within a given radius. It is used to assess visual accessibility in urban environments. A module is also implemented for computing visibility coverage zones using a dense observer grid (recommended ~1000 points with a 10–20 m spacing). Points can be generated along the transport network and distributed across its edges.

    📘 Example 🔗 Documentation

  5. Noise Simulation & Noise Frame

    Simulation of noise propagation from sources, taking into account obstacles, vegetation, and environmental factors.

    📘 Example 🔗 Documentation 🧠 Detailed theory

  6. Point Clusterization

    A function for constructing cluster polygons based on a set of points using:

    • Minimum distance between points.
    • Minimum number of points in a cluster.

    The function can also compute the ratio of service types in each cluster for spatial analysis of service composition.

    📘 Example 🔗 Documentation


City Graphs via IduEdu

For optimal performance, ObjectNat is recommended to be used with graphs created by the IduEdu library.

IduEdu is an open-source Python library designed for building and processing complex urban networks based on OpenStreetMap data.

IduEdu can be installed via pip:

pip install IduEdu

Example usage:

from iduedu import get_4326_boundary, get_intermodal_graph

poly = get_4326_boundary(osm_id=1114252)
G_intermodal = get_intermodal_graph(territory=poly, clip_by_territory=True)

Installation

ObjectNat can be installed via pip:

pip install ObjectNat

Configuration

You can adjust logging and progress bar output using the config module:

from objectnat import config

config.change_logger_lvl("INFO")   # mute debug logs
config.set_enable_tqdm(False)      # disable tqdm progress bars

Contacts


Publications

Coming soon.