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.2 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 3.0.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 3.0.0
File Size Uploaded Provenance Actions
objectnat-3.0.0.tar.gz 118.2 kB With provenance Details for objectnat-3.0.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for ObjectNat 3.0.0
File Actions
objectnat-3.0.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details for objectnat-3.0.0-cp311-abi3-win_amd64.whl
objectnat-3.0.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-3.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
objectnat-3.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details for objectnat-3.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
objectnat-3.0.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details for objectnat-3.0.0-cp311-abi3-macosx_11_0_arm64.whl
objectnat-3.0.0-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details for objectnat-3.0.0-cp311-abi3-macosx_10_12_x86_64.whl

Total release size: 2.8 MB

Release files / objectnat-3.0.0.tar.gz

Download URL objectnat-3.0.0.tar.gz
Size 118.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4f48af5c542c3b6c589e24ba838d3508b312b2a95c96cc8165df53ddc181424d
BLAKE2b-256 checksum
How to use checksums
0462085a67a14bbacdf7a25eb284250287168b72298c4d177a9585842036e90b
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-3.0.0-cp311-abi3-win_amd64.whl

Download URL objectnat-3.0.0-cp311-abi3-win_amd64.whl
Size 474.7 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
7ad561abd9bcf937d07c7e853d2097f445014da4cb0f9f6b26b65bf71d4f56f5
BLAKE2b-256 checksum
How to use checksums
4eb750bd597b0111fa40bb4ab7941c2dfcdaebdeea74351d874a2e7882e5f9dc
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-3.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL objectnat-3.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 582.5 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
1f17e0d9aa6d79d091d22d1cc425de4ef253c31cbd63fb2b72324c3bb185ae84
BLAKE2b-256 checksum
How to use checksums
b79e228c696ad807d27736e5a88a0d277bf62e77a73abe453a910f979f5bbc66
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-3.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL objectnat-3.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 558.2 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
480fe4485ead714f2ad9645e83bb0b6a941fb5e9452722fcedf32cd769e70360
BLAKE2b-256 checksum
How to use checksums
e55298a762b01a0557d1ecce1b57f48d809652ffc00e4644e8fefbde39ff1cbf
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-3.0.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL objectnat-3.0.0-cp311-abi3-macosx_11_0_arm64.whl
Size 524.6 kB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
33693c198e043037290325ff7be135167858b9a3b9c97a445682580aa3f5031d
BLAKE2b-256 checksum
How to use checksums
f37150b2ef78f58242347ab1989a8ef024d53a231b6594e4b572a7715c634d89
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-3.0.0-cp311-abi3-macosx_10_12_x86_64.whl

Download URL objectnat-3.0.0-cp311-abi3-macosx_10_12_x86_64.whl
Size 552.7 kB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
41a927c24483b1c6e12163c2f1c631991f81742da49c4cec16da1d65d87ad46c
BLAKE2b-256 checksum
How to use checksums
f73f42de832207712c9c2740911d090fef6e1b1c34b6d3695ba2d68908fc2b94
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 3.0.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-3.0.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

3.0.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