Skip to main content

Efficient spatial indexing and querying of Points of Interest using PostgreSQL and PostGIS

Project description

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.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

poiidx-0.0.1.post1.tar.gz (32.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

poiidx-0.0.1.post1-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file poiidx-0.0.1.post1.tar.gz.

File metadata

  • Download URL: poiidx-0.0.1.post1.tar.gz
  • Upload date:
  • Size: 32.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for poiidx-0.0.1.post1.tar.gz
Algorithm Hash digest
SHA256 147ef056cf795548751df664b842489c84f6a916747549c4795c5bf049ec8b6c
MD5 5cd6a080e10644ac79c4166210a20f67
BLAKE2b-256 798090090ff0ff5debd1e8891e1dac88bf75ed7c16f7f4d56337f37b48452529

See more details on using hashes here.

Provenance

The following attestation bundles were made for poiidx-0.0.1.post1.tar.gz:

Publisher: release.yml on bytehexe/poiidx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file poiidx-0.0.1.post1-py3-none-any.whl.

File metadata

  • Download URL: poiidx-0.0.1.post1-py3-none-any.whl
  • Upload date:
  • Size: 19.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for poiidx-0.0.1.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 eaaa74b0e782cb49e8eedd5e4d9c98a7571db43b31a0234764b720ee46d1a355
MD5 41e14e1baba0496a6c51c9442e482620
BLAKE2b-256 c3cc8389a4158dd66e1e7ab5e01b117fe6fbe48868d0623a4d37bf66e82672b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for poiidx-0.0.1.post1-py3-none-any.whl:

Publisher: release.yml on bytehexe/poiidx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page