Skip to main content

ObjectNat

Object-oriented Network Analysis Tools

Code style: black PyPI version Tests and coverage Coverage License Docs

РИДМИ (Russian)

ObjectNat logo

ObjectNat is an open-source Python library for spatial analysis of urban objects (buildings, services, street observers, noise sources), developed by the IDU team at ITMO University. It computes accessibility, coverage and service provision on street graphs from IduEdu, visibility in 2D and over building heights, noise levels and insolation. Inputs and outputs are GeoPandas GeoDataFrames; the computationally intensive parts run in a compiled Rust extension.

Documentation · Examples · Документация на русском


Methods

Isochrones (docs, example). get_graph_isochrones and get_stepped_graph_isochrones return the area reachable from origins within a travel time (minutes) or network distance (metres) on an iduedu.UrbanGraph, as one polygon per origin or as bands of width step. The polygon is built from residual-distance buffers around the reachable nodes, at most off_network_distance (150 m) off the streets ("radius"), from the buffered reachable streets ("ways") or from merged buffers ("separate").

Coverage zones (docs, example). get_graph_coverage and get_stepped_graph_coverage assign every place to the service it reaches at the lowest network cost within a budget (search on the reversed graph, Voronoi cells of graph nodes), so zones do not overlap. get_radius_coverage is a graph-free variant with a fixed radius.

Stepped isochrones with geometry_type ways, radius and separate, bands of 3 minutes

Service provision (docs, example). get_service_provision allocates building demand to services with limited capacity using a gravity-based probabilistic model over a dense or pandas-sparse cost matrix and a normative threshold. It returns a ProvisionResult with the sparse flow matrix and per-building and per-service metrics (provision_value is the share of demand supplied within the threshold); helpers join the metrics to GeoDataFrames, build link lines, drop links beyond a shorter threshold and clip the result to an area.

Provision value of residential buildings and building–school links within and beyond a 10-minute threshold

Visibility (docs, examples: 2D, 2.5D). get_visibility computes the exact visibility polygon (isovist) of each observer among obstacles treated as walls of infinite height and, with isovist_metrics=True, area, compactness, occlusivity, radial statistics, drift and visible share; get_isovist_grid maps these metrics over an area. get_viewshed uses building heights and terrain: a grid cell is visible when the line of sight from the eye (by default 1.6 m above the ground or a roof) to the cell passes above every wall and the ground. get_visibility_catchment and get_viewshed_catchment count, for every cell, the observers that see it (get_observer_points places observers along streets); rasterize draws the counts as a raster.

2D visibility polygon, street-level viewshed and roof-level viewshed

Noise (docs, example). simulate_noise_grid computes sound levels on a receiver grid from point, line and polygon sources: direct paths and first-order reflections with geometric spreading, air absorption, wall absorption and vegetation attenuation, and diffraction around building corners into their shadows, summed as energies. simulate_noise is a wave-front model for point sources with multiple reflections, and calculate_simplified_noise_frame a fast estimate from visibility masks and distance decay. Ground effect is not modelled. Background: wiki.

Noise levels on a receiver grid and the levels added by reflections and by diffraction

Insolation (docs, example). get_insolation follows the sun (NOAA solar position) through a day or a period and returns, on a ground grid among buildings of known height and optional terrain (GeoDataFrame, GeoTIFF or array), the daily hours of direct sun, including ground with no direct sun, the hours on the worst day and the longest continuous sunlit period, for which insolation norms set a minimum; rasterize draws them as a raster. get_facade_insolation computes the same quantities for facade points on every floor and checks them against a norm.

Ground shadows of a residential district on 21 June, 15-minute frames

Rasters. Grid results (insolation and noise receivers, catchment cells, isovist fields from get_isovist_grid) are converted to rasters with rasterize; a Raster can be drawn with matplotlib, written to a GeoTIFF file or shown on a folium web map with explore.


Installation

pip install objectnat

ObjectNat supports Python 3.11–3.14 on Linux, macOS and Windows and installs IduEdu 2.4.1 or newer within the 2.x series. Wheels include the compiled extension objectnat._rust, so pip needs no compiler. Installing from a source checkout (pip install .) builds the extension and requires a Rust toolchain (rustup). GeoTIFF terrain requires the optional rasterio package.


Street graphs from IduEdu

Graph-based methods take an iduedu.UrbanGraph (nodes and edges as GeoDataFrames, edge weights time_min and length_meter) and use IduEdu’s Dijkstra routines; ObjectNat does not build graphs itself. IduEdu can download a Geofabrik extract and cut the territory out of it, so no Overpass request is needed (cutting requires pip install "iduedu[pbf]"):

import iduedu
from iduedu import get_4326_boundary, get_intermodal_graph

with iduedu.use_pbf(osm_id=1114252, region="northwestern-fed-district"):
    boundary = get_4326_boundary(osm_id=1114252)
    graph = get_intermodal_graph(territory=boundary, clip_by_territory=True)

Without the with block the same calls query the Overpass API.


Configuration

from objectnat import config

config.change_logger_lvl("INFO")   # hide debug messages
config.set_enable_tqdm(False)      # disable progress bars

Contacts

Contributions are described in CONTRIBUTING.md.


Citing ObjectNat

Citation metadata is kept in CITATION.cff; on GitHub, Cite this repository in the repository sidebar exports it as APA or BibTeX. Publications describing ObjectNat will be listed here.

Metadata

Release files for ObjectNat 2.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ObjectNat 2.2.0
File Size Uploaded Provenance Actions
objectnat-2.2.0.tar.gz 118.6 kB With provenance Details for objectnat-2.2.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for ObjectNat 2.2.0
File Actions
objectnat-2.2.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details for objectnat-2.2.0-cp311-abi3-win_amd64.whl
objectnat-2.2.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.11 abi3 Linux glibc 2.17+ x86-64 Details for objectnat-2.2.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
objectnat-2.2.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details for objectnat-2.2.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
objectnat-2.2.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details for objectnat-2.2.0-cp311-abi3-macosx_11_0_arm64.whl
objectnat-2.2.0-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details for objectnat-2.2.0-cp311-abi3-macosx_10_12_x86_64.whl

Total release size: 2.8 MB

Release files / objectnat-2.2.0.tar.gz

Download URL objectnat-2.2.0.tar.gz
Size 118.6 kB
Tags Source
SHA-256 checksum
How to use checksums
6f4362157278542b9d20ac6386a932249de11f51cc1aa5f6e1f024181e42b2d3
BLAKE2b-256 checksum
How to use checksums
125cdb3085e3af2f335b8fc223a740d60c6ac116a1d8c4af741d5f0151ae46f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / objectnat-2.2.0-cp311-abi3-win_amd64.whl

Download URL objectnat-2.2.0-cp311-abi3-win_amd64.whl
Size 475.1 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
14f99093f807ddde48d5786feaefac259defe3bdae8e21c9d3c45dece93f9005
BLAKE2b-256 checksum
How to use checksums
2c4f249c9fcbd7f0e4ba6d637237b45b8e0b8beb430485cf2e3256b18ca5667c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / objectnat-2.2.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL objectnat-2.2.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 583.1 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
e5dbef610adec84f28d544aefa25e268f334e60b43dae923f1196639fd42a210
BLAKE2b-256 checksum
How to use checksums
89945f70637a7fc31983cf1d7be20aa120007f60c79e75f0a64fb1c2ca5ee199
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / objectnat-2.2.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL objectnat-2.2.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 558.6 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
e41c7211e69b7e6a43493d67e8f88cacb88f419085094f406b981ba5b804d4af
BLAKE2b-256 checksum
How to use checksums
e12a594bb5986a069cd56bf015c78e4a5b20852abd2cefc8fb3ec871f757df6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / objectnat-2.2.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL objectnat-2.2.0-cp311-abi3-macosx_11_0_arm64.whl
Size 525.0 kB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
824320d09e364e42b1c7623fbf7858adb71945d4616f1d5773e650c93f65e7b9
BLAKE2b-256 checksum
How to use checksums
43a88b8cdfa67d6623d47d9b15dd7cedada4ef14afd9c66690498b5b55945eac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / objectnat-2.2.0-cp311-abi3-macosx_10_12_x86_64.whl

Download URL objectnat-2.2.0-cp311-abi3-macosx_10_12_x86_64.whl
Size 553.1 kB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e117d793533c105050af45d71f12ad0da6ad304b74271da2c7a121305e6e305c
BLAKE2b-256 checksum
How to use checksums
49cb95a7505af51ef7ecdec385e9e1e46986635b57e950cedb055f9d7e501d24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Security for ObjectNat 2.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 6 files in this release have been uploaded with provenance metadata.

Select from 6 files

Attestation for objectnat-2.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.2.0 This release

6 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page