Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

poiidx

PyPI - Version PyPI - Python Version


poiidx is a Python library for efficient spatial indexing and querying of Points of Interest (POIs) using PostgreSQL and PostGIS. It enables you to quickly find nearby POIs, retrieve administrative boundaries, and explore geographic hierarchies based on OpenStreetMap data.

📚 Read the full documentation for detailed guides, tutorials, and API reference.

Table of Contents

Installation

pip install poiidx

Database Setup

Install PostgreSQL and PostGIS

Ubuntu/Debian:

sudo apt update
sudo apt install postgresql postgis

macOS:

brew install postgresql@16 postgis
brew services start postgresql@16

Arch Linux:

sudo pacman -S postgresql postgis
sudo -u postgres initdb -D /var/lib/postgres/data
sudo systemctl start postgresql

Create Database and User

# Create user
sudo -u postgres createuser -P poiidx_user
# Enter password when prompted

# Create database
sudo -u postgres createdb -O poiidx_user poiidx_db

# Enable PostGIS extension
sudo -u postgres psql -d poiidx_db -c "CREATE EXTENSION postgis;"

Usage

import poiidx
from shapely.geometry import Point

# Initialize the database connection
poiidx.init(
    host='localhost',
    database='poiidx_db',
    user='poiidx_user',
    password='your_secure_password',
    port=5432
)

# Find nearest POIs to a point (e.g., Berlin)
berlin_point = Point(13.4050, 52.5200)
nearest_pois = poiidx.get_nearest_pois(
    berlin_point,
    max_distance=1000,  # meters
    limit=5
)

for poi in nearest_pois:
    print(f"{poi['name']} - Region: {poi['region']}, Rank: {poi['rank']}")

# Get administrative hierarchy for a point
admin_hierarchy = poiidx.get_administrative_hierarchy(berlin_point)
for admin in admin_hierarchy:
    print(f"Level {admin['admin_level']}: {admin['name']}")

# Get administrative hierarchy as a formatted string
admin_str = poiidx.get_administrative_hierarchy_string(berlin_point)
print(admin_str)

# Get administrative hierarchy in a specific language (e.g., French)
admin_str_fr = poiidx.get_administrative_hierarchy_string(berlin_point, lang='fr')
print(admin_str_fr)

# Close the connection when done
poiidx.close()

License

poiidx is distributed under the terms of the MIT license.

Data Sources & Attribution

This project uses data from the following sources:

OpenStreetMap (via Geofabrik)

POI and administrative boundary data is sourced from OpenStreetMap, distributed via Geofabrik.

© OpenStreetMap contributors. Data available under the Open Database License (ODbL).

Wikidata

When country information is not available in OpenStreetMap data, it is supplemented using Wikidata.

© Wikidata contributors. Data available under CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.

Metadata

Release files for poiidx 0.1.0rc1

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

Source distribution (sdist)

Source distribution for poiidx 0.1.0rc1
File Size Uploaded
poiidx-0.1.0rc1.tar.gz 63.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for poiidx 0.1.0rc1
File Interpreter ABI Platform
poiidx-0.1.0rc1-py3-none-any.whl Python 3 none any Details

Total release size: 91.0 kB

Release files / poiidx-0.1.0rc1.tar.gz

Download URL poiidx-0.1.0rc1.tar.gz
Size 63.2 kB
Tags Source
SHA-256 checksum
How to use checksums
79fa360894c7add33bae01335f39eaa56eeed455aa048ca50f7527434547a3f4
BLAKE2b-256 checksum
How to use checksums
c30a6b11cf1e68209543bcd6eb42e37cb8a8a0fd4fe14182c09588389f2297c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 4, 2026.

Transparency log

Release files / poiidx-0.1.0rc1-py3-none-any.whl

Download URL poiidx-0.1.0rc1-py3-none-any.whl
Size 27.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
de56d29f4c75f815f0819bd4fe17536639c6f3a1b3133c58277e8d19c16b48fb
BLAKE2b-256 checksum
How to use checksums
ba957155e99fa51b145fc6951fcb981f463b443728ae756838571b58edb34762
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 4, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.0

2 release files

This release

0.1.0rc1 This release

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

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