.. toctree::
:hidden:
:maxdepth: 1
methods/isochrones
methods/coverage
methods/provision
methods/visibility
methods/noise
methods/clustering
methods/examples/index
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.
|badge-black| |badge-pypi| |badge-ci| |badge-cov| |badge-license| |badge-github|
.. |badge-black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/black
:alt: Code style: black
.. |badge-pypi| image:: https://img.shields.io/pypi/v/objectnat.svg
:target: https://pypi.org/project/objectnat/
:alt: PyPI version
.. |badge-ci| image:: https://github.com/IDUclub/ObjectNat/actions/workflows/ci_pipeline.yml/badge.svg
:target: https://github.com/IDUclub/ObjectNat/actions/workflows/ci_pipeline.yml
:alt: CI
.. |badge-cov| image:: https://codecov.io/gh/DDonnyy/ObjectNat/graph/badge.svg?token=K6JFSJ02GU
:target: https://codecov.io/gh/DDonnyy/ObjectNat
:alt: Coverage
.. |badge-license| image:: https://img.shields.io/badge/license-BSD--3--Clause-blue.svg
:target: https://opensource.org/licenses/BSD-3-Clause
:alt: License
.. |badge-github| image:: https://img.shields.io/badge/GitHub-IDUclub%2FObjectNat-181717?logo=github
:target: https://github.com/IDUclub/ObjectNat
:alt: GitHub
----
Overview
--------
**ObjectNat** extends standard network analysis with a focus on **object-level geospatial computation**.
It provides a unified set of tools for analyzing **coverage**, **provision**, **accessibility**,
**visibility**, **noise simulation**, and **spatial clustering** — all based on graph connectivity.
The library integrates seamlessly with:
- **GeoPandas**, **Shapely**, and **NetworkX** for spatial operations;
- **IduEdu** for graph preparation and multimodal routing;
- Python's scientific ecosystem (NumPy, Pandas, Matplotlib, etc).
----
Features
--------
- **Isochrones & Accessibility**
- :func:`objectnat.get_accessibility_isochrones`, :func:`objectnat.get_accessibility_isochrone_stepped`
- **Coverage Zones**
- :func:`objectnat.get_graph_coverage`, :func:`objectnat.get_radius_coverage`, :func:`objectnat.get_stepped_graph_coverage`
- **Service Provision**
- :func:`objectnat.get_service_provision` , :func:`objectnat.recalculate_links`, :func:`objectnat.clip_provision`
- **Noise Simulation**
- :func:`objectnat.simulate_noise`, :func:`objectnat.calculate_simplified_noise_frame`
- **Visibility Analysis**
- :func:`objectnat.get_visibility_accurate`, :func:`objectnat.get_visibility`, :func:`objectnat.get_visibilities_from_points`
- **Clustering**
- :func:`objectnat.get_clusters_polygon`
- **Utilities**
- Graph and geometry helpers: `geom_utils`, `graph_utils`, `math_utils`
----
Installation
------------
```
pip install objectnat
```
- > Requires Python 3.11+ and the standard geospatial stack
- > (Pandas, GeoPandas, Shapely, NetworkX, NumPy).
----
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.
.. code-block:: python
# Install required packages (uncomment if needed)
# !pip install iduedu objectnat
from iduedu import get_4326_boundary, get_intermodal_graph
from objectnat import get_accessibility_isochrones
# Load boundary and build graph for a region (OSM ID 1114252)
poly = get_4326_boundary(osm_id=1114252)
G = get_intermodal_graph(territory=poly, clip_by_territory=True)
# Compute accessibility isochrones from several points
stepped_isochrone, pt_stops, pt_routes = get_accessibility_isochrone_stepped(
isochrone_type='separate',
point=point,
weight_type="time_min",
weight_value=10,
nx_graph=G_intermodal,
step=2
)
stepped_isochrone.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 :file:`LICENSE.txt` file for details.
----
Publications
------------
Coming soon…