ObjectNat¶
Object-oriented Network Analysis Tools¶
ObjectNat — an open-source Python library for object-oriented network analysis and spatial accessibility modeling, developed by the IDU team at ITMO University.
Overview¶
ObjectNat extends urban network analysis with a focus on object-level geospatial computation. It provides a unified set of tools for analyzing coverage, provision, accessibility, visibility, and noise simulation on city-scale geospatial data.
The library integrates seamlessly with:
GeoPandas and Shapely for spatial operations;
IduEdu
UrbanGraphfor graph preparation and multimodal routing;Python’s scientific ecosystem (NumPy, Pandas, Matplotlib, etc).
Features¶
Isochrones & Accessibility
Coverage Zones
Service Provision
Noise Simulation
Visibility Analysis
Utilities
Geometry helpers used by accessibility, visibility, and noise workflows
Installation¶
pip install objectnat
Requires Python 3.11+ and the standard geospatial stack (Pandas, GeoPandas,
Shapely, NumPy). Graph-based accessibility methods consume UrbanGraph
objects from IduEdu.
Quickstart¶
To ensure optimal performance of ObjectNat’s geospatial analysis functions, it’s recommended to utilize urban graphs sourced from the IduEdu library. IduEdu is an open-source Python library designed for the creation and manipulation of complex city networks derived from OpenStreetMap data.
# Install required packages (uncomment if needed)
# !pip install iduedu objectnat
import geopandas as gpd
from shapely.geometry import Point
from iduedu import get_4326_boundary, get_intermodal_graph
from objectnat import get_stepped_graph_isochrones
# Load boundary and build graph for a region (OSM ID 1114252)
poly = get_4326_boundary(osm_id=1114252)
graph = get_intermodal_graph(territory=poly, clip_by_territory=True)
# Compute stepped accessibility isochrones from one or more origin points.
origins = gpd.GeoDataFrame(
geometry=[Point(30.3141, 59.9386)],
crs=4326,
)
stepped_isochrones = get_stepped_graph_isochrones(
graph,
gdf_origins=origins,
weight_type="time_min",
weight_value_cutoff=10,
geometry_type="separate",
step=2,
)
stepped_isochrones.explore()
Contributions are very welcome! Open an issue or PR on GitHub to suggest new features or improvements.
Contacts¶
NCCR — National Center for Cognitive Research
IDU — Institute of Design and Urban Studies
Natalya Chichkova — Project Manager
Danila Oleynikov (Donny) — Lead Software Engineer
License¶
This project is open-source. See the LICENSE.txt file for details.
Publications¶
Coming soon…